File: /usr/include/mach/i386/_structs.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: /*
       2:  * Copyright (c) 2004-2006 Apple Computer, Inc. All rights reserved.
       3:  *
       4:  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
       5:  * 
       6:  * This file contains Original Code and/or Modifications of Original Code
       7:  * as defined in and that are subject to the Apple Public Source License
       8:  * Version 2.0 (the 'License'). You may not use this file except in
       9:  * compliance with the License. The rights granted to you under the License
      10:  * may not be used to create, or enable the creation or redistribution of,
      11:  * unlawful or unlicensed copies of an Apple operating system, or to
      12:  * circumvent, violate, or enable the circumvention or violation of, any
      13:  * terms of an Apple operating system software license agreement.
      14:  * 
      15:  * Please obtain a copy of the License at
      16:  * http://www.opensource.apple.com/apsl/ and read it before using this file.
      17:  * 
      18:  * The Original Code and all software distributed under the License are
      19:  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
      20:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
      21:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
      22:  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
      23:  * Please see the License for the specific language governing rights and
      24:  * limitations under the License.
      25:  * 
      26:  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
      27:  */
      28: /*
      29:  * @OSF_COPYRIGHT@
      30:  */
      31: 
      32: #ifndef    _MACH_I386__STRUCTS_H_
      33: #define    _MACH_I386__STRUCTS_H_
      34: 
      35: /*
      36:  * i386 is the structure that is exported to user threads for 
      37:  * use in status/mutate calls.  This structure should never change.
      38:  *
      39:  */
      40: 
      41: #if __DARWIN_UNIX03
      42: #define    _STRUCT_X86_THREAD_STATE32    struct __darwin_i386_thread_state
      43: _STRUCT_X86_THREAD_STATE32
      44: {
      45:     unsigned int    __eax;
      46:     unsigned int    __ebx;
      47:     unsigned int    __ecx;
      48:     unsigned int    __edx;
      49:     unsigned int    __edi;
      50:     unsigned int    __esi;
      51:     unsigned int    __ebp;
      52:     unsigned int    __esp;
      53:     unsigned int    __ss;
      54:     unsigned int    __eflags;
      55:     unsigned int    __eip;
      56:     unsigned int    __cs;
      57:     unsigned int    __ds;
      58:     unsigned int    __es;
      59:     unsigned int    __fs;
      60:     unsigned int    __gs;
      61: };
      62: #else /* !__DARWIN_UNIX03 */
      63: #define    _STRUCT_X86_THREAD_STATE32    struct i386_thread_state
      64: _STRUCT_X86_THREAD_STATE32
      65: {
      66:     unsigned int    eax;
      67:     unsigned int    ebx;
      68:     unsigned int    ecx;
      69:     unsigned int    edx;
      70:     unsigned int    edi;
      71:     unsigned int    esi;
      72:     unsigned int    ebp;
      73:     unsigned int    esp;
      74:     unsigned int    ss;
      75:     unsigned int    eflags;
      76:     unsigned int    eip;
      77:     unsigned int    cs;
      78:     unsigned int    ds;
      79:     unsigned int    es;
      80:     unsigned int    fs;
      81:     unsigned int    gs;
      82: };
      83: #endif /* !__DARWIN_UNIX03 */
      84: 
      85: /* This structure should be double-word aligned for performance */
      86: 
      87: #if __DARWIN_UNIX03
      88: #define _STRUCT_FP_CONTROL    struct __darwin_fp_control
      89: _STRUCT_FP_CONTROL
      90: {
      91:     unsigned short        __invalid    :1,
      92:                     __denorm    :1,
      93:                 __zdiv        :1,
      94:                 __ovrfl        :1,
      95:                 __undfl        :1,
      96:                 __precis    :1,
      97:                         :2,
      98:                 __pc        :2,
      99: #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
     100: #define FP_PREC_24B        0
     101: #define    FP_PREC_53B        2
     102: #define FP_PREC_64B        3
     103: #endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */
     104:                 __rc        :2,
     105: #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
     106: #define FP_RND_NEAR        0
     107: #define FP_RND_DOWN        1
     108: #define FP_RND_UP        2
     109: #define FP_CHOP            3
     110: #endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */
     111:                     /*inf*/    :1,
     112:                         :3;
     113: };
     114: typedef _STRUCT_FP_CONTROL    __darwin_fp_control_t;
     115: #else /* !__DARWIN_UNIX03 */
     116: #define _STRUCT_FP_CONTROL    struct fp_control
     117: _STRUCT_FP_CONTROL
     118: {
     119:     unsigned short        invalid    :1,
     120:                     denorm    :1,
     121:                 zdiv    :1,
     122:                 ovrfl    :1,
     123:                 undfl    :1,
     124:                 precis    :1,
     125:                     :2,
     126:                 pc    :2,
     127: #define FP_PREC_24B        0
     128: #define    FP_PREC_53B        2
     129: #define FP_PREC_64B        3
     130:                 rc    :2,
     131: #define FP_RND_NEAR        0
     132: #define FP_RND_DOWN        1
     133: #define FP_RND_UP        2
     134: #define FP_CHOP            3
     135:                 /*inf*/    :1,
     136:                     :3;
     137: };
     138: typedef _STRUCT_FP_CONTROL    fp_control_t;
     139: #endif /* !__DARWIN_UNIX03 */
     140: 
     141: /*
     142:  * Status word.
     143:  */
     144: 
     145: #if __DARWIN_UNIX03
     146: #define _STRUCT_FP_STATUS    struct __darwin_fp_status
     147: _STRUCT_FP_STATUS
     148: {
     149:     unsigned short        __invalid    :1,
     150:                     __denorm    :1,
     151:                 __zdiv        :1,
     152:                 __ovrfl        :1,
     153:                 __undfl        :1,
     154:                 __precis    :1,
     155:                 __stkflt    :1,
     156:                 __errsumm    :1,
     157:                 __c0        :1,
     158:                 __c1        :1,
     159:                 __c2        :1,
     160:                 __tos        :3,
     161:                 __c3        :1,
     162:                 __busy        :1;
     163: };
     164: typedef _STRUCT_FP_STATUS    __darwin_fp_status_t;
     165: #else /* !__DARWIN_UNIX03 */
     166: #define _STRUCT_FP_STATUS    struct fp_status
     167: _STRUCT_FP_STATUS
     168: {
     169:     unsigned short        invalid    :1,
     170:                     denorm    :1,
     171:                 zdiv    :1,
     172:                 ovrfl    :1,
     173:                 undfl    :1,
     174:                 precis    :1,
     175:                 stkflt    :1,
     176:                 errsumm    :1,
     177:                 c0    :1,
     178:                 c1    :1,
     179:                 c2    :1,
     180:                 tos    :3,
     181:                 c3    :1,
     182:                 busy    :1;
     183: };
     184: typedef _STRUCT_FP_STATUS    fp_status_t;
     185: #endif /* !__DARWIN_UNIX03 */
     186:                 
     187: /* defn of 80bit x87 FPU or MMX register  */
     188: 
     189: #if __DARWIN_UNIX03
     190: #define _STRUCT_MMST_REG    struct __darwin_mmst_reg
     191: _STRUCT_MMST_REG
     192: {
     193:     char    __mmst_reg[10];
     194:     char    __mmst_rsrv[6];
     195: };
     196: #else /* !__DARWIN_UNIX03 */
     197: #define _STRUCT_MMST_REG    struct mmst_reg
     198: _STRUCT_MMST_REG
     199: {
     200:     char    mmst_reg[10];
     201:     char    mmst_rsrv[6];
     202: };
     203: #endif /* !__DARWIN_UNIX03 */
     204: 
     205: 
     206: /* defn of 128 bit XMM regs */
     207: 
     208: #if __DARWIN_UNIX03
     209: #define _STRUCT_XMM_REG        struct __darwin_xmm_reg
     210: _STRUCT_XMM_REG
     211: {
     212:     char        __xmm_reg[16];
     213: };
     214: #else /* !__DARWIN_UNIX03 */
     215: #define _STRUCT_XMM_REG        struct xmm_reg
     216: _STRUCT_XMM_REG
     217: {
     218:     char        xmm_reg[16];
     219: };
     220: #endif /* !__DARWIN_UNIX03 */
     221: 
     222: /* 
     223:  * Floating point state.
     224:  */
     225: 
     226: #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
     227: #define FP_STATE_BYTES        512    /* number of chars worth of data from fpu_fcw */
     228: #endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */
     229: 
     230: #if __DARWIN_UNIX03
     231: #define    _STRUCT_X86_FLOAT_STATE32    struct __darwin_i386_float_state
     232: _STRUCT_X86_FLOAT_STATE32
     233: {
     234:     int             __fpu_reserved[2];
     235:     _STRUCT_FP_CONTROL    __fpu_fcw;        /* x87 FPU control word */
     236:     _STRUCT_FP_STATUS    __fpu_fsw;        /* x87 FPU status word */
     237:     __uint8_t        __fpu_ftw;        /* x87 FPU tag word */
     238:     __uint8_t        __fpu_rsrv1;        /* reserved */ 
     239:     __uint16_t        __fpu_fop;        /* x87 FPU Opcode */
     240:     __uint32_t        __fpu_ip;        /* x87 FPU Instruction Pointer offset */
     241:     __uint16_t        __fpu_cs;        /* x87 FPU Instruction Pointer Selector */
     242:     __uint16_t        __fpu_rsrv2;        /* reserved */
     243:     __uint32_t        __fpu_dp;        /* x87 FPU Instruction Operand(Data) Pointer offset */
     244:     __uint16_t        __fpu_ds;        /* x87 FPU Instruction Operand(Data) Pointer Selector */
     245:     __uint16_t        __fpu_rsrv3;        /* reserved */
     246:     __uint32_t        __fpu_mxcsr;        /* MXCSR Register state */
     247:     __uint32_t        __fpu_mxcsrmask;    /* MXCSR mask */
     248:     _STRUCT_MMST_REG    __fpu_stmm0;        /* ST0/MM0   */
     249:     _STRUCT_MMST_REG    __fpu_stmm1;        /* ST1/MM1  */
     250:     _STRUCT_MMST_REG    __fpu_stmm2;        /* ST2/MM2  */
     251:     _STRUCT_MMST_REG    __fpu_stmm3;        /* ST3/MM3  */
     252:     _STRUCT_MMST_REG    __fpu_stmm4;        /* ST4/MM4  */
     253:     _STRUCT_MMST_REG    __fpu_stmm5;        /* ST5/MM5  */
     254:     _STRUCT_MMST_REG    __fpu_stmm6;        /* ST6/MM6  */
     255:     _STRUCT_MMST_REG    __fpu_stmm7;        /* ST7/MM7  */
     256:     _STRUCT_XMM_REG        __fpu_xmm0;        /* XMM 0  */
     257:     _STRUCT_XMM_REG        __fpu_xmm1;        /* XMM 1  */
     258:     _STRUCT_XMM_REG        __fpu_xmm2;        /* XMM 2  */
     259:     _STRUCT_XMM_REG        __fpu_xmm3;        /* XMM 3  */
     260:     _STRUCT_XMM_REG        __fpu_xmm4;        /* XMM 4  */
     261:     _STRUCT_XMM_REG        __fpu_xmm5;        /* XMM 5  */
     262:     _STRUCT_XMM_REG        __fpu_xmm6;        /* XMM 6  */
     263:     _STRUCT_XMM_REG        __fpu_xmm7;        /* XMM 7  */
     264:     char            __fpu_rsrv4[14*16];    /* reserved */
     265:     int             __fpu_reserved1;
     266: };
     267: 
     268: #define    _STRUCT_X86_AVX_STATE32    struct __darwin_i386_avx_state
     269: _STRUCT_X86_AVX_STATE32
     270: {
     271:     int             __fpu_reserved[2];
     272:     _STRUCT_FP_CONTROL    __fpu_fcw;        /* x87 FPU control word */
     273:     _STRUCT_FP_STATUS    __fpu_fsw;        /* x87 FPU status word */
     274:     __uint8_t        __fpu_ftw;        /* x87 FPU tag word */
     275:     __uint8_t        __fpu_rsrv1;        /* reserved */ 
     276:     __uint16_t        __fpu_fop;        /* x87 FPU Opcode */
     277:     __uint32_t        __fpu_ip;        /* x87 FPU Instruction Pointer offset */
     278:     __uint16_t        __fpu_cs;        /* x87 FPU Instruction Pointer Selector */
     279:     __uint16_t        __fpu_rsrv2;        /* reserved */
     280:     __uint32_t        __fpu_dp;        /* x87 FPU Instruction Operand(Data) Pointer offset */
     281:     __uint16_t        __fpu_ds;        /* x87 FPU Instruction Operand(Data) Pointer Selector */
     282:     __uint16_t        __fpu_rsrv3;        /* reserved */
     283:     __uint32_t        __fpu_mxcsr;        /* MXCSR Register state */
     284:     __uint32_t        __fpu_mxcsrmask;    /* MXCSR mask */
     285:     _STRUCT_MMST_REG    __fpu_stmm0;        /* ST0/MM0   */
     286:     _STRUCT_MMST_REG    __fpu_stmm1;        /* ST1/MM1  */
     287:     _STRUCT_MMST_REG    __fpu_stmm2;        /* ST2/MM2  */
     288:     _STRUCT_MMST_REG    __fpu_stmm3;        /* ST3/MM3  */
     289:     _STRUCT_MMST_REG    __fpu_stmm4;        /* ST4/MM4  */
     290:     _STRUCT_MMST_REG    __fpu_stmm5;        /* ST5/MM5  */
     291:     _STRUCT_MMST_REG    __fpu_stmm6;        /* ST6/MM6  */
     292:     _STRUCT_MMST_REG    __fpu_stmm7;        /* ST7/MM7  */
     293:     _STRUCT_XMM_REG        __fpu_xmm0;        /* XMM 0  */
     294:     _STRUCT_XMM_REG        __fpu_xmm1;        /* XMM 1  */
     295:     _STRUCT_XMM_REG        __fpu_xmm2;        /* XMM 2  */
     296:     _STRUCT_XMM_REG        __fpu_xmm3;        /* XMM 3  */
     297:     _STRUCT_XMM_REG        __fpu_xmm4;        /* XMM 4  */
     298:     _STRUCT_XMM_REG        __fpu_xmm5;        /* XMM 5  */
     299:     _STRUCT_XMM_REG        __fpu_xmm6;        /* XMM 6  */
     300:     _STRUCT_XMM_REG        __fpu_xmm7;        /* XMM 7  */
     301:     char            __fpu_rsrv4[14*16];    /* reserved */
     302:     int             __fpu_reserved1;
     303:     char            __avx_reserved1[64];
     304:     _STRUCT_XMM_REG        __fpu_ymmh0;        /* YMMH 0  */
     305:     _STRUCT_XMM_REG        __fpu_ymmh1;        /* YMMH 1  */
     306:     _STRUCT_XMM_REG        __fpu_ymmh2;        /* YMMH 2  */
     307:     _STRUCT_XMM_REG        __fpu_ymmh3;        /* YMMH 3  */
     308:     _STRUCT_XMM_REG        __fpu_ymmh4;        /* YMMH 4  */
     309:     _STRUCT_XMM_REG        __fpu_ymmh5;        /* YMMH 5  */
     310:     _STRUCT_XMM_REG        __fpu_ymmh6;        /* YMMH 6  */
     311:     _STRUCT_XMM_REG        __fpu_ymmh7;        /* YMMH 7  */
     312: };
     313: 
     314: #else /* !__DARWIN_UNIX03 */
     315: #define    _STRUCT_X86_FLOAT_STATE32    struct i386_float_state
     316: _STRUCT_X86_FLOAT_STATE32
     317: {
     318:     int             fpu_reserved[2];
     319:     _STRUCT_FP_CONTROL    fpu_fcw;        /* x87 FPU control word */
     320:     _STRUCT_FP_STATUS    fpu_fsw;        /* x87 FPU status word */
     321:     __uint8_t        fpu_ftw;        /* x87 FPU tag word */
     322:     __uint8_t        fpu_rsrv1;        /* reserved */ 
     323:     __uint16_t        fpu_fop;        /* x87 FPU Opcode */
     324:     __uint32_t        fpu_ip;            /* x87 FPU Instruction Pointer offset */
     325:     __uint16_t        fpu_cs;            /* x87 FPU Instruction Pointer Selector */
     326:     __uint16_t        fpu_rsrv2;        /* reserved */
     327:     __uint32_t        fpu_dp;            /* x87 FPU Instruction Operand(Data) Pointer offset */
     328:     __uint16_t        fpu_ds;            /* x87 FPU Instruction Operand(Data) Pointer Selector */
     329:     __uint16_t        fpu_rsrv3;        /* reserved */
     330:     __uint32_t        fpu_mxcsr;        /* MXCSR Register state */
     331:     __uint32_t        fpu_mxcsrmask;        /* MXCSR mask */
     332:     _STRUCT_MMST_REG    fpu_stmm0;        /* ST0/MM0   */
     333:     _STRUCT_MMST_REG    fpu_stmm1;        /* ST1/MM1  */
     334:     _STRUCT_MMST_REG    fpu_stmm2;        /* ST2/MM2  */
     335:     _STRUCT_MMST_REG    fpu_stmm3;        /* ST3/MM3  */
     336:     _STRUCT_MMST_REG    fpu_stmm4;        /* ST4/MM4  */
     337:     _STRUCT_MMST_REG    fpu_stmm5;        /* ST5/MM5  */
     338:     _STRUCT_MMST_REG    fpu_stmm6;        /* ST6/MM6  */
     339:     _STRUCT_MMST_REG    fpu_stmm7;        /* ST7/MM7  */
     340:     _STRUCT_XMM_REG        fpu_xmm0;        /* XMM 0  */
     341:     _STRUCT_XMM_REG        fpu_xmm1;        /* XMM 1  */
     342:     _STRUCT_XMM_REG        fpu_xmm2;        /* XMM 2  */
     343:     _STRUCT_XMM_REG        fpu_xmm3;        /* XMM 3  */
     344:     _STRUCT_XMM_REG        fpu_xmm4;        /* XMM 4  */
     345:     _STRUCT_XMM_REG        fpu_xmm5;        /* XMM 5  */
     346:     _STRUCT_XMM_REG        fpu_xmm6;        /* XMM 6  */
     347:     _STRUCT_XMM_REG        fpu_xmm7;        /* XMM 7  */
     348:     char            fpu_rsrv4[14*16];    /* reserved */
     349:     int             fpu_reserved1;
     350: };
     351: 
     352: #define    _STRUCT_X86_AVX_STATE32    struct i386_avx_state
     353: _STRUCT_X86_AVX_STATE32
     354: {
     355:     int             fpu_reserved[2];
     356:     _STRUCT_FP_CONTROL    fpu_fcw;        /* x87 FPU control word */
     357:     _STRUCT_FP_STATUS    fpu_fsw;        /* x87 FPU status word */
     358:     __uint8_t        fpu_ftw;        /* x87 FPU tag word */
     359:     __uint8_t        fpu_rsrv1;        /* reserved */ 
     360:     __uint16_t        fpu_fop;        /* x87 FPU Opcode */
     361:     __uint32_t        fpu_ip;            /* x87 FPU Instruction Pointer offset */
     362:     __uint16_t        fpu_cs;            /* x87 FPU Instruction Pointer Selector */
     363:     __uint16_t        fpu_rsrv2;        /* reserved */
     364:     __uint32_t        fpu_dp;            /* x87 FPU Instruction Operand(Data) Pointer offset */
     365:     __uint16_t        fpu_ds;            /* x87 FPU Instruction Operand(Data) Pointer Selector */
     366:     __uint16_t        fpu_rsrv3;        /* reserved */
     367:     __uint32_t        fpu_mxcsr;        /* MXCSR Register state */
     368:     __uint32_t        fpu_mxcsrmask;        /* MXCSR mask */
     369:     _STRUCT_MMST_REG    fpu_stmm0;        /* ST0/MM0   */
     370:     _STRUCT_MMST_REG    fpu_stmm1;        /* ST1/MM1  */
     371:     _STRUCT_MMST_REG    fpu_stmm2;        /* ST2/MM2  */
     372:     _STRUCT_MMST_REG    fpu_stmm3;        /* ST3/MM3  */
     373:     _STRUCT_MMST_REG    fpu_stmm4;        /* ST4/MM4  */
     374:     _STRUCT_MMST_REG    fpu_stmm5;        /* ST5/MM5  */
     375:     _STRUCT_MMST_REG    fpu_stmm6;        /* ST6/MM6  */
     376:     _STRUCT_MMST_REG    fpu_stmm7;        /* ST7/MM7  */
     377:     _STRUCT_XMM_REG        fpu_xmm0;        /* XMM 0  */
     378:     _STRUCT_XMM_REG        fpu_xmm1;        /* XMM 1  */
     379:     _STRUCT_XMM_REG        fpu_xmm2;        /* XMM 2  */
     380:     _STRUCT_XMM_REG        fpu_xmm3;        /* XMM 3  */
     381:     _STRUCT_XMM_REG        fpu_xmm4;        /* XMM 4  */
     382:     _STRUCT_XMM_REG        fpu_xmm5;        /* XMM 5  */
     383:     _STRUCT_XMM_REG        fpu_xmm6;        /* XMM 6  */
     384:     _STRUCT_XMM_REG        fpu_xmm7;        /* XMM 7  */
     385:     char            fpu_rsrv4[14*16];    /* reserved */
     386:     int             fpu_reserved1;
     387:     char            __avx_reserved1[64];
     388:     _STRUCT_XMM_REG        __fpu_ymmh0;        /* YMMH 0  */
     389:     _STRUCT_XMM_REG        __fpu_ymmh1;        /* YMMH 1  */
     390:     _STRUCT_XMM_REG        __fpu_ymmh2;        /* YMMH 2  */
     391:     _STRUCT_XMM_REG        __fpu_ymmh3;        /* YMMH 3  */
     392:     _STRUCT_XMM_REG        __fpu_ymmh4;        /* YMMH 4  */
     393:     _STRUCT_XMM_REG        __fpu_ymmh5;        /* YMMH 5  */
     394:     _STRUCT_XMM_REG        __fpu_ymmh6;        /* YMMH 6  */
     395:     _STRUCT_XMM_REG        __fpu_ymmh7;        /* YMMH 7  */
     396: };
     397: 
     398: #endif /* !__DARWIN_UNIX03 */
     399: 
     400: #if __DARWIN_UNIX03
     401: #define _STRUCT_X86_EXCEPTION_STATE32    struct __darwin_i386_exception_state
     402: _STRUCT_X86_EXCEPTION_STATE32
     403: {
     404:     __uint16_t    __trapno;
     405:     __uint16_t    __cpu;
     406:     __uint32_t    __err;
     407:     __uint32_t    __faultvaddr;
     408: };
     409: #else /* !__DARWIN_UNIX03 */
     410: #define _STRUCT_X86_EXCEPTION_STATE32    struct i386_exception_state
     411: _STRUCT_X86_EXCEPTION_STATE32
     412: {
     413:     __uint16_t    trapno;
     414:     __uint16_t    cpu;
     415:     __uint32_t    err;
     416:     __uint32_t    faultvaddr;
     417: };
     418: #endif /* !__DARWIN_UNIX03 */
     419: 
     420: #if __DARWIN_UNIX03
     421: #define _STRUCT_X86_DEBUG_STATE32    struct __darwin_x86_debug_state32
     422: _STRUCT_X86_DEBUG_STATE32
     423: {
     424:     unsigned int    __dr0;
     425:     unsigned int    __dr1;
     426:     unsigned int    __dr2;
     427:     unsigned int    __dr3;
     428:     unsigned int    __dr4;
     429:     unsigned int    __dr5;
     430:     unsigned int    __dr6;
     431:     unsigned int    __dr7;
     432: };
     433: #else /* !__DARWIN_UNIX03 */
     434: #define _STRUCT_X86_DEBUG_STATE32    struct x86_debug_state32
     435: _STRUCT_X86_DEBUG_STATE32
     436: {
     437:     unsigned int    dr0;
     438:     unsigned int    dr1;
     439:     unsigned int    dr2;
     440:     unsigned int    dr3;
     441:     unsigned int    dr4;
     442:     unsigned int    dr5;
     443:     unsigned int    dr6;
     444:     unsigned int    dr7;
     445: };
     446: #endif /* !__DARWIN_UNIX03 */
     447: 
     448: /*
     449:  * 64 bit versions of the above
     450:  */
     451: 
     452: #if __DARWIN_UNIX03
     453: #define    _STRUCT_X86_THREAD_STATE64    struct __darwin_x86_thread_state64
     454: _STRUCT_X86_THREAD_STATE64
     455: {
     456:     __uint64_t    __rax;
     457:     __uint64_t    __rbx;
     458:     __uint64_t    __rcx;
     459:     __uint64_t    __rdx;
     460:     __uint64_t    __rdi;
     461:     __uint64_t    __rsi;
     462:     __uint64_t    __rbp;
     463:     __uint64_t    __rsp;
     464:     __uint64_t    __r8;
     465:     __uint64_t    __r9;
     466:     __uint64_t    __r10;
     467:     __uint64_t    __r11;
     468:     __uint64_t    __r12;
     469:     __uint64_t    __r13;
     470:     __uint64_t    __r14;
     471:     __uint64_t    __r15;
     472:     __uint64_t    __rip;
     473:     __uint64_t    __rflags;
     474:     __uint64_t    __cs;
     475:     __uint64_t    __fs;
     476:     __uint64_t    __gs;
     477: };
     478: #else /* !__DARWIN_UNIX03 */
     479: #define    _STRUCT_X86_THREAD_STATE64    struct x86_thread_state64
     480: _STRUCT_X86_THREAD_STATE64
     481: {
     482:     __uint64_t    rax;
     483:     __uint64_t    rbx;
     484:     __uint64_t    rcx;
     485:     __uint64_t    rdx;
     486:     __uint64_t    rdi;
     487:     __uint64_t    rsi;
     488:     __uint64_t    rbp;
     489:     __uint64_t    rsp;
     490:     __uint64_t    r8;
     491:     __uint64_t    r9;
     492:     __uint64_t    r10;
     493:     __uint64_t    r11;
     494:     __uint64_t    r12;
     495:     __uint64_t    r13;
     496:     __uint64_t    r14;
     497:     __uint64_t    r15;
     498:     __uint64_t    rip;
     499:     __uint64_t    rflags;
     500:     __uint64_t    cs;
     501:     __uint64_t    fs;
     502:     __uint64_t    gs;
     503: };
     504: #endif /* !__DARWIN_UNIX03 */
     505: 
     506: 
     507: #if __DARWIN_UNIX03
     508: #define    _STRUCT_X86_FLOAT_STATE64    struct __darwin_x86_float_state64
     509: _STRUCT_X86_FLOAT_STATE64
     510: {
     511:     int             __fpu_reserved[2];
     512:     _STRUCT_FP_CONTROL    __fpu_fcw;        /* x87 FPU control word */
     513:     _STRUCT_FP_STATUS    __fpu_fsw;        /* x87 FPU status word */
     514:     __uint8_t        __fpu_ftw;        /* x87 FPU tag word */
     515:     __uint8_t        __fpu_rsrv1;        /* reserved */ 
     516:     __uint16_t        __fpu_fop;        /* x87 FPU Opcode */
     517: 
     518:     /* x87 FPU Instruction Pointer */
     519:     __uint32_t        __fpu_ip;        /* offset */
     520:     __uint16_t        __fpu_cs;        /* Selector */
     521: 
     522:     __uint16_t        __fpu_rsrv2;        /* reserved */
     523: 
     524:     /* x87 FPU Instruction Operand(Data) Pointer */
     525:     __uint32_t        __fpu_dp;        /* offset */
     526:     __uint16_t        __fpu_ds;        /* Selector */
     527: 
     528:     __uint16_t        __fpu_rsrv3;        /* reserved */
     529:     __uint32_t        __fpu_mxcsr;        /* MXCSR Register state */
     530:     __uint32_t        __fpu_mxcsrmask;    /* MXCSR mask */
     531:     _STRUCT_MMST_REG    __fpu_stmm0;        /* ST0/MM0   */
     532:     _STRUCT_MMST_REG    __fpu_stmm1;        /* ST1/MM1  */
     533:     _STRUCT_MMST_REG    __fpu_stmm2;        /* ST2/MM2  */
     534:     _STRUCT_MMST_REG    __fpu_stmm3;        /* ST3/MM3  */
     535:     _STRUCT_MMST_REG    __fpu_stmm4;        /* ST4/MM4  */
     536:     _STRUCT_MMST_REG    __fpu_stmm5;        /* ST5/MM5  */
     537:     _STRUCT_MMST_REG    __fpu_stmm6;        /* ST6/MM6  */
     538:     _STRUCT_MMST_REG    __fpu_stmm7;        /* ST7/MM7  */
     539:     _STRUCT_XMM_REG        __fpu_xmm0;        /* XMM 0  */
     540:     _STRUCT_XMM_REG        __fpu_xmm1;        /* XMM 1  */
     541:     _STRUCT_XMM_REG        __fpu_xmm2;        /* XMM 2  */
     542:     _STRUCT_XMM_REG        __fpu_xmm3;        /* XMM 3  */
     543:     _STRUCT_XMM_REG        __fpu_xmm4;        /* XMM 4  */
     544:     _STRUCT_XMM_REG        __fpu_xmm5;        /* XMM 5  */
     545:     _STRUCT_XMM_REG        __fpu_xmm6;        /* XMM 6  */
     546:     _STRUCT_XMM_REG        __fpu_xmm7;        /* XMM 7  */
     547:     _STRUCT_XMM_REG        __fpu_xmm8;        /* XMM 8  */
     548:     _STRUCT_XMM_REG        __fpu_xmm9;        /* XMM 9  */
     549:     _STRUCT_XMM_REG        __fpu_xmm10;        /* XMM 10  */
     550:     _STRUCT_XMM_REG        __fpu_xmm11;        /* XMM 11 */
     551:     _STRUCT_XMM_REG        __fpu_xmm12;        /* XMM 12  */
     552:     _STRUCT_XMM_REG        __fpu_xmm13;        /* XMM 13  */
     553:     _STRUCT_XMM_REG        __fpu_xmm14;        /* XMM 14  */
     554:     _STRUCT_XMM_REG        __fpu_xmm15;        /* XMM 15  */
     555:     char            __fpu_rsrv4[6*16];    /* reserved */
     556:     int             __fpu_reserved1;
     557: };
     558: 
     559: #define    _STRUCT_X86_AVX_STATE64    struct __darwin_x86_avx_state64
     560: _STRUCT_X86_AVX_STATE64
     561: {
     562:     int             __fpu_reserved[2];
     563:     _STRUCT_FP_CONTROL    __fpu_fcw;        /* x87 FPU control word */
     564:     _STRUCT_FP_STATUS    __fpu_fsw;        /* x87 FPU status word */
     565:     __uint8_t        __fpu_ftw;        /* x87 FPU tag word */
     566:     __uint8_t        __fpu_rsrv1;        /* reserved */ 
     567:     __uint16_t        __fpu_fop;        /* x87 FPU Opcode */
     568: 
     569:     /* x87 FPU Instruction Pointer */
     570:     __uint32_t        __fpu_ip;        /* offset */
     571:     __uint16_t        __fpu_cs;        /* Selector */
     572: 
     573:     __uint16_t        __fpu_rsrv2;        /* reserved */
     574: 
     575:     /* x87 FPU Instruction Operand(Data) Pointer */
     576:     __uint32_t        __fpu_dp;        /* offset */
     577:     __uint16_t        __fpu_ds;        /* Selector */
     578: 
     579:     __uint16_t        __fpu_rsrv3;        /* reserved */
     580:     __uint32_t        __fpu_mxcsr;        /* MXCSR Register state */
     581:     __uint32_t        __fpu_mxcsrmask;    /* MXCSR mask */
     582:     _STRUCT_MMST_REG    __fpu_stmm0;        /* ST0/MM0   */
     583:     _STRUCT_MMST_REG    __fpu_stmm1;        /* ST1/MM1  */
     584:     _STRUCT_MMST_REG    __fpu_stmm2;        /* ST2/MM2  */
     585:     _STRUCT_MMST_REG    __fpu_stmm3;        /* ST3/MM3  */
     586:     _STRUCT_MMST_REG    __fpu_stmm4;        /* ST4/MM4  */
     587:     _STRUCT_MMST_REG    __fpu_stmm5;        /* ST5/MM5  */
     588:     _STRUCT_MMST_REG    __fpu_stmm6;        /* ST6/MM6  */
     589:     _STRUCT_MMST_REG    __fpu_stmm7;        /* ST7/MM7  */
     590:     _STRUCT_XMM_REG        __fpu_xmm0;        /* XMM 0  */
     591:     _STRUCT_XMM_REG        __fpu_xmm1;        /* XMM 1  */
     592:     _STRUCT_XMM_REG        __fpu_xmm2;        /* XMM 2  */
     593:     _STRUCT_XMM_REG        __fpu_xmm3;        /* XMM 3  */
     594:     _STRUCT_XMM_REG        __fpu_xmm4;        /* XMM 4  */
     595:     _STRUCT_XMM_REG        __fpu_xmm5;        /* XMM 5  */
     596:     _STRUCT_XMM_REG        __fpu_xmm6;        /* XMM 6  */
     597:     _STRUCT_XMM_REG        __fpu_xmm7;        /* XMM 7  */
     598:     _STRUCT_XMM_REG        __fpu_xmm8;        /* XMM 8  */
     599:     _STRUCT_XMM_REG        __fpu_xmm9;        /* XMM 9  */
     600:     _STRUCT_XMM_REG        __fpu_xmm10;        /* XMM 10  */
     601:     _STRUCT_XMM_REG        __fpu_xmm11;        /* XMM 11 */
     602:     _STRUCT_XMM_REG        __fpu_xmm12;        /* XMM 12  */
     603:     _STRUCT_XMM_REG        __fpu_xmm13;        /* XMM 13  */
     604:     _STRUCT_XMM_REG        __fpu_xmm14;        /* XMM 14  */
     605:     _STRUCT_XMM_REG        __fpu_xmm15;        /* XMM 15  */
     606:     char            __fpu_rsrv4[6*16];    /* reserved */
     607:     int             __fpu_reserved1;
     608:     char            __avx_reserved1[64];
     609:     _STRUCT_XMM_REG        __fpu_ymmh0;        /* YMMH 0  */
     610:     _STRUCT_XMM_REG        __fpu_ymmh1;        /* YMMH 1  */
     611:     _STRUCT_XMM_REG        __fpu_ymmh2;        /* YMMH 2  */
     612:     _STRUCT_XMM_REG        __fpu_ymmh3;        /* YMMH 3  */
     613:     _STRUCT_XMM_REG        __fpu_ymmh4;        /* YMMH 4  */
     614:     _STRUCT_XMM_REG        __fpu_ymmh5;        /* YMMH 5  */
     615:     _STRUCT_XMM_REG        __fpu_ymmh6;        /* YMMH 6  */
     616:     _STRUCT_XMM_REG        __fpu_ymmh7;        /* YMMH 7  */
     617:     _STRUCT_XMM_REG        __fpu_ymmh8;        /* YMMH 8  */
     618:     _STRUCT_XMM_REG        __fpu_ymmh9;        /* YMMH 9  */
     619:     _STRUCT_XMM_REG        __fpu_ymmh10;        /* YMMH 10  */
     620:     _STRUCT_XMM_REG        __fpu_ymmh11;        /* YMMH 11  */
     621:     _STRUCT_XMM_REG        __fpu_ymmh12;        /* YMMH 12  */
     622:     _STRUCT_XMM_REG        __fpu_ymmh13;        /* YMMH 13  */
     623:     _STRUCT_XMM_REG        __fpu_ymmh14;        /* YMMH 14  */
     624:     _STRUCT_XMM_REG        __fpu_ymmh15;        /* YMMH 15  */
     625: };
     626: 
     627: #else /* !__DARWIN_UNIX03 */
     628: #define    _STRUCT_X86_FLOAT_STATE64    struct x86_float_state64
     629: _STRUCT_X86_FLOAT_STATE64
     630: {
     631:     int             fpu_reserved[2];
     632:     _STRUCT_FP_CONTROL    fpu_fcw;        /* x87 FPU control word */
     633:     _STRUCT_FP_STATUS    fpu_fsw;        /* x87 FPU status word */
     634:     __uint8_t        fpu_ftw;        /* x87 FPU tag word */
     635:     __uint8_t        fpu_rsrv1;        /* reserved */ 
     636:     __uint16_t        fpu_fop;        /* x87 FPU Opcode */
     637: 
     638:     /* x87 FPU Instruction Pointer */
     639:     __uint32_t        fpu_ip;            /* offset */
     640:     __uint16_t        fpu_cs;            /* Selector */
     641: 
     642:     __uint16_t        fpu_rsrv2;        /* reserved */
     643: 
     644:     /* x87 FPU Instruction Operand(Data) Pointer */
     645:     __uint32_t        fpu_dp;            /* offset */
     646:     __uint16_t        fpu_ds;            /* Selector */
     647: 
     648:     __uint16_t        fpu_rsrv3;        /* reserved */
     649:     __uint32_t        fpu_mxcsr;        /* MXCSR Register state */
     650:     __uint32_t        fpu_mxcsrmask;        /* MXCSR mask */
     651:     _STRUCT_MMST_REG    fpu_stmm0;        /* ST0/MM0   */
     652:     _STRUCT_MMST_REG    fpu_stmm1;        /* ST1/MM1  */
     653:     _STRUCT_MMST_REG    fpu_stmm2;        /* ST2/MM2  */
     654:     _STRUCT_MMST_REG    fpu_stmm3;        /* ST3/MM3  */
     655:     _STRUCT_MMST_REG    fpu_stmm4;        /* ST4/MM4  */
     656:     _STRUCT_MMST_REG    fpu_stmm5;        /* ST5/MM5  */
     657:     _STRUCT_MMST_REG    fpu_stmm6;        /* ST6/MM6  */
     658:     _STRUCT_MMST_REG    fpu_stmm7;        /* ST7/MM7  */
     659:     _STRUCT_XMM_REG        fpu_xmm0;        /* XMM 0  */
     660:     _STRUCT_XMM_REG        fpu_xmm1;        /* XMM 1  */
     661:     _STRUCT_XMM_REG        fpu_xmm2;        /* XMM 2  */
     662:     _STRUCT_XMM_REG        fpu_xmm3;        /* XMM 3  */
     663:     _STRUCT_XMM_REG        fpu_xmm4;        /* XMM 4  */
     664:     _STRUCT_XMM_REG        fpu_xmm5;        /* XMM 5  */
     665:     _STRUCT_XMM_REG        fpu_xmm6;        /* XMM 6  */
     666:     _STRUCT_XMM_REG        fpu_xmm7;        /* XMM 7  */
     667:     _STRUCT_XMM_REG        fpu_xmm8;        /* XMM 8  */
     668:     _STRUCT_XMM_REG        fpu_xmm9;        /* XMM 9  */
     669:     _STRUCT_XMM_REG        fpu_xmm10;        /* XMM 10  */
     670:     _STRUCT_XMM_REG        fpu_xmm11;        /* XMM 11 */
     671:     _STRUCT_XMM_REG        fpu_xmm12;        /* XMM 12  */
     672:     _STRUCT_XMM_REG        fpu_xmm13;        /* XMM 13  */
     673:     _STRUCT_XMM_REG        fpu_xmm14;        /* XMM 14  */
     674:     _STRUCT_XMM_REG        fpu_xmm15;        /* XMM 15  */
     675:     char            fpu_rsrv4[6*16];    /* reserved */
     676:     int             fpu_reserved1;
     677: };
     678: 
     679: #define    _STRUCT_X86_AVX_STATE64    struct x86_avx_state64
     680: _STRUCT_X86_AVX_STATE64
     681: {
     682:     int             fpu_reserved[2];
     683:     _STRUCT_FP_CONTROL    fpu_fcw;        /* x87 FPU control word */
     684:     _STRUCT_FP_STATUS    fpu_fsw;        /* x87 FPU status word */
     685:     __uint8_t        fpu_ftw;        /* x87 FPU tag word */
     686:     __uint8_t        fpu_rsrv1;        /* reserved */ 
     687:     __uint16_t        fpu_fop;        /* x87 FPU Opcode */
     688: 
     689:     /* x87 FPU Instruction Pointer */
     690:     __uint32_t        fpu_ip;            /* offset */
     691:     __uint16_t        fpu_cs;            /* Selector */
     692: 
     693:     __uint16_t        fpu_rsrv2;        /* reserved */
     694: 
     695:     /* x87 FPU Instruction Operand(Data) Pointer */
     696:     __uint32_t        fpu_dp;            /* offset */
     697:     __uint16_t        fpu_ds;            /* Selector */
     698: 
     699:     __uint16_t        fpu_rsrv3;        /* reserved */
     700:     __uint32_t        fpu_mxcsr;        /* MXCSR Register state */
     701:     __uint32_t        fpu_mxcsrmask;        /* MXCSR mask */
     702:     _STRUCT_MMST_REG    fpu_stmm0;        /* ST0/MM0   */
     703:     _STRUCT_MMST_REG    fpu_stmm1;        /* ST1/MM1  */
     704:     _STRUCT_MMST_REG    fpu_stmm2;        /* ST2/MM2  */
     705:     _STRUCT_MMST_REG    fpu_stmm3;        /* ST3/MM3  */
     706:     _STRUCT_MMST_REG    fpu_stmm4;        /* ST4/MM4  */
     707:     _STRUCT_MMST_REG    fpu_stmm5;        /* ST5/MM5  */
     708:     _STRUCT_MMST_REG    fpu_stmm6;        /* ST6/MM6  */
     709:     _STRUCT_MMST_REG    fpu_stmm7;        /* ST7/MM7  */
     710:     _STRUCT_XMM_REG        fpu_xmm0;        /* XMM 0  */
     711:     _STRUCT_XMM_REG        fpu_xmm1;        /* XMM 1  */
     712:     _STRUCT_XMM_REG        fpu_xmm2;        /* XMM 2  */
     713:     _STRUCT_XMM_REG        fpu_xmm3;        /* XMM 3  */
     714:     _STRUCT_XMM_REG        fpu_xmm4;        /* XMM 4  */
     715:     _STRUCT_XMM_REG        fpu_xmm5;        /* XMM 5  */
     716:     _STRUCT_XMM_REG        fpu_xmm6;        /* XMM 6  */
     717:     _STRUCT_XMM_REG        fpu_xmm7;        /* XMM 7  */
     718:     _STRUCT_XMM_REG        fpu_xmm8;        /* XMM 8  */
     719:     _STRUCT_XMM_REG        fpu_xmm9;        /* XMM 9  */
     720:     _STRUCT_XMM_REG        fpu_xmm10;        /* XMM 10  */
     721:     _STRUCT_XMM_REG        fpu_xmm11;        /* XMM 11 */
     722:     _STRUCT_XMM_REG        fpu_xmm12;        /* XMM 12  */
     723:     _STRUCT_XMM_REG        fpu_xmm13;        /* XMM 13  */
     724:     _STRUCT_XMM_REG        fpu_xmm14;        /* XMM 14  */
     725:     _STRUCT_XMM_REG        fpu_xmm15;        /* XMM 15  */
     726:     char            fpu_rsrv4[6*16];    /* reserved */
     727:     int             fpu_reserved1;
     728:     char            __avx_reserved1[64];
     729:     _STRUCT_XMM_REG        __fpu_ymmh0;        /* YMMH 0  */
     730:     _STRUCT_XMM_REG        __fpu_ymmh1;        /* YMMH 1  */
     731:     _STRUCT_XMM_REG        __fpu_ymmh2;        /* YMMH 2  */
     732:     _STRUCT_XMM_REG        __fpu_ymmh3;        /* YMMH 3  */
     733:     _STRUCT_XMM_REG        __fpu_ymmh4;        /* YMMH 4  */
     734:     _STRUCT_XMM_REG        __fpu_ymmh5;        /* YMMH 5  */
     735:     _STRUCT_XMM_REG        __fpu_ymmh6;        /* YMMH 6  */
     736:     _STRUCT_XMM_REG        __fpu_ymmh7;        /* YMMH 7  */
     737:     _STRUCT_XMM_REG        __fpu_ymmh8;        /* YMMH 8  */
     738:     _STRUCT_XMM_REG        __fpu_ymmh9;        /* YMMH 9  */
     739:     _STRUCT_XMM_REG        __fpu_ymmh10;        /* YMMH 10  */
     740:     _STRUCT_XMM_REG        __fpu_ymmh11;        /* YMMH 11  */
     741:     _STRUCT_XMM_REG        __fpu_ymmh12;        /* YMMH 12  */
     742:     _STRUCT_XMM_REG        __fpu_ymmh13;        /* YMMH 13  */
     743:     _STRUCT_XMM_REG        __fpu_ymmh14;        /* YMMH 14  */
     744:     _STRUCT_XMM_REG        __fpu_ymmh15;        /* YMMH 15  */
     745: };
     746: 
     747: #endif /* !__DARWIN_UNIX03 */
     748: 
     749: #if __DARWIN_UNIX03
     750: #define _STRUCT_X86_EXCEPTION_STATE64    struct __darwin_x86_exception_state64
     751: _STRUCT_X86_EXCEPTION_STATE64
     752: {
     753:     __uint16_t    __trapno;
     754:     __uint16_t    __cpu;
     755:     __uint32_t    __err;
     756:     __uint64_t    __faultvaddr;
     757: };
     758: #else /* !__DARWIN_UNIX03 */
     759: #define _STRUCT_X86_EXCEPTION_STATE64    struct x86_exception_state64
     760: _STRUCT_X86_EXCEPTION_STATE64
     761: {
     762:     __uint16_t    trapno;
     763:     __uint16_t    cpu;
     764:     __uint32_t    err;
     765:     __uint64_t    faultvaddr;
     766: };
     767: #endif /* !__DARWIN_UNIX03 */
     768: 
     769: #if __DARWIN_UNIX03
     770: #define _STRUCT_X86_DEBUG_STATE64    struct __darwin_x86_debug_state64
     771: _STRUCT_X86_DEBUG_STATE64
     772: {
     773:     __uint64_t    __dr0;
     774:     __uint64_t    __dr1;
     775:     __uint64_t    __dr2;
     776:     __uint64_t    __dr3;
     777:     __uint64_t    __dr4;
     778:     __uint64_t    __dr5;
     779:     __uint64_t    __dr6;
     780:     __uint64_t    __dr7;
     781: };
     782: #else /* !__DARWIN_UNIX03 */
     783: #define _STRUCT_X86_DEBUG_STATE64    struct x86_debug_state64
     784: _STRUCT_X86_DEBUG_STATE64
     785: {
     786:     __uint64_t    dr0;
     787:     __uint64_t    dr1;
     788:     __uint64_t    dr2;
     789:     __uint64_t    dr3;
     790:     __uint64_t    dr4;
     791:     __uint64_t    dr5;
     792:     __uint64_t    dr6;
     793:     __uint64_t    dr7;
     794: };
     795: #endif /* !__DARWIN_UNIX03 */
     796: 
     797: #endif /* _MACH_I386__STRUCTS_H_ */
     798: