offsets.h revision 127acf8e97047f0c5faf31114b1fea370c0c6389
1434b9ffcfebbee058847a18231c5046877b87bd1com[davidm]!hans_boehm/* Linux-specific definitions: */ 2434b9ffcfebbee058847a18231c5046877b87bd1com[davidm]!hans_boehm 3434b9ffcfebbee058847a18231c5046877b87bd1com[davidm]!hans_boehm/* Define various structure offsets to simplify cross-compilation. */ 4434b9ffcfebbee058847a18231c5046877b87bd1com[davidm]!hans_boehm 5fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm/* Offsets for x86 Linux "ucontext_t": */ 6fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm 7fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_UC_FLAGS_OFF 0x00 8fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_UC_LINK_OFF 0x04 9fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_UC_STACK_OFF 0x08 10fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_UC_MCONTEXT_OFF 0x14 11fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_UC_SIGMASK_OFF 0x6c 1254752e0df0ce7ad535f724e16874ebb00b5f94f6Paul Pluzhnikov#define LINUX_UC_FPREGS_MEM_OFF 0xec 13fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm 14434b9ffcfebbee058847a18231c5046877b87bd1com[davidm]!hans_boehm/* The struct sigcontext is located at an offset of 4 15434b9ffcfebbee058847a18231c5046877b87bd1com[davidm]!hans_boehm from the stack pointer in the signal frame. */ 16434b9ffcfebbee058847a18231c5046877b87bd1com[davidm]!hans_boehm 17fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm/* Offsets for x86 Linux "struct sigcontext": */ 18fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm 19fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_GS_OFF 0x00 20fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_GSH_OFF 0x02 21fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_FS_OFF 0x04 22fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_FSH_OFF 0x06 23fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_ES_OFF 0x08 24fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_ESH_OFF 0x0a 25fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_DS_OFF 0x0c 26fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_DSH_OFF 0x0e 27fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_EDI_OFF 0x10 28fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_ESI_OFF 0x14 29fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_EBP_OFF 0x18 30fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_ESP_OFF 0x1c 31fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_EBX_OFF 0x20 32fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_EDX_OFF 0x24 33fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_ECX_OFF 0x28 34fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_EAX_OFF 0x2c 35fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_TRAPNO_OFF 0x30 36fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_ERR_OFF 0x34 37fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_EIP_OFF 0x38 38fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_CS_OFF 0x3c 39fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_CSH_OFF 0x3e 40fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_EFLAGS_OFF 0x40 41fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_ESP_AT_SIGNAL_OFF 0x44 42fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_SS_OFF 0x48 43fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_SSH_OFF 0x4a 44fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_FPSTATE_OFF 0x4c 45fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_OLDMASK_OFF 0x50 46fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_SC_CR2_OFF 0x54 47fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm 48fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm/* Offsets for x86 Linux "struct _fpstate": */ 49434b9ffcfebbee058847a18231c5046877b87bd1com[davidm]!hans_boehm 50fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_CW_OFF 0x000 51fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_SW_OFF 0x004 52fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_TAG_OFF 0x008 53fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_IPOFF_OFF 0x00c 54fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_CSSEL_OFF 0x010 55fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_DATAOFF_OFF 0x014 56fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_DATASEL_OFF 0x018 57fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_ST0_OFF 0x01c 58fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_ST1_OFF 0x026 59fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_ST2_OFF 0x030 60fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_ST3_OFF 0x03a 61fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_ST4_OFF 0x044 62fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_ST5_OFF 0x04e 63fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_ST6_OFF 0x058 64fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_ST7_OFF 0x062 65fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_STATUS_OFF 0x06c 66fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_MAGIC_OFF 0x06e 67fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_FXSR_ENV_OFF 0x070 68fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_MXCSR_OFF 0x088 69fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_FXSR_ST0_OFF 0x090 70fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_FXSR_ST1_OFF 0x0a0 71fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_FXSR_ST2_OFF 0x0b0 72fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_FXSR_ST3_OFF 0x0c0 73fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_FXSR_ST4_OFF 0x0d0 74fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_FXSR_ST5_OFF 0x0e0 75fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_FXSR_ST6_OFF 0x0f0 76fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_FXSR_ST7_OFF 0x100 77fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_XMM0_OFF 0x110 78fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_XMM1_OFF 0x120 79fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_XMM2_OFF 0x130 80fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_XMM3_OFF 0x140 81fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_XMM4_OFF 0x150 82fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_XMM5_OFF 0x160 83fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_XMM6_OFF 0x170 84fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm#define LINUX_FPSTATE_XMM7_OFF 0x180 85bb41eba56c44306e5bc2dcf8eeba574bd5a3702fKonstantin Belousov 8653f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov/* FreeBSD-specific definitions: */ 8753f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov 88127acf8e97047f0c5faf31114b1fea370c0c6389Konstantin Belousov#define FREEBSD_SC_UCONTEXT_OFF 0x20 89e9cd30040e2794ee586ff853b360b47881824fdaKonstantin Belousov#define FREEBSD_UC_MCONTEXT_OFF 0x10 90e9cd30040e2794ee586ff853b360b47881824fdaKonstantin Belousov 9153f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_GS_OFF 0x14 9253f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_FS_OFF 0x18 9353f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_ES_OFF 0x1c 9453f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_DS_OFF 0x20 9554f8b2fdbe814d79cf52231ba38175c92b5c3c23Konstantin Belousov#define FREEBSD_UC_MCONTEXT_EDI_OFF 0x24 9654f8b2fdbe814d79cf52231ba38175c92b5c3c23Konstantin Belousov#define FREEBSD_UC_MCONTEXT_ESI_OFF 0x28 9754f8b2fdbe814d79cf52231ba38175c92b5c3c23Konstantin Belousov#define FREEBSD_UC_MCONTEXT_EBP_OFF 0x2c 9853f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_EBX_OFF 0x34 9953f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_EDX_OFF 0x38 10053f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_ECX_OFF 0x3c 10153f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_EAX_OFF 0x40 10253f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_TRAPNO_OFF 0x44 103e9cd30040e2794ee586ff853b360b47881824fdaKonstantin Belousov#define FREEBSD_UC_MCONTEXT_EIP_OFF 0x4c 104e9cd30040e2794ee586ff853b360b47881824fdaKonstantin Belousov#define FREEBSD_UC_MCONTEXT_ESP_OFF 0x58 105e9cd30040e2794ee586ff853b360b47881824fdaKonstantin Belousov#define FREEBSD_UC_MCONTEXT_CS_OFF 0x50 106e9cd30040e2794ee586ff853b360b47881824fdaKonstantin Belousov#define FREEBSD_UC_MCONTEXT_EFLAGS_OFF 0x54 10753f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_SS_OFF 0x5c 10853f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_MC_LEN_OFF 0x60 109f6546e27ed70661c1b148521e15c539559ee4e25Konstantin Belousov#define FREEBSD_UC_MCONTEXT_FPFORMAT_OFF 0x64 11053f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_OWNEDFP_OFF 0x68 111e9cd30040e2794ee586ff853b360b47881824fdaKonstantin Belousov#define FREEBSD_UC_MCONTEXT_FPSTATE_OFF 0x70 112bb41eba56c44306e5bc2dcf8eeba574bd5a3702fKonstantin Belousov 11353f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_CW_OFF 0x70 11453f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_SW_OFF 0x74 11553f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_TAG_OFF 0x78 11653f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_IPOFF_OFF 0x7c 11753f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_CSSEL_OFF 0x80 11853f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_DATAOFF_OFF 0x84 11953f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_US_MCONTEXT_DATASEL_OFF 0x88 12053f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_ST0_OFF 0x8c 121117ccd246de163dddd451cf98019e0fa90c6272aKonstantin Belousov 12253f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_CW_XMM_OFF 0x70 12353f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_SW_XMM_OFF 0x72 12453f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_TAG_XMM_OFF 0x74 12553f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_IPOFF_XMM_OFF 0x78 12653f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_CSSEL_XMM_OFF 0x7c 12753f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_DATAOFF_XMM_OFF 0x80 12853f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_US_MCONTEXT_DATASEL_XMM_OFF 0x84 12953f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_MXCSR_XMM_OFF 0x88 13053f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_ST0_XMM_OFF 0x90 13153f7e650e0fb641af08a0f40c9fae1fd037caab9Konstantin Belousov#define FREEBSD_UC_MCONTEXT_XMM0_OFF 0x110 132f6546e27ed70661c1b148521e15c539559ee4e25Konstantin Belousov 13354f8b2fdbe814d79cf52231ba38175c92b5c3c23Konstantin Belousov#define FREEBSD_UC_MCONTEXT_MC_LEN_VAL 0x280 134f6546e27ed70661c1b148521e15c539559ee4e25Konstantin Belousov#define FREEBSD_UC_MCONTEXT_FPFMT_NODEV 0x10000 135bb41eba56c44306e5bc2dcf8eeba574bd5a3702fKonstantin Belousov#define FREEBSD_UC_MCONTEXT_FPFMT_387 0x10001 136bb41eba56c44306e5bc2dcf8eeba574bd5a3702fKonstantin Belousov#define FREEBSD_UC_MCONTEXT_FPFMT_XMM 0x10002 137f6546e27ed70661c1b148521e15c539559ee4e25Konstantin Belousov#define FREEBSD_UC_MCONTEXT_FPOWNED_NONE 0x20000 138f6546e27ed70661c1b148521e15c539559ee4e25Konstantin Belousov#define FREEBSD_UC_MCONTEXT_FPOWNED_FPU 0x20001 139f6546e27ed70661c1b148521e15c539559ee4e25Konstantin Belousov#define FREEBSD_UC_MCONTEXT_FPOWNED_PCB 0x20002 140f6546e27ed70661c1b148521e15c539559ee4e25Konstantin Belousov 141