Index: fusl/arch/x32/bits/user.h |
diff --git a/fusl/arch/x32/bits/user.h b/fusl/arch/x32/bits/user.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1bd2d709e1a5584ebfc54bb95547c0c8a4d0fa12 |
--- /dev/null |
+++ b/fusl/arch/x32/bits/user.h |
@@ -0,0 +1,44 @@ |
+#undef __WORDSIZE |
+#define __WORDSIZE 64 |
+ |
+typedef struct user_fpregs_struct |
+{ |
+ uint16_t cwd, swd, ftw, fop; |
+ uint64_t rip, rdp; |
+ uint32_t mxcsr, mxcr_mask; |
+ uint32_t st_space[32], xmm_space[64], padding[24]; |
+} elf_fpregset_t; |
+ |
+struct user_regs_struct |
+{ |
+ unsigned long r15, r14, r13, r12, rbp, rbx, r11, r10, r9, r8; |
+ unsigned long rax, rcx, rdx, rsi, rdi, orig_rax, rip; |
+ unsigned long cs, eflags, rsp, ss, fs_base, gs_base, ds, es, fs, gs; |
+}; |
+#define ELF_NGREG 27 |
+typedef unsigned long long elf_greg_t, elf_gregset_t[ELF_NGREG]; |
+ |
+struct user |
+{ |
+ struct user_regs_struct regs; |
+ int u_fpvalid; |
+ struct user_fpregs_struct i387; |
+ unsigned long u_tsize; |
+ unsigned long u_dsize; |
+ unsigned long u_ssize; |
+ unsigned long start_code; |
+ unsigned long start_stack; |
+ long signal; |
+ int reserved; |
+ struct user_regs_struct *u_ar0; |
+ struct user_fpregs_struct *u_fpstate; |
+ unsigned long magic; |
+ char u_comm[32]; |
+ unsigned long u_debugreg[8]; |
+}; |
+ |
+#define PAGE_MASK (~(PAGE_SIZE-1)) |
+#define NBPG PAGE_SIZE |
+#define UPAGES 1 |
+#define HOST_TEXT_START_ADDR (u.start_code) |
+#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) |