diff options
Diffstat (limited to 'arch/um/sys-i386/user-offsets.c')
-rw-r--r-- | arch/um/sys-i386/user-offsets.c | 73 |
1 files changed, 37 insertions, 36 deletions
diff --git a/arch/um/sys-i386/user-offsets.c b/arch/um/sys-i386/user-offsets.c index 3ceaabceb3d7..677fc26a9bbe 100644 --- a/arch/um/sys-i386/user-offsets.c +++ b/arch/um/sys-i386/user-offsets.c | |||
@@ -7,47 +7,48 @@ | |||
7 | #define DEFINE(sym, val) \ | 7 | #define DEFINE(sym, val) \ |
8 | asm volatile("\n->" #sym " %0 " #val : : "i" (val)) | 8 | asm volatile("\n->" #sym " %0 " #val : : "i" (val)) |
9 | 9 | ||
10 | #define DEFINE_LONGS(sym, val) \ | ||
11 | asm volatile("\n->" #sym " %0 " #val : : "i" (val/sizeof(unsigned long))) | ||
12 | |||
10 | #define OFFSET(sym, str, mem) \ | 13 | #define OFFSET(sym, str, mem) \ |
11 | DEFINE(sym, offsetof(struct str, mem)); | 14 | DEFINE(sym, offsetof(struct str, mem)); |
12 | 15 | ||
13 | void foo(void) | 16 | void foo(void) |
14 | { | 17 | { |
15 | OFFSET(SC_IP, sigcontext, eip); | 18 | OFFSET(HOST_SC_IP, sigcontext, eip); |
16 | OFFSET(SC_SP, sigcontext, esp); | 19 | OFFSET(HOST_SC_SP, sigcontext, esp); |
17 | OFFSET(SC_FS, sigcontext, fs); | 20 | OFFSET(HOST_SC_FS, sigcontext, fs); |
18 | OFFSET(SC_GS, sigcontext, gs); | 21 | OFFSET(HOST_SC_GS, sigcontext, gs); |
19 | OFFSET(SC_DS, sigcontext, ds); | 22 | OFFSET(HOST_SC_DS, sigcontext, ds); |
20 | OFFSET(SC_ES, sigcontext, es); | 23 | OFFSET(HOST_SC_ES, sigcontext, es); |
21 | OFFSET(SC_SS, sigcontext, ss); | 24 | OFFSET(HOST_SC_SS, sigcontext, ss); |
22 | OFFSET(SC_CS, sigcontext, cs); | 25 | OFFSET(HOST_SC_CS, sigcontext, cs); |
23 | OFFSET(SC_EFLAGS, sigcontext, eflags); | 26 | OFFSET(HOST_SC_EFLAGS, sigcontext, eflags); |
24 | OFFSET(SC_EAX, sigcontext, eax); | 27 | OFFSET(HOST_SC_EAX, sigcontext, eax); |
25 | OFFSET(SC_EBX, sigcontext, ebx); | 28 | OFFSET(HOST_SC_EBX, sigcontext, ebx); |
26 | OFFSET(SC_ECX, sigcontext, ecx); | 29 | OFFSET(HOST_SC_ECX, sigcontext, ecx); |
27 | OFFSET(SC_EDX, sigcontext, edx); | 30 | OFFSET(HOST_SC_EDX, sigcontext, edx); |
28 | OFFSET(SC_EDI, sigcontext, edi); | 31 | OFFSET(HOST_SC_EDI, sigcontext, edi); |
29 | OFFSET(SC_ESI, sigcontext, esi); | 32 | OFFSET(HOST_SC_ESI, sigcontext, esi); |
30 | OFFSET(SC_EBP, sigcontext, ebp); | 33 | OFFSET(HOST_SC_EBP, sigcontext, ebp); |
31 | OFFSET(SC_TRAPNO, sigcontext, trapno); | 34 | OFFSET(HOST_SC_TRAPNO, sigcontext, trapno); |
32 | OFFSET(SC_ERR, sigcontext, err); | 35 | OFFSET(HOST_SC_ERR, sigcontext, err); |
33 | OFFSET(SC_CR2, sigcontext, cr2); | 36 | OFFSET(HOST_SC_CR2, sigcontext, cr2); |
34 | OFFSET(SC_FPSTATE, sigcontext, fpstate); | 37 | OFFSET(HOST_SC_FPSTATE, sigcontext, fpstate); |
35 | OFFSET(SC_SIGMASK, sigcontext, oldmask); | 38 | OFFSET(HOST_SC_SIGMASK, sigcontext, oldmask); |
36 | OFFSET(SC_FP_CW, _fpstate, cw); | 39 | OFFSET(HOST_SC_FP_CW, _fpstate, cw); |
37 | OFFSET(SC_FP_SW, _fpstate, sw); | 40 | OFFSET(HOST_SC_FP_SW, _fpstate, sw); |
38 | OFFSET(SC_FP_TAG, _fpstate, tag); | 41 | OFFSET(HOST_SC_FP_TAG, _fpstate, tag); |
39 | OFFSET(SC_FP_IPOFF, _fpstate, ipoff); | 42 | OFFSET(HOST_SC_FP_IPOFF, _fpstate, ipoff); |
40 | OFFSET(SC_FP_CSSEL, _fpstate, cssel); | 43 | OFFSET(HOST_SC_FP_CSSEL, _fpstate, cssel); |
41 | OFFSET(SC_FP_DATAOFF, _fpstate, dataoff); | 44 | OFFSET(HOST_SC_FP_DATAOFF, _fpstate, dataoff); |
42 | OFFSET(SC_FP_DATASEL, _fpstate, datasel); | 45 | OFFSET(HOST_SC_FP_DATASEL, _fpstate, datasel); |
43 | OFFSET(SC_FP_ST, _fpstate, _st); | 46 | OFFSET(HOST_SC_FP_ST, _fpstate, _st); |
44 | OFFSET(SC_FXSR_ENV, _fpstate, _fxsr_env); | 47 | OFFSET(HOST_SC_FXSR_ENV, _fpstate, _fxsr_env); |
45 | 48 | ||
46 | DEFINE(HOST_FRAME_SIZE, FRAME_SIZE); | 49 | DEFINE_LONGS(HOST_FRAME_SIZE, FRAME_SIZE); |
47 | DEFINE(HOST_FP_SIZE, | 50 | DEFINE_LONGS(HOST_FP_SIZE, sizeof(struct user_i387_struct)); |
48 | sizeof(struct user_i387_struct) / sizeof(unsigned long)); | 51 | DEFINE_LONGS(HOST_XFP_SIZE, sizeof(struct user_fxsr_struct)); |
49 | DEFINE(HOST_XFP_SIZE, | ||
50 | sizeof(struct user_fxsr_struct) / sizeof(unsigned long)); | ||
51 | 52 | ||
52 | DEFINE(HOST_IP, EIP); | 53 | DEFINE(HOST_IP, EIP); |
53 | DEFINE(HOST_SP, UESP); | 54 | DEFINE(HOST_SP, UESP); |
@@ -65,5 +66,5 @@ void foo(void) | |||
65 | DEFINE(HOST_FS, FS); | 66 | DEFINE(HOST_FS, FS); |
66 | DEFINE(HOST_ES, ES); | 67 | DEFINE(HOST_ES, ES); |
67 | DEFINE(HOST_GS, GS); | 68 | DEFINE(HOST_GS, GS); |
68 | DEFINE(__UM_FRAME_SIZE, sizeof(struct user_regs_struct)); | 69 | DEFINE(UM_FRAME_SIZE, sizeof(struct user_regs_struct)); |
69 | } | 70 | } |