Home | History | Annotate | Download | only in i386
      1 //===-- MachRegisterStatesI386.h --------------------------------*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 //  Created by Sean Callanan on 3/16/11.
     11 //
     12 //===----------------------------------------------------------------------===//
     13 
     14 #ifndef __MachRegisterStatesI386_h__
     15 #define __MachRegisterStatesI386_h__
     16 
     17 #include <inttypes.h>
     18 
     19 #define __i386_THREAD_STATE         1
     20 #define __i386_FLOAT_STATE          2
     21 #define __i386_EXCEPTION_STATE      3
     22 #define __i386_DEBUG_STATE          10
     23 #define __i386_AVX_STATE            16
     24 
     25 typedef struct {
     26     uint32_t    __eax;
     27     uint32_t    __ebx;
     28     uint32_t    __ecx;
     29     uint32_t    __edx;
     30     uint32_t    __edi;
     31     uint32_t    __esi;
     32     uint32_t    __ebp;
     33     uint32_t    __esp;
     34     uint32_t    __ss;
     35     uint32_t    __eflags;
     36     uint32_t    __eip;
     37     uint32_t    __cs;
     38     uint32_t    __ds;
     39     uint32_t    __es;
     40     uint32_t    __fs;
     41     uint32_t    __gs;
     42 } __i386_thread_state_t;
     43 
     44 typedef struct {
     45     uint16_t    __invalid   : 1;
     46     uint16_t    __denorm    : 1;
     47     uint16_t    __zdiv      : 1;
     48     uint16_t    __ovrfl     : 1;
     49     uint16_t    __undfl     : 1;
     50     uint16_t    __precis    : 1;
     51     uint16_t    __PAD1      : 2;
     52     uint16_t    __pc        : 2;
     53     uint16_t    __rc        : 2;
     54     uint16_t    __PAD2      : 1;
     55     uint16_t    __PAD3      : 3;
     56 } __i386_fp_control_t;
     57 
     58 typedef struct {
     59     uint16_t    __invalid   : 1;
     60     uint16_t    __denorm    : 1;
     61     uint16_t    __zdiv      : 1;
     62     uint16_t    __ovrfl     : 1;
     63     uint16_t    __undfl     : 1;
     64     uint16_t    __precis    : 1;
     65     uint16_t    __stkflt    : 1;
     66     uint16_t    __errsumm   : 1;
     67     uint16_t    __c0        : 1;
     68     uint16_t    __c1        : 1;
     69     uint16_t    __c2        : 1;
     70     uint16_t    __tos       : 3;
     71     uint16_t    __c3        : 1;
     72     uint16_t    __busy      : 1;
     73 } __i386_fp_status_t;
     74 
     75 typedef struct {
     76     uint8_t     __mmst_reg[10];
     77     uint8_t     __mmst_rsrv[6];
     78 } __i386_mmst_reg;
     79 
     80 typedef struct {
     81     uint8_t     __xmm_reg[16];
     82 } __i386_xmm_reg;
     83 
     84 typedef struct {
     85     uint32_t                __fpu_reserved[2];
     86     __i386_fp_control_t     __fpu_fcw;
     87     __i386_fp_status_t      __fpu_fsw;
     88     uint8_t                 __fpu_ftw;
     89     uint8_t                 __fpu_rsrv1;
     90     uint16_t                __fpu_fop;
     91     uint32_t                __fpu_ip;
     92     uint16_t                __fpu_cs;
     93     uint16_t                __fpu_rsrv2;
     94     uint32_t                __fpu_dp;
     95     uint16_t                __fpu_ds;
     96     uint16_t                __fpu_rsrv3;
     97     uint32_t                __fpu_mxcsr;
     98     uint32_t                __fpu_mxcsrmask;
     99     __i386_mmst_reg         __fpu_stmm0;
    100     __i386_mmst_reg         __fpu_stmm1;
    101     __i386_mmst_reg         __fpu_stmm2;
    102     __i386_mmst_reg         __fpu_stmm3;
    103     __i386_mmst_reg         __fpu_stmm4;
    104     __i386_mmst_reg         __fpu_stmm5;
    105     __i386_mmst_reg         __fpu_stmm6;
    106     __i386_mmst_reg         __fpu_stmm7;
    107     __i386_xmm_reg          __fpu_xmm0;
    108     __i386_xmm_reg          __fpu_xmm1;
    109     __i386_xmm_reg          __fpu_xmm2;
    110     __i386_xmm_reg          __fpu_xmm3;
    111     __i386_xmm_reg          __fpu_xmm4;
    112     __i386_xmm_reg          __fpu_xmm5;
    113     __i386_xmm_reg          __fpu_xmm6;
    114     __i386_xmm_reg          __fpu_xmm7;
    115     uint8_t                 __fpu_rsrv4[14*16];
    116     uint32_t                __fpu_reserved1;
    117 } __i386_float_state_t;
    118 
    119 typedef struct {
    120     uint32_t                __fpu_reserved[2];
    121     __i386_fp_control_t     __fpu_fcw;
    122     __i386_fp_status_t      __fpu_fsw;
    123     uint8_t                 __fpu_ftw;
    124     uint8_t                 __fpu_rsrv1;
    125     uint16_t                __fpu_fop;
    126     uint32_t                __fpu_ip;
    127     uint16_t                __fpu_cs;
    128     uint16_t                __fpu_rsrv2;
    129     uint32_t                __fpu_dp;
    130     uint16_t                __fpu_ds;
    131     uint16_t                __fpu_rsrv3;
    132     uint32_t                __fpu_mxcsr;
    133     uint32_t                __fpu_mxcsrmask;
    134     __i386_mmst_reg         __fpu_stmm0;
    135     __i386_mmst_reg         __fpu_stmm1;
    136     __i386_mmst_reg         __fpu_stmm2;
    137     __i386_mmst_reg         __fpu_stmm3;
    138     __i386_mmst_reg         __fpu_stmm4;
    139     __i386_mmst_reg         __fpu_stmm5;
    140     __i386_mmst_reg         __fpu_stmm6;
    141     __i386_mmst_reg         __fpu_stmm7;
    142     __i386_xmm_reg          __fpu_xmm0;
    143     __i386_xmm_reg          __fpu_xmm1;
    144     __i386_xmm_reg          __fpu_xmm2;
    145     __i386_xmm_reg          __fpu_xmm3;
    146     __i386_xmm_reg          __fpu_xmm4;
    147     __i386_xmm_reg          __fpu_xmm5;
    148     __i386_xmm_reg          __fpu_xmm6;
    149     __i386_xmm_reg          __fpu_xmm7;
    150     uint8_t                 __fpu_rsrv4[14*16];
    151     uint32_t                __fpu_reserved1;
    152     uint8_t                 __avx_reserved1[64];
    153     __i386_xmm_reg          __fpu_ymmh0;
    154     __i386_xmm_reg          __fpu_ymmh1;
    155     __i386_xmm_reg          __fpu_ymmh2;
    156     __i386_xmm_reg          __fpu_ymmh3;
    157     __i386_xmm_reg          __fpu_ymmh4;
    158     __i386_xmm_reg          __fpu_ymmh5;
    159     __i386_xmm_reg          __fpu_ymmh6;
    160     __i386_xmm_reg          __fpu_ymmh7;
    161 } __i386_avx_state_t;
    162 
    163 typedef struct {
    164     uint32_t    __trapno;
    165     uint32_t    __err;
    166     uint32_t    __faultvaddr;
    167 } __i386_exception_state_t;
    168 
    169 typedef struct {
    170 	uint32_t	__dr0;
    171 	uint32_t	__dr1;
    172 	uint32_t	__dr2;
    173 	uint32_t	__dr3;
    174 	uint32_t	__dr4;
    175 	uint32_t	__dr5;
    176 	uint32_t	__dr6;
    177 	uint32_t	__dr7;
    178 } __i386_debug_state_t;
    179 
    180 #endif
    181