Home | History | Annotate | Download | only in x86_64
      1 //===-- MachRegisterStatesX86_64.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 __MachRegisterStatesX86_64_h__
     15 #define __MachRegisterStatesX86_64_h__
     16 
     17 #include <inttypes.h>
     18 
     19 #define __x86_64_THREAD_STATE       4
     20 #define __x86_64_FLOAT_STATE        5
     21 #define __x86_64_EXCEPTION_STATE    6
     22 #define __x86_64_DEBUG_STATE        11
     23 #define __x86_64_AVX_STATE          17
     24 
     25 typedef struct {
     26     uint64_t    __rax;
     27     uint64_t    __rbx;
     28     uint64_t    __rcx;
     29     uint64_t    __rdx;
     30     uint64_t    __rdi;
     31     uint64_t    __rsi;
     32     uint64_t    __rbp;
     33     uint64_t    __rsp;
     34     uint64_t    __r8;
     35     uint64_t    __r9;
     36     uint64_t    __r10;
     37     uint64_t    __r11;
     38     uint64_t    __r12;
     39     uint64_t    __r13;
     40     uint64_t    __r14;
     41     uint64_t    __r15;
     42     uint64_t    __rip;
     43     uint64_t    __rflags;
     44     uint64_t    __cs;
     45     uint64_t    __fs;
     46     uint64_t    __gs;
     47 } __x86_64_thread_state_t;
     48 
     49 typedef struct {
     50     uint16_t    __invalid   : 1;
     51     uint16_t    __denorm    : 1;
     52     uint16_t    __zdiv      : 1;
     53     uint16_t    __ovrfl     : 1;
     54     uint16_t    __undfl     : 1;
     55     uint16_t    __precis    : 1;
     56     uint16_t    __PAD1      : 2;
     57     uint16_t    __pc        : 2;
     58     uint16_t    __rc        : 2;
     59     uint16_t    __PAD2      : 1;
     60     uint16_t    __PAD3      : 3;
     61 } __x86_64_fp_control_t;
     62 
     63 typedef struct {
     64     uint16_t    __invalid   : 1;
     65     uint16_t    __denorm    : 1;
     66     uint16_t    __zdiv      : 1;
     67     uint16_t    __ovrfl     : 1;
     68     uint16_t    __undfl     : 1;
     69     uint16_t    __precis    : 1;
     70     uint16_t    __stkflt    : 1;
     71     uint16_t    __errsumm   : 1;
     72     uint16_t    __c0        : 1;
     73     uint16_t    __c1        : 1;
     74     uint16_t    __c2        : 1;
     75     uint16_t    __tos       : 3;
     76     uint16_t    __c3        : 1;
     77     uint16_t    __busy      : 1;
     78 } __x86_64_fp_status_t;
     79 
     80 typedef struct {
     81     uint8_t     __mmst_reg[10];
     82     uint8_t     __mmst_rsrv[6];
     83 } __x86_64_mmst_reg;
     84 
     85 typedef struct {
     86     uint8_t     __xmm_reg[16];
     87 } __x86_64_xmm_reg;
     88 
     89 typedef struct {
     90     int32_t                 __fpu_reserved[2];
     91     __x86_64_fp_control_t   __fpu_fcw;
     92     __x86_64_fp_status_t    __fpu_fsw;
     93     uint8_t                 __fpu_ftw;
     94     uint8_t                 __fpu_rsrv1;
     95     uint16_t                __fpu_fop;
     96     uint32_t                __fpu_ip;
     97     uint16_t                __fpu_cs;
     98     uint16_t                __fpu_rsrv2;
     99     uint32_t                __fpu_dp;
    100     uint16_t                __fpu_ds;
    101     uint16_t                __fpu_rsrv3;
    102     uint32_t                __fpu_mxcsr;
    103     uint32_t                __fpu_mxcsrmask;
    104     __x86_64_mmst_reg       __fpu_stmm0;
    105     __x86_64_mmst_reg       __fpu_stmm1;
    106     __x86_64_mmst_reg       __fpu_stmm2;
    107     __x86_64_mmst_reg       __fpu_stmm3;
    108     __x86_64_mmst_reg       __fpu_stmm4;
    109     __x86_64_mmst_reg       __fpu_stmm5;
    110     __x86_64_mmst_reg       __fpu_stmm6;
    111     __x86_64_mmst_reg       __fpu_stmm7;
    112     __x86_64_xmm_reg        __fpu_xmm0;
    113     __x86_64_xmm_reg        __fpu_xmm1;
    114     __x86_64_xmm_reg        __fpu_xmm2;
    115     __x86_64_xmm_reg        __fpu_xmm3;
    116     __x86_64_xmm_reg        __fpu_xmm4;
    117     __x86_64_xmm_reg        __fpu_xmm5;
    118     __x86_64_xmm_reg        __fpu_xmm6;
    119     __x86_64_xmm_reg        __fpu_xmm7;
    120     __x86_64_xmm_reg        __fpu_xmm8;
    121     __x86_64_xmm_reg        __fpu_xmm9;
    122     __x86_64_xmm_reg        __fpu_xmm10;
    123     __x86_64_xmm_reg        __fpu_xmm11;
    124     __x86_64_xmm_reg        __fpu_xmm12;
    125     __x86_64_xmm_reg        __fpu_xmm13;
    126     __x86_64_xmm_reg        __fpu_xmm14;
    127     __x86_64_xmm_reg        __fpu_xmm15;
    128     uint8_t                 __fpu_rsrv4[6*16];
    129     int32_t                 __fpu_reserved1;
    130 } __x86_64_float_state_t;
    131 
    132 typedef struct {
    133     uint32_t                __fpu_reserved[2];
    134     __x86_64_fp_control_t   __fpu_fcw;
    135     __x86_64_fp_status_t    __fpu_fsw;
    136     uint8_t                 __fpu_ftw;
    137     uint8_t                 __fpu_rsrv1;
    138     uint16_t                __fpu_fop;
    139     uint32_t                __fpu_ip;
    140     uint16_t                __fpu_cs;
    141     uint16_t                __fpu_rsrv2;
    142     uint32_t                __fpu_dp;
    143     uint16_t                __fpu_ds;
    144     uint16_t                __fpu_rsrv3;
    145     uint32_t                __fpu_mxcsr;
    146     uint32_t                __fpu_mxcsrmask;
    147     __x86_64_mmst_reg       __fpu_stmm0;
    148     __x86_64_mmst_reg       __fpu_stmm1;
    149     __x86_64_mmst_reg       __fpu_stmm2;
    150     __x86_64_mmst_reg       __fpu_stmm3;
    151     __x86_64_mmst_reg       __fpu_stmm4;
    152     __x86_64_mmst_reg       __fpu_stmm5;
    153     __x86_64_mmst_reg       __fpu_stmm6;
    154     __x86_64_mmst_reg       __fpu_stmm7;
    155     __x86_64_xmm_reg        __fpu_xmm0;
    156     __x86_64_xmm_reg        __fpu_xmm1;
    157     __x86_64_xmm_reg        __fpu_xmm2;
    158     __x86_64_xmm_reg        __fpu_xmm3;
    159     __x86_64_xmm_reg        __fpu_xmm4;
    160     __x86_64_xmm_reg        __fpu_xmm5;
    161     __x86_64_xmm_reg        __fpu_xmm6;
    162     __x86_64_xmm_reg        __fpu_xmm7;
    163     __x86_64_xmm_reg        __fpu_xmm8;
    164     __x86_64_xmm_reg        __fpu_xmm9;
    165     __x86_64_xmm_reg        __fpu_xmm10;
    166     __x86_64_xmm_reg        __fpu_xmm11;
    167     __x86_64_xmm_reg        __fpu_xmm12;
    168     __x86_64_xmm_reg        __fpu_xmm13;
    169     __x86_64_xmm_reg        __fpu_xmm14;
    170     __x86_64_xmm_reg        __fpu_xmm15;
    171     uint8_t                 __fpu_rsrv4[6*16];
    172     uint32_t                __fpu_reserved1;
    173     uint8_t                 __avx_reserved1[64];
    174     __x86_64_xmm_reg        __fpu_ymmh0;
    175     __x86_64_xmm_reg        __fpu_ymmh1;
    176     __x86_64_xmm_reg        __fpu_ymmh2;
    177     __x86_64_xmm_reg        __fpu_ymmh3;
    178     __x86_64_xmm_reg        __fpu_ymmh4;
    179     __x86_64_xmm_reg        __fpu_ymmh5;
    180     __x86_64_xmm_reg        __fpu_ymmh6;
    181     __x86_64_xmm_reg        __fpu_ymmh7;
    182     __x86_64_xmm_reg        __fpu_ymmh8;
    183     __x86_64_xmm_reg        __fpu_ymmh9;
    184     __x86_64_xmm_reg        __fpu_ymmh10;
    185     __x86_64_xmm_reg        __fpu_ymmh11;
    186     __x86_64_xmm_reg        __fpu_ymmh12;
    187     __x86_64_xmm_reg        __fpu_ymmh13;
    188     __x86_64_xmm_reg        __fpu_ymmh14;
    189     __x86_64_xmm_reg        __fpu_ymmh15;
    190 } __x86_64_avx_state_t;
    191 
    192 typedef struct {
    193     uint32_t    __trapno;
    194     uint32_t    __err;
    195     uint64_t    __faultvaddr;
    196 } __x86_64_exception_state_t;
    197 
    198 
    199 typedef struct {
    200 	uint64_t	__dr0;
    201 	uint64_t	__dr1;
    202 	uint64_t	__dr2;
    203 	uint64_t	__dr3;
    204 	uint64_t	__dr4;
    205 	uint64_t	__dr5;
    206 	uint64_t	__dr6;
    207 	uint64_t	__dr7;
    208 } __x86_64_debug_state_t;
    209 
    210 #endif
    211