blob: e8a255cd736fecc2f181ba61ac28e849f09a6ed4 [file] [log] [blame]
com[davidm]!hans_boehm434b9ff2003-11-18 21:29:40 +00001/* Linux-specific definitions: */
2
3/* Define various structure offsets to simplify cross-compilation. */
4
hp.com!davidmfcd8dad2004-01-30 00:01:24 +00005/* Offsets for x86 Linux "ucontext_t": */
6
7#define LINUX_UC_FLAGS_OFF 0x00
8#define LINUX_UC_LINK_OFF 0x04
9#define LINUX_UC_STACK_OFF 0x08
10#define LINUX_UC_MCONTEXT_OFF 0x14
11#define LINUX_UC_SIGMASK_OFF 0x6c
Paul Pluzhnikov54752e02009-12-22 18:58:17 -080012#define LINUX_UC_FPREGS_MEM_OFF 0xec
hp.com!davidmfcd8dad2004-01-30 00:01:24 +000013
com[davidm]!hans_boehm434b9ff2003-11-18 21:29:40 +000014/* The struct sigcontext is located at an offset of 4
15 from the stack pointer in the signal frame. */
16
hp.com!davidmfcd8dad2004-01-30 00:01:24 +000017/* Offsets for x86 Linux "struct sigcontext": */
com[davidm]!hans_boehm434b9ff2003-11-18 21:29:40 +000018
hp.com!davidmfcd8dad2004-01-30 00:01:24 +000019#define LINUX_SC_GS_OFF 0x00
20#define LINUX_SC_GSH_OFF 0x02
21#define LINUX_SC_FS_OFF 0x04
22#define LINUX_SC_FSH_OFF 0x06
23#define LINUX_SC_ES_OFF 0x08
24#define LINUX_SC_ESH_OFF 0x0a
25#define LINUX_SC_DS_OFF 0x0c
26#define LINUX_SC_DSH_OFF 0x0e
27#define LINUX_SC_EDI_OFF 0x10
28#define LINUX_SC_ESI_OFF 0x14
29#define LINUX_SC_EBP_OFF 0x18
30#define LINUX_SC_ESP_OFF 0x1c
31#define LINUX_SC_EBX_OFF 0x20
32#define LINUX_SC_EDX_OFF 0x24
33#define LINUX_SC_ECX_OFF 0x28
34#define LINUX_SC_EAX_OFF 0x2c
35#define LINUX_SC_TRAPNO_OFF 0x30
36#define LINUX_SC_ERR_OFF 0x34
37#define LINUX_SC_EIP_OFF 0x38
38#define LINUX_SC_CS_OFF 0x3c
39#define LINUX_SC_CSH_OFF 0x3e
40#define LINUX_SC_EFLAGS_OFF 0x40
41#define LINUX_SC_ESP_AT_SIGNAL_OFF 0x44
42#define LINUX_SC_SS_OFF 0x48
43#define LINUX_SC_SSH_OFF 0x4a
44#define LINUX_SC_FPSTATE_OFF 0x4c
45#define LINUX_SC_OLDMASK_OFF 0x50
46#define LINUX_SC_CR2_OFF 0x54
47
48/* Offsets for x86 Linux "struct _fpstate": */
49
50#define LINUX_FPSTATE_CW_OFF 0x000
51#define LINUX_FPSTATE_SW_OFF 0x004
52#define LINUX_FPSTATE_TAG_OFF 0x008
53#define LINUX_FPSTATE_IPOFF_OFF 0x00c
54#define LINUX_FPSTATE_CSSEL_OFF 0x010
55#define LINUX_FPSTATE_DATAOFF_OFF 0x014
56#define LINUX_FPSTATE_DATASEL_OFF 0x018
57#define LINUX_FPSTATE_ST0_OFF 0x01c
58#define LINUX_FPSTATE_ST1_OFF 0x026
59#define LINUX_FPSTATE_ST2_OFF 0x030
60#define LINUX_FPSTATE_ST3_OFF 0x03a
61#define LINUX_FPSTATE_ST4_OFF 0x044
62#define LINUX_FPSTATE_ST5_OFF 0x04e
63#define LINUX_FPSTATE_ST6_OFF 0x058
64#define LINUX_FPSTATE_ST7_OFF 0x062
65#define LINUX_FPSTATE_STATUS_OFF 0x06c
66#define LINUX_FPSTATE_MAGIC_OFF 0x06e
67#define LINUX_FPSTATE_FXSR_ENV_OFF 0x070
68#define LINUX_FPSTATE_MXCSR_OFF 0x088
69#define LINUX_FPSTATE_FXSR_ST0_OFF 0x090
70#define LINUX_FPSTATE_FXSR_ST1_OFF 0x0a0
71#define LINUX_FPSTATE_FXSR_ST2_OFF 0x0b0
72#define LINUX_FPSTATE_FXSR_ST3_OFF 0x0c0
73#define LINUX_FPSTATE_FXSR_ST4_OFF 0x0d0
74#define LINUX_FPSTATE_FXSR_ST5_OFF 0x0e0
75#define LINUX_FPSTATE_FXSR_ST6_OFF 0x0f0
76#define LINUX_FPSTATE_FXSR_ST7_OFF 0x100
77#define LINUX_FPSTATE_XMM0_OFF 0x110
78#define LINUX_FPSTATE_XMM1_OFF 0x120
79#define LINUX_FPSTATE_XMM2_OFF 0x130
80#define LINUX_FPSTATE_XMM3_OFF 0x140
81#define LINUX_FPSTATE_XMM4_OFF 0x150
82#define LINUX_FPSTATE_XMM5_OFF 0x160
83#define LINUX_FPSTATE_XMM6_OFF 0x170
84#define LINUX_FPSTATE_XMM7_OFF 0x180
Konstantin Belousovbb41eba2010-03-09 18:01:08 +020085
Konstantin Belousov53f7e652010-04-10 18:48:16 +030086/* FreeBSD-specific definitions: */
87
Konstantin Belousov127acf82010-04-14 12:15:05 +030088#define FREEBSD_SC_UCONTEXT_OFF 0x20
Konstantin Belousove9cd3002010-03-13 20:28:12 +020089#define FREEBSD_UC_MCONTEXT_OFF 0x10
90
Konstantin Belousov53f7e652010-04-10 18:48:16 +030091#define FREEBSD_UC_MCONTEXT_GS_OFF 0x14
92#define FREEBSD_UC_MCONTEXT_FS_OFF 0x18
93#define FREEBSD_UC_MCONTEXT_ES_OFF 0x1c
94#define FREEBSD_UC_MCONTEXT_DS_OFF 0x20
Konstantin Belousov54f8b2f2010-03-11 00:02:24 +020095#define FREEBSD_UC_MCONTEXT_EDI_OFF 0x24
96#define FREEBSD_UC_MCONTEXT_ESI_OFF 0x28
97#define FREEBSD_UC_MCONTEXT_EBP_OFF 0x2c
Konstantin Belousov53f7e652010-04-10 18:48:16 +030098#define FREEBSD_UC_MCONTEXT_EBX_OFF 0x34
99#define FREEBSD_UC_MCONTEXT_EDX_OFF 0x38
100#define FREEBSD_UC_MCONTEXT_ECX_OFF 0x3c
101#define FREEBSD_UC_MCONTEXT_EAX_OFF 0x40
102#define FREEBSD_UC_MCONTEXT_TRAPNO_OFF 0x44
Konstantin Belousove9cd3002010-03-13 20:28:12 +0200103#define FREEBSD_UC_MCONTEXT_EIP_OFF 0x4c
104#define FREEBSD_UC_MCONTEXT_ESP_OFF 0x58
Konstantin Belousove9cd3002010-03-13 20:28:12 +0200105#define FREEBSD_UC_MCONTEXT_CS_OFF 0x50
106#define FREEBSD_UC_MCONTEXT_EFLAGS_OFF 0x54
Konstantin Belousov53f7e652010-04-10 18:48:16 +0300107#define FREEBSD_UC_MCONTEXT_SS_OFF 0x5c
Konstantin Belousove9cd3002010-03-13 20:28:12 +0200108#define FREEBSD_UC_MCONTEXT_MC_LEN_OFF 0x60
Konstantin Belousov53f7e652010-04-10 18:48:16 +0300109#define FREEBSD_UC_MCONTEXT_FPFORMAT_OFF 0x64
110#define FREEBSD_UC_MCONTEXT_OWNEDFP_OFF 0x68
111#define FREEBSD_UC_MCONTEXT_FPSTATE_OFF 0x70
Konstantin Belousovbb41eba2010-03-09 18:01:08 +0200112
Konstantin Belousov53f7e652010-04-10 18:48:16 +0300113#define FREEBSD_UC_MCONTEXT_CW_OFF 0x70
114#define FREEBSD_UC_MCONTEXT_SW_OFF 0x74
115#define FREEBSD_UC_MCONTEXT_TAG_OFF 0x78
116#define FREEBSD_UC_MCONTEXT_IPOFF_OFF 0x7c
117#define FREEBSD_UC_MCONTEXT_CSSEL_OFF 0x80
118#define FREEBSD_UC_MCONTEXT_DATAOFF_OFF 0x84
119#define FREEBSD_US_MCONTEXT_DATASEL_OFF 0x88
120#define FREEBSD_UC_MCONTEXT_ST0_OFF 0x8c
Konstantin Belousov117ccd22010-04-10 00:46:51 +0300121
Konstantin Belousov53f7e652010-04-10 18:48:16 +0300122#define FREEBSD_UC_MCONTEXT_CW_XMM_OFF 0x70
123#define FREEBSD_UC_MCONTEXT_SW_XMM_OFF 0x72
124#define FREEBSD_UC_MCONTEXT_TAG_XMM_OFF 0x74
125#define FREEBSD_UC_MCONTEXT_IPOFF_XMM_OFF 0x78
126#define FREEBSD_UC_MCONTEXT_CSSEL_XMM_OFF 0x7c
127#define FREEBSD_UC_MCONTEXT_DATAOFF_XMM_OFF 0x80
128#define FREEBSD_US_MCONTEXT_DATASEL_XMM_OFF 0x84
129#define FREEBSD_UC_MCONTEXT_MXCSR_XMM_OFF 0x88
130#define FREEBSD_UC_MCONTEXT_ST0_XMM_OFF 0x90
131#define FREEBSD_UC_MCONTEXT_XMM0_OFF 0x110
Konstantin Belousovf6546e22010-04-10 00:40:39 +0300132
Konstantin Belousov54f8b2f2010-03-11 00:02:24 +0200133#define FREEBSD_UC_MCONTEXT_MC_LEN_VAL 0x280
Konstantin Belousovf6546e22010-04-10 00:40:39 +0300134#define FREEBSD_UC_MCONTEXT_FPFMT_NODEV 0x10000
Konstantin Belousovbb41eba2010-03-09 18:01:08 +0200135#define FREEBSD_UC_MCONTEXT_FPFMT_387 0x10001
136#define FREEBSD_UC_MCONTEXT_FPFMT_XMM 0x10002
Konstantin Belousovf6546e22010-04-10 00:40:39 +0300137#define FREEBSD_UC_MCONTEXT_FPOWNED_NONE 0x20000
138#define FREEBSD_UC_MCONTEXT_FPOWNED_FPU 0x20001
139#define FREEBSD_UC_MCONTEXT_FPOWNED_PCB 0x20002
140