3 #include <asm/ptrace.h>
5 #include <linux/stddef.h>
7 #define DEFINE(sym, val) \
8 asm volatile("\n->" #sym " %0 " #val : : "i" (val))
10 #define OFFSET(sym, str, mem) \
11 DEFINE(sym, offsetof(struct str, mem));
15 OFFSET(SC_IP
, sigcontext
, eip
);
16 OFFSET(SC_SP
, sigcontext
, esp
);
17 OFFSET(SC_FS
, sigcontext
, fs
);
18 OFFSET(SC_GS
, sigcontext
, gs
);
19 OFFSET(SC_DS
, sigcontext
, ds
);
20 OFFSET(SC_ES
, sigcontext
, es
);
21 OFFSET(SC_SS
, sigcontext
, ss
);
22 OFFSET(SC_CS
, sigcontext
, cs
);
23 OFFSET(SC_EFLAGS
, sigcontext
, eflags
);
24 OFFSET(SC_EAX
, sigcontext
, eax
);
25 OFFSET(SC_EBX
, sigcontext
, ebx
);
26 OFFSET(SC_ECX
, sigcontext
, ecx
);
27 OFFSET(SC_EDX
, sigcontext
, edx
);
28 OFFSET(SC_EDI
, sigcontext
, edi
);
29 OFFSET(SC_ESI
, sigcontext
, esi
);
30 OFFSET(SC_EBP
, sigcontext
, ebp
);
31 OFFSET(SC_TRAPNO
, sigcontext
, trapno
);
32 OFFSET(SC_ERR
, sigcontext
, err
);
33 OFFSET(SC_CR2
, sigcontext
, cr2
);
34 OFFSET(SC_FPSTATE
, sigcontext
, fpstate
);
35 OFFSET(SC_SIGMASK
, sigcontext
, oldmask
);
36 OFFSET(SC_FP_CW
, _fpstate
, cw
);
37 OFFSET(SC_FP_SW
, _fpstate
, sw
);
38 OFFSET(SC_FP_TAG
, _fpstate
, tag
);
39 OFFSET(SC_FP_IPOFF
, _fpstate
, ipoff
);
40 OFFSET(SC_FP_CSSEL
, _fpstate
, cssel
);
41 OFFSET(SC_FP_DATAOFF
, _fpstate
, dataoff
);
42 OFFSET(SC_FP_DATASEL
, _fpstate
, datasel
);
43 OFFSET(SC_FP_ST
, _fpstate
, _st
);
44 OFFSET(SC_FXSR_ENV
, _fpstate
, _fxsr_env
);
46 DEFINE(HOST_FRAME_SIZE
, FRAME_SIZE
);
48 sizeof(struct user_i387_struct
) / sizeof(unsigned long));
50 sizeof(struct user_fxsr_struct
) / sizeof(unsigned long));
53 DEFINE(HOST_SP
, UESP
);
54 DEFINE(HOST_EFLAGS
, EFL
);
55 DEFINE(HOST_EAX
, EAX
);
56 DEFINE(HOST_EBX
, EBX
);
57 DEFINE(HOST_ECX
, ECX
);
58 DEFINE(HOST_EDX
, EDX
);
59 DEFINE(HOST_ESI
, ESI
);
60 DEFINE(HOST_EDI
, EDI
);
61 DEFINE(HOST_EBP
, EBP
);
68 DEFINE(__UM_FRAME_SIZE
, sizeof(struct user_regs_struct
));