com[davidm]!hans_boehm | 434b9ff | 2003-11-18 21:29:40 +0000 | [diff] [blame] | 1 | /* Linux-specific definitions: */ |
| 2 | |
| 3 | /* Define various structure offsets to simplify cross-compilation. */ |
| 4 | |
hp.com!davidm | fcd8dad | 2004-01-30 00:01:24 +0000 | [diff] [blame] | 5 | /* 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 Pluzhnikov | 54752e0 | 2009-12-22 18:58:17 -0800 | [diff] [blame] | 12 | #define LINUX_UC_FPREGS_MEM_OFF 0xec |
hp.com!davidm | fcd8dad | 2004-01-30 00:01:24 +0000 | [diff] [blame] | 13 | |
com[davidm]!hans_boehm | 434b9ff | 2003-11-18 21:29:40 +0000 | [diff] [blame] | 14 | /* The struct sigcontext is located at an offset of 4 |
| 15 | from the stack pointer in the signal frame. */ |
| 16 | |
hp.com!davidm | fcd8dad | 2004-01-30 00:01:24 +0000 | [diff] [blame] | 17 | /* Offsets for x86 Linux "struct sigcontext": */ |
com[davidm]!hans_boehm | 434b9ff | 2003-11-18 21:29:40 +0000 | [diff] [blame] | 18 | |
hp.com!davidm | fcd8dad | 2004-01-30 00:01:24 +0000 | [diff] [blame] | 19 | #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 Belousov | bb41eba | 2010-03-09 18:01:08 +0200 | [diff] [blame] | 85 | |
Konstantin Belousov | 53f7e65 | 2010-04-10 18:48:16 +0300 | [diff] [blame] | 86 | /* FreeBSD-specific definitions: */ |
| 87 | |
Konstantin Belousov | 127acf8 | 2010-04-14 12:15:05 +0300 | [diff] [blame] | 88 | #define FREEBSD_SC_UCONTEXT_OFF 0x20 |
Konstantin Belousov | e9cd300 | 2010-03-13 20:28:12 +0200 | [diff] [blame] | 89 | #define FREEBSD_UC_MCONTEXT_OFF 0x10 |
| 90 | |
Konstantin Belousov | 53f7e65 | 2010-04-10 18:48:16 +0300 | [diff] [blame] | 91 | #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 Belousov | 54f8b2f | 2010-03-11 00:02:24 +0200 | [diff] [blame] | 95 | #define FREEBSD_UC_MCONTEXT_EDI_OFF 0x24 |
| 96 | #define FREEBSD_UC_MCONTEXT_ESI_OFF 0x28 |
| 97 | #define FREEBSD_UC_MCONTEXT_EBP_OFF 0x2c |
Konstantin Belousov | 53f7e65 | 2010-04-10 18:48:16 +0300 | [diff] [blame] | 98 | #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 Belousov | e9cd300 | 2010-03-13 20:28:12 +0200 | [diff] [blame] | 103 | #define FREEBSD_UC_MCONTEXT_EIP_OFF 0x4c |
| 104 | #define FREEBSD_UC_MCONTEXT_ESP_OFF 0x58 |
Konstantin Belousov | e9cd300 | 2010-03-13 20:28:12 +0200 | [diff] [blame] | 105 | #define FREEBSD_UC_MCONTEXT_CS_OFF 0x50 |
| 106 | #define FREEBSD_UC_MCONTEXT_EFLAGS_OFF 0x54 |
Konstantin Belousov | 53f7e65 | 2010-04-10 18:48:16 +0300 | [diff] [blame] | 107 | #define FREEBSD_UC_MCONTEXT_SS_OFF 0x5c |
Konstantin Belousov | e9cd300 | 2010-03-13 20:28:12 +0200 | [diff] [blame] | 108 | #define FREEBSD_UC_MCONTEXT_MC_LEN_OFF 0x60 |
Konstantin Belousov | 53f7e65 | 2010-04-10 18:48:16 +0300 | [diff] [blame] | 109 | #define FREEBSD_UC_MCONTEXT_FPFORMAT_OFF 0x64 |
| 110 | #define FREEBSD_UC_MCONTEXT_OWNEDFP_OFF 0x68 |
| 111 | #define FREEBSD_UC_MCONTEXT_FPSTATE_OFF 0x70 |
Konstantin Belousov | bb41eba | 2010-03-09 18:01:08 +0200 | [diff] [blame] | 112 | |
Konstantin Belousov | 53f7e65 | 2010-04-10 18:48:16 +0300 | [diff] [blame] | 113 | #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 Belousov | 117ccd2 | 2010-04-10 00:46:51 +0300 | [diff] [blame] | 121 | |
Konstantin Belousov | 53f7e65 | 2010-04-10 18:48:16 +0300 | [diff] [blame] | 122 | #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 Belousov | f6546e2 | 2010-04-10 00:40:39 +0300 | [diff] [blame] | 132 | |
Konstantin Belousov | 54f8b2f | 2010-03-11 00:02:24 +0200 | [diff] [blame] | 133 | #define FREEBSD_UC_MCONTEXT_MC_LEN_VAL 0x280 |
Konstantin Belousov | f6546e2 | 2010-04-10 00:40:39 +0300 | [diff] [blame] | 134 | #define FREEBSD_UC_MCONTEXT_FPFMT_NODEV 0x10000 |
Konstantin Belousov | bb41eba | 2010-03-09 18:01:08 +0200 | [diff] [blame] | 135 | #define FREEBSD_UC_MCONTEXT_FPFMT_387 0x10001 |
| 136 | #define FREEBSD_UC_MCONTEXT_FPFMT_XMM 0x10002 |
Konstantin Belousov | f6546e2 | 2010-04-10 00:40:39 +0300 | [diff] [blame] | 137 | #define FREEBSD_UC_MCONTEXT_FPOWNED_NONE 0x20000 |
| 138 | #define FREEBSD_UC_MCONTEXT_FPOWNED_FPU 0x20001 |
| 139 | #define FREEBSD_UC_MCONTEXT_FPOWNED_PCB 0x20002 |
| 140 | |