]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/mach/i386/_structs.h
xnu-1228.tar.gz
[apple/xnu.git] / osfmk / mach / i386 / _structs.h
diff --git a/osfmk/mach/i386/_structs.h b/osfmk/mach/i386/_structs.h
new file mode 100644 (file)
index 0000000..927d12f
--- /dev/null
@@ -0,0 +1,561 @@
+/*
+ * Copyright (c) 2004-2006 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ * 
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+
+#ifndef        _MACH_I386__STRUCTS_H_
+#define        _MACH_I386__STRUCTS_H_
+
+/*
+ * i386 is the structure that is exported to user threads for 
+ * use in status/mutate calls.  This structure should never change.
+ *
+ */
+
+#if __DARWIN_UNIX03
+#define        _STRUCT_X86_THREAD_STATE32      struct __darwin_i386_thread_state
+_STRUCT_X86_THREAD_STATE32
+{
+    unsigned int       __eax;
+    unsigned int       __ebx;
+    unsigned int       __ecx;
+    unsigned int       __edx;
+    unsigned int       __edi;
+    unsigned int       __esi;
+    unsigned int       __ebp;
+    unsigned int       __esp;
+    unsigned int       __ss;
+    unsigned int       __eflags;
+    unsigned int       __eip;
+    unsigned int       __cs;
+    unsigned int       __ds;
+    unsigned int       __es;
+    unsigned int       __fs;
+    unsigned int       __gs;
+};
+#else /* !__DARWIN_UNIX03 */
+#define        _STRUCT_X86_THREAD_STATE32      struct i386_thread_state
+_STRUCT_X86_THREAD_STATE32
+{
+    unsigned int       eax;
+    unsigned int       ebx;
+    unsigned int       ecx;
+    unsigned int       edx;
+    unsigned int       edi;
+    unsigned int       esi;
+    unsigned int       ebp;
+    unsigned int       esp;
+    unsigned int       ss;
+    unsigned int       eflags;
+    unsigned int       eip;
+    unsigned int       cs;
+    unsigned int       ds;
+    unsigned int       es;
+    unsigned int       fs;
+    unsigned int       gs;
+};
+#endif /* !__DARWIN_UNIX03 */
+
+/* This structure should be double-word aligned for performance */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_FP_CONTROL     struct __darwin_fp_control
+_STRUCT_FP_CONTROL
+{
+    unsigned short             __invalid       :1,
+                               __denorm        :1,
+                               __zdiv          :1,
+                               __ovrfl         :1,
+                               __undfl         :1,
+                               __precis        :1,
+                                               :2,
+                               __pc            :2,
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define FP_PREC_24B            0
+#define        FP_PREC_53B             2
+#define FP_PREC_64B            3
+#endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */
+                               __rc            :2,
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define FP_RND_NEAR            0
+#define FP_RND_DOWN            1
+#define FP_RND_UP              2
+#define FP_CHOP                        3
+#endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */
+                                       /*inf*/ :1,
+                                               :3;
+};
+typedef _STRUCT_FP_CONTROL     __darwin_fp_control_t;
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_FP_CONTROL     struct fp_control
+_STRUCT_FP_CONTROL
+{
+    unsigned short             invalid :1,
+                               denorm  :1,
+                               zdiv    :1,
+                               ovrfl   :1,
+                               undfl   :1,
+                               precis  :1,
+                                       :2,
+                               pc      :2,
+#define FP_PREC_24B            0
+#define        FP_PREC_53B             2
+#define FP_PREC_64B            3
+                               rc      :2,
+#define FP_RND_NEAR            0
+#define FP_RND_DOWN            1
+#define FP_RND_UP              2
+#define FP_CHOP                        3
+                               /*inf*/ :1,
+                                       :3;
+};
+typedef _STRUCT_FP_CONTROL     fp_control_t;
+#endif /* !__DARWIN_UNIX03 */
+
+/*
+ * Status word.
+ */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_FP_STATUS      struct __darwin_fp_status
+_STRUCT_FP_STATUS
+{
+    unsigned short             __invalid       :1,
+                               __denorm        :1,
+                               __zdiv          :1,
+                               __ovrfl         :1,
+                               __undfl         :1,
+                               __precis        :1,
+                               __stkflt        :1,
+                               __errsumm       :1,
+                               __c0            :1,
+                               __c1            :1,
+                               __c2            :1,
+                               __tos           :3,
+                               __c3            :1,
+                               __busy          :1;
+};
+typedef _STRUCT_FP_STATUS      __darwin_fp_status_t;
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_FP_STATUS      struct fp_status
+_STRUCT_FP_STATUS
+{
+    unsigned short             invalid :1,
+                               denorm  :1,
+                               zdiv    :1,
+                               ovrfl   :1,
+                               undfl   :1,
+                               precis  :1,
+                               stkflt  :1,
+                               errsumm :1,
+                               c0      :1,
+                               c1      :1,
+                               c2      :1,
+                               tos     :3,
+                               c3      :1,
+                               busy    :1;
+};
+typedef _STRUCT_FP_STATUS      fp_status_t;
+#endif /* !__DARWIN_UNIX03 */
+                               
+/* defn of 80bit x87 FPU or MMX register  */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_MMST_REG       struct __darwin_mmst_reg
+_STRUCT_MMST_REG
+{
+       char    __mmst_reg[10];
+       char    __mmst_rsrv[6];
+};
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_MMST_REG       struct mmst_reg
+_STRUCT_MMST_REG
+{
+       char    mmst_reg[10];
+       char    mmst_rsrv[6];
+};
+#endif /* !__DARWIN_UNIX03 */
+
+
+/* defn of 128 bit XMM regs */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_XMM_REG                struct __darwin_xmm_reg
+_STRUCT_XMM_REG
+{
+       char            __xmm_reg[16];
+};
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_XMM_REG                struct xmm_reg
+_STRUCT_XMM_REG
+{
+       char            xmm_reg[16];
+};
+#endif /* !__DARWIN_UNIX03 */
+
+/* 
+ * Floating point state.
+ */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define FP_STATE_BYTES         512     /* number of chars worth of data from fpu_fcw */
+#endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */
+
+#if __DARWIN_UNIX03
+#define        _STRUCT_X86_FLOAT_STATE32       struct __darwin_i386_float_state
+_STRUCT_X86_FLOAT_STATE32
+{
+       int                     __fpu_reserved[2];
+       _STRUCT_FP_CONTROL      __fpu_fcw;              /* x87 FPU control word */
+       _STRUCT_FP_STATUS       __fpu_fsw;              /* x87 FPU status word */
+       __uint8_t               __fpu_ftw;              /* x87 FPU tag word */
+       __uint8_t               __fpu_rsrv1;            /* reserved */ 
+       __uint16_t              __fpu_fop;              /* x87 FPU Opcode */
+       __uint32_t              __fpu_ip;               /* x87 FPU Instruction Pointer offset */
+       __uint16_t              __fpu_cs;               /* x87 FPU Instruction Pointer Selector */
+       __uint16_t              __fpu_rsrv2;            /* reserved */
+       __uint32_t              __fpu_dp;               /* x87 FPU Instruction Operand(Data) Pointer offset */
+       __uint16_t              __fpu_ds;               /* x87 FPU Instruction Operand(Data) Pointer Selector */
+       __uint16_t              __fpu_rsrv3;            /* reserved */
+       __uint32_t              __fpu_mxcsr;            /* MXCSR Register state */
+       __uint32_t              __fpu_mxcsrmask;        /* MXCSR mask */
+       _STRUCT_MMST_REG        __fpu_stmm0;            /* ST0/MM0   */
+       _STRUCT_MMST_REG        __fpu_stmm1;            /* ST1/MM1  */
+       _STRUCT_MMST_REG        __fpu_stmm2;            /* ST2/MM2  */
+       _STRUCT_MMST_REG        __fpu_stmm3;            /* ST3/MM3  */
+       _STRUCT_MMST_REG        __fpu_stmm4;            /* ST4/MM4  */
+       _STRUCT_MMST_REG        __fpu_stmm5;            /* ST5/MM5  */
+       _STRUCT_MMST_REG        __fpu_stmm6;            /* ST6/MM6  */
+       _STRUCT_MMST_REG        __fpu_stmm7;            /* ST7/MM7  */
+       _STRUCT_XMM_REG         __fpu_xmm0;             /* XMM 0  */
+       _STRUCT_XMM_REG         __fpu_xmm1;             /* XMM 1  */
+       _STRUCT_XMM_REG         __fpu_xmm2;             /* XMM 2  */
+       _STRUCT_XMM_REG         __fpu_xmm3;             /* XMM 3  */
+       _STRUCT_XMM_REG         __fpu_xmm4;             /* XMM 4  */
+       _STRUCT_XMM_REG         __fpu_xmm5;             /* XMM 5  */
+       _STRUCT_XMM_REG         __fpu_xmm6;             /* XMM 6  */
+       _STRUCT_XMM_REG         __fpu_xmm7;             /* XMM 7  */
+       char                    __fpu_rsrv4[14*16];     /* reserved */
+       int                     __fpu_reserved1;
+};
+#else /* !__DARWIN_UNIX03 */
+#define        _STRUCT_X86_FLOAT_STATE32       struct i386_float_state
+_STRUCT_X86_FLOAT_STATE32
+{
+       int                     fpu_reserved[2];
+       _STRUCT_FP_CONTROL      fpu_fcw;                /* x87 FPU control word */
+       _STRUCT_FP_STATUS       fpu_fsw;                /* x87 FPU status word */
+       __uint8_t               fpu_ftw;                /* x87 FPU tag word */
+       __uint8_t               fpu_rsrv1;              /* reserved */ 
+       __uint16_t              fpu_fop;                /* x87 FPU Opcode */
+       __uint32_t              fpu_ip;                 /* x87 FPU Instruction Pointer offset */
+       __uint16_t              fpu_cs;                 /* x87 FPU Instruction Pointer Selector */
+       __uint16_t              fpu_rsrv2;              /* reserved */
+       __uint32_t              fpu_dp;                 /* x87 FPU Instruction Operand(Data) Pointer offset */
+       __uint16_t              fpu_ds;                 /* x87 FPU Instruction Operand(Data) Pointer Selector */
+       __uint16_t              fpu_rsrv3;              /* reserved */
+       __uint32_t              fpu_mxcsr;              /* MXCSR Register state */
+       __uint32_t              fpu_mxcsrmask;          /* MXCSR mask */
+       _STRUCT_MMST_REG        fpu_stmm0;              /* ST0/MM0   */
+       _STRUCT_MMST_REG        fpu_stmm1;              /* ST1/MM1  */
+       _STRUCT_MMST_REG        fpu_stmm2;              /* ST2/MM2  */
+       _STRUCT_MMST_REG        fpu_stmm3;              /* ST3/MM3  */
+       _STRUCT_MMST_REG        fpu_stmm4;              /* ST4/MM4  */
+       _STRUCT_MMST_REG        fpu_stmm5;              /* ST5/MM5  */
+       _STRUCT_MMST_REG        fpu_stmm6;              /* ST6/MM6  */
+       _STRUCT_MMST_REG        fpu_stmm7;              /* ST7/MM7  */
+       _STRUCT_XMM_REG         fpu_xmm0;               /* XMM 0  */
+       _STRUCT_XMM_REG         fpu_xmm1;               /* XMM 1  */
+       _STRUCT_XMM_REG         fpu_xmm2;               /* XMM 2  */
+       _STRUCT_XMM_REG         fpu_xmm3;               /* XMM 3  */
+       _STRUCT_XMM_REG         fpu_xmm4;               /* XMM 4  */
+       _STRUCT_XMM_REG         fpu_xmm5;               /* XMM 5  */
+       _STRUCT_XMM_REG         fpu_xmm6;               /* XMM 6  */
+       _STRUCT_XMM_REG         fpu_xmm7;               /* XMM 7  */
+       char                    fpu_rsrv4[14*16];       /* reserved */
+       int                     fpu_reserved1;
+};
+#endif /* !__DARWIN_UNIX03 */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_X86_EXCEPTION_STATE32  struct __darwin_i386_exception_state
+_STRUCT_X86_EXCEPTION_STATE32
+{
+    unsigned int       __trapno;
+    unsigned int       __err;
+    unsigned int       __faultvaddr;
+};
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_X86_EXCEPTION_STATE32  struct i386_exception_state
+_STRUCT_X86_EXCEPTION_STATE32
+{
+    unsigned int       trapno;
+    unsigned int       err;
+    unsigned int       faultvaddr;
+};
+#endif /* !__DARWIN_UNIX03 */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_X86_DEBUG_STATE32      struct __darwin_x86_debug_state32
+_STRUCT_X86_DEBUG_STATE32
+{
+       unsigned int    __dr0;
+       unsigned int    __dr1;
+       unsigned int    __dr2;
+       unsigned int    __dr3;
+       unsigned int    __dr4;
+       unsigned int    __dr5;
+       unsigned int    __dr6;
+       unsigned int    __dr7;
+};
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_X86_DEBUG_STATE32      struct x86_debug_state32
+_STRUCT_X86_DEBUG_STATE32
+{
+       unsigned int    dr0;
+       unsigned int    dr1;
+       unsigned int    dr2;
+       unsigned int    dr3;
+       unsigned int    dr4;
+       unsigned int    dr5;
+       unsigned int    dr6;
+       unsigned int    dr7;
+};
+#endif /* !__DARWIN_UNIX03 */
+
+/*
+ * 64 bit versions of the above
+ */
+
+#if __DARWIN_UNIX03
+#define        _STRUCT_X86_THREAD_STATE64      struct __darwin_x86_thread_state64
+_STRUCT_X86_THREAD_STATE64
+{
+       __uint64_t      __rax;
+       __uint64_t      __rbx;
+       __uint64_t      __rcx;
+       __uint64_t      __rdx;
+       __uint64_t      __rdi;
+       __uint64_t      __rsi;
+       __uint64_t      __rbp;
+       __uint64_t      __rsp;
+       __uint64_t      __r8;
+       __uint64_t      __r9;
+       __uint64_t      __r10;
+       __uint64_t      __r11;
+       __uint64_t      __r12;
+       __uint64_t      __r13;
+       __uint64_t      __r14;
+       __uint64_t      __r15;
+       __uint64_t      __rip;
+       __uint64_t      __rflags;
+       __uint64_t      __cs;
+       __uint64_t      __fs;
+       __uint64_t      __gs;
+};
+#else /* !__DARWIN_UNIX03 */
+#define        _STRUCT_X86_THREAD_STATE64      struct x86_thread_state64
+_STRUCT_X86_THREAD_STATE64
+{
+       __uint64_t      rax;
+       __uint64_t      rbx;
+       __uint64_t      rcx;
+       __uint64_t      rdx;
+       __uint64_t      rdi;
+       __uint64_t      rsi;
+       __uint64_t      rbp;
+       __uint64_t      rsp;
+       __uint64_t      r8;
+       __uint64_t      r9;
+       __uint64_t      r10;
+       __uint64_t      r11;
+       __uint64_t      r12;
+       __uint64_t      r13;
+       __uint64_t      r14;
+       __uint64_t      r15;
+       __uint64_t      rip;
+       __uint64_t      rflags;
+       __uint64_t      cs;
+       __uint64_t      fs;
+       __uint64_t      gs;
+};
+#endif /* !__DARWIN_UNIX03 */
+
+
+#if __DARWIN_UNIX03
+#define        _STRUCT_X86_FLOAT_STATE64       struct __darwin_x86_float_state64
+_STRUCT_X86_FLOAT_STATE64
+{
+       int                     __fpu_reserved[2];
+       _STRUCT_FP_CONTROL      __fpu_fcw;              /* x87 FPU control word */
+       _STRUCT_FP_STATUS       __fpu_fsw;              /* x87 FPU status word */
+       __uint8_t               __fpu_ftw;              /* x87 FPU tag word */
+       __uint8_t               __fpu_rsrv1;            /* reserved */ 
+       __uint16_t              __fpu_fop;              /* x87 FPU Opcode */
+
+       /* x87 FPU Instruction Pointer */
+       __uint32_t              __fpu_ip;               /* offset */
+       __uint16_t              __fpu_cs;               /* Selector */
+
+       __uint16_t              __fpu_rsrv2;            /* reserved */
+
+       /* x87 FPU Instruction Operand(Data) Pointer */
+       __uint32_t              __fpu_dp;               /* offset */
+       __uint16_t              __fpu_ds;               /* Selector */
+
+       __uint16_t              __fpu_rsrv3;            /* reserved */
+       __uint32_t              __fpu_mxcsr;            /* MXCSR Register state */
+       __uint32_t              __fpu_mxcsrmask;        /* MXCSR mask */
+       _STRUCT_MMST_REG        __fpu_stmm0;            /* ST0/MM0   */
+       _STRUCT_MMST_REG        __fpu_stmm1;            /* ST1/MM1  */
+       _STRUCT_MMST_REG        __fpu_stmm2;            /* ST2/MM2  */
+       _STRUCT_MMST_REG        __fpu_stmm3;            /* ST3/MM3  */
+       _STRUCT_MMST_REG        __fpu_stmm4;            /* ST4/MM4  */
+       _STRUCT_MMST_REG        __fpu_stmm5;            /* ST5/MM5  */
+       _STRUCT_MMST_REG        __fpu_stmm6;            /* ST6/MM6  */
+       _STRUCT_MMST_REG        __fpu_stmm7;            /* ST7/MM7  */
+       _STRUCT_XMM_REG         __fpu_xmm0;             /* XMM 0  */
+       _STRUCT_XMM_REG         __fpu_xmm1;             /* XMM 1  */
+       _STRUCT_XMM_REG         __fpu_xmm2;             /* XMM 2  */
+       _STRUCT_XMM_REG         __fpu_xmm3;             /* XMM 3  */
+       _STRUCT_XMM_REG         __fpu_xmm4;             /* XMM 4  */
+       _STRUCT_XMM_REG         __fpu_xmm5;             /* XMM 5  */
+       _STRUCT_XMM_REG         __fpu_xmm6;             /* XMM 6  */
+       _STRUCT_XMM_REG         __fpu_xmm7;             /* XMM 7  */
+       _STRUCT_XMM_REG         __fpu_xmm8;             /* XMM 8  */
+       _STRUCT_XMM_REG         __fpu_xmm9;             /* XMM 9  */
+       _STRUCT_XMM_REG         __fpu_xmm10;            /* XMM 10  */
+       _STRUCT_XMM_REG         __fpu_xmm11;            /* XMM 11 */
+       _STRUCT_XMM_REG         __fpu_xmm12;            /* XMM 12  */
+       _STRUCT_XMM_REG         __fpu_xmm13;            /* XMM 13  */
+       _STRUCT_XMM_REG         __fpu_xmm14;            /* XMM 14  */
+       _STRUCT_XMM_REG         __fpu_xmm15;            /* XMM 15  */
+       char                    __fpu_rsrv4[6*16];      /* reserved */
+       int                     __fpu_reserved1;
+};
+#else /* !__DARWIN_UNIX03 */
+#define        _STRUCT_X86_FLOAT_STATE64       struct x86_float_state64
+_STRUCT_X86_FLOAT_STATE64
+{
+       int                     fpu_reserved[2];
+       _STRUCT_FP_CONTROL      fpu_fcw;                /* x87 FPU control word */
+       _STRUCT_FP_STATUS       fpu_fsw;                /* x87 FPU status word */
+       __uint8_t               fpu_ftw;                /* x87 FPU tag word */
+       __uint8_t               fpu_rsrv1;              /* reserved */ 
+       __uint16_t              fpu_fop;                /* x87 FPU Opcode */
+
+       /* x87 FPU Instruction Pointer */
+       __uint32_t              fpu_ip;                 /* offset */
+       __uint16_t              fpu_cs;                 /* Selector */
+
+       __uint16_t              fpu_rsrv2;              /* reserved */
+
+       /* x87 FPU Instruction Operand(Data) Pointer */
+       __uint32_t              fpu_dp;                 /* offset */
+       __uint16_t              fpu_ds;                 /* Selector */
+
+       __uint16_t              fpu_rsrv3;              /* reserved */
+       __uint32_t              fpu_mxcsr;              /* MXCSR Register state */
+       __uint32_t              fpu_mxcsrmask;          /* MXCSR mask */
+       _STRUCT_MMST_REG        fpu_stmm0;              /* ST0/MM0   */
+       _STRUCT_MMST_REG        fpu_stmm1;              /* ST1/MM1  */
+       _STRUCT_MMST_REG        fpu_stmm2;              /* ST2/MM2  */
+       _STRUCT_MMST_REG        fpu_stmm3;              /* ST3/MM3  */
+       _STRUCT_MMST_REG        fpu_stmm4;              /* ST4/MM4  */
+       _STRUCT_MMST_REG        fpu_stmm5;              /* ST5/MM5  */
+       _STRUCT_MMST_REG        fpu_stmm6;              /* ST6/MM6  */
+       _STRUCT_MMST_REG        fpu_stmm7;              /* ST7/MM7  */
+       _STRUCT_XMM_REG         fpu_xmm0;               /* XMM 0  */
+       _STRUCT_XMM_REG         fpu_xmm1;               /* XMM 1  */
+       _STRUCT_XMM_REG         fpu_xmm2;               /* XMM 2  */
+       _STRUCT_XMM_REG         fpu_xmm3;               /* XMM 3  */
+       _STRUCT_XMM_REG         fpu_xmm4;               /* XMM 4  */
+       _STRUCT_XMM_REG         fpu_xmm5;               /* XMM 5  */
+       _STRUCT_XMM_REG         fpu_xmm6;               /* XMM 6  */
+       _STRUCT_XMM_REG         fpu_xmm7;               /* XMM 7  */
+       _STRUCT_XMM_REG         fpu_xmm8;               /* XMM 8  */
+       _STRUCT_XMM_REG         fpu_xmm9;               /* XMM 9  */
+       _STRUCT_XMM_REG         fpu_xmm10;              /* XMM 10  */
+       _STRUCT_XMM_REG         fpu_xmm11;              /* XMM 11 */
+       _STRUCT_XMM_REG         fpu_xmm12;              /* XMM 12  */
+       _STRUCT_XMM_REG         fpu_xmm13;              /* XMM 13  */
+       _STRUCT_XMM_REG         fpu_xmm14;              /* XMM 14  */
+       _STRUCT_XMM_REG         fpu_xmm15;              /* XMM 15  */
+       char                    fpu_rsrv4[6*16];        /* reserved */
+       int                     fpu_reserved1;
+};
+#endif /* !__DARWIN_UNIX03 */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_X86_EXCEPTION_STATE64  struct __darwin_x86_exception_state64
+_STRUCT_X86_EXCEPTION_STATE64
+{
+    unsigned int       __trapno;
+    unsigned int       __err;
+    __uint64_t         __faultvaddr;
+};
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_X86_EXCEPTION_STATE64  struct x86_exception_state64
+_STRUCT_X86_EXCEPTION_STATE64
+{
+    unsigned int       trapno;
+    unsigned int       err;
+    __uint64_t         faultvaddr;
+};
+#endif /* !__DARWIN_UNIX03 */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_X86_DEBUG_STATE64      struct __darwin_x86_debug_state64
+_STRUCT_X86_DEBUG_STATE64
+{
+       __uint64_t      __dr0;
+       __uint64_t      __dr1;
+       __uint64_t      __dr2;
+       __uint64_t      __dr3;
+       __uint64_t      __dr4;
+       __uint64_t      __dr5;
+       __uint64_t      __dr6;
+       __uint64_t      __dr7;
+};
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_X86_DEBUG_STATE64      struct x86_debug_state64
+_STRUCT_X86_DEBUG_STATE64
+{
+       __uint64_t      dr0;
+       __uint64_t      dr1;
+       __uint64_t      dr2;
+       __uint64_t      dr3;
+       __uint64_t      dr4;
+       __uint64_t      dr5;
+       __uint64_t      dr6;
+       __uint64_t      dr7;
+};
+#endif /* !__DARWIN_UNIX03 */
+
+#endif /* _MACH_I386__STRUCTS_H_ */