blob: 96f06d1fb652a31ab23b8e9fcfaf2a0537873148 [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
12
com[davidm]!hans_boehm434b9ff2003-11-18 21:29:40 +000013/* The struct sigcontext is located at an offset of 4
14 from the stack pointer in the signal frame. */
15
hp.com!davidmfcd8dad2004-01-30 00:01:24 +000016/* Offsets for x86 Linux "struct sigcontext": */
com[davidm]!hans_boehm434b9ff2003-11-18 21:29:40 +000017
hp.com!davidmfcd8dad2004-01-30 00:01:24 +000018#define LINUX_SC_GS_OFF 0x00
19#define LINUX_SC_GSH_OFF 0x02
20#define LINUX_SC_FS_OFF 0x04
21#define LINUX_SC_FSH_OFF 0x06
22#define LINUX_SC_ES_OFF 0x08
23#define LINUX_SC_ESH_OFF 0x0a
24#define LINUX_SC_DS_OFF 0x0c
25#define LINUX_SC_DSH_OFF 0x0e
26#define LINUX_SC_EDI_OFF 0x10
27#define LINUX_SC_ESI_OFF 0x14
28#define LINUX_SC_EBP_OFF 0x18
29#define LINUX_SC_ESP_OFF 0x1c
30#define LINUX_SC_EBX_OFF 0x20
31#define LINUX_SC_EDX_OFF 0x24
32#define LINUX_SC_ECX_OFF 0x28
33#define LINUX_SC_EAX_OFF 0x2c
34#define LINUX_SC_TRAPNO_OFF 0x30
35#define LINUX_SC_ERR_OFF 0x34
36#define LINUX_SC_EIP_OFF 0x38
37#define LINUX_SC_CS_OFF 0x3c
38#define LINUX_SC_CSH_OFF 0x3e
39#define LINUX_SC_EFLAGS_OFF 0x40
40#define LINUX_SC_ESP_AT_SIGNAL_OFF 0x44
41#define LINUX_SC_SS_OFF 0x48
42#define LINUX_SC_SSH_OFF 0x4a
43#define LINUX_SC_FPSTATE_OFF 0x4c
44#define LINUX_SC_OLDMASK_OFF 0x50
45#define LINUX_SC_CR2_OFF 0x54
46
47/* Offsets for x86 Linux "struct _fpstate": */
48
49#define LINUX_FPSTATE_CW_OFF 0x000
50#define LINUX_FPSTATE_SW_OFF 0x004
51#define LINUX_FPSTATE_TAG_OFF 0x008
52#define LINUX_FPSTATE_IPOFF_OFF 0x00c
53#define LINUX_FPSTATE_CSSEL_OFF 0x010
54#define LINUX_FPSTATE_DATAOFF_OFF 0x014
55#define LINUX_FPSTATE_DATASEL_OFF 0x018
56#define LINUX_FPSTATE_ST0_OFF 0x01c
57#define LINUX_FPSTATE_ST1_OFF 0x026
58#define LINUX_FPSTATE_ST2_OFF 0x030
59#define LINUX_FPSTATE_ST3_OFF 0x03a
60#define LINUX_FPSTATE_ST4_OFF 0x044
61#define LINUX_FPSTATE_ST5_OFF 0x04e
62#define LINUX_FPSTATE_ST6_OFF 0x058
63#define LINUX_FPSTATE_ST7_OFF 0x062
64#define LINUX_FPSTATE_STATUS_OFF 0x06c
65#define LINUX_FPSTATE_MAGIC_OFF 0x06e
66#define LINUX_FPSTATE_FXSR_ENV_OFF 0x070
67#define LINUX_FPSTATE_MXCSR_OFF 0x088
68#define LINUX_FPSTATE_FXSR_ST0_OFF 0x090
69#define LINUX_FPSTATE_FXSR_ST1_OFF 0x0a0
70#define LINUX_FPSTATE_FXSR_ST2_OFF 0x0b0
71#define LINUX_FPSTATE_FXSR_ST3_OFF 0x0c0
72#define LINUX_FPSTATE_FXSR_ST4_OFF 0x0d0
73#define LINUX_FPSTATE_FXSR_ST5_OFF 0x0e0
74#define LINUX_FPSTATE_FXSR_ST6_OFF 0x0f0
75#define LINUX_FPSTATE_FXSR_ST7_OFF 0x100
76#define LINUX_FPSTATE_XMM0_OFF 0x110
77#define LINUX_FPSTATE_XMM1_OFF 0x120
78#define LINUX_FPSTATE_XMM2_OFF 0x130
79#define LINUX_FPSTATE_XMM3_OFF 0x140
80#define LINUX_FPSTATE_XMM4_OFF 0x150
81#define LINUX_FPSTATE_XMM5_OFF 0x160
82#define LINUX_FPSTATE_XMM6_OFF 0x170
83#define LINUX_FPSTATE_XMM7_OFF 0x180