master
   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#if defined (__i386__) || defined (__x86_64__)
  36
  37#include <sys/cdefs.h> /* __DARWIN_UNIX03 */
  38#include <machine/types.h> /* __uint8_t */
  39
  40/*
  41 * i386 is the structure that is exported to user threads for 
  42 * use in status/mutate calls.  This structure should never change.
  43 *
  44 */
  45
  46#if __DARWIN_UNIX03
  47#define	_STRUCT_X86_THREAD_STATE32	struct __darwin_i386_thread_state
  48_STRUCT_X86_THREAD_STATE32
  49{
  50    unsigned int	__eax;
  51    unsigned int	__ebx;
  52    unsigned int	__ecx;
  53    unsigned int	__edx;
  54    unsigned int	__edi;
  55    unsigned int	__esi;
  56    unsigned int	__ebp;
  57    unsigned int	__esp;
  58    unsigned int	__ss;
  59    unsigned int	__eflags;
  60    unsigned int	__eip;
  61    unsigned int	__cs;
  62    unsigned int	__ds;
  63    unsigned int	__es;
  64    unsigned int	__fs;
  65    unsigned int	__gs;
  66};
  67#else /* !__DARWIN_UNIX03 */
  68#define	_STRUCT_X86_THREAD_STATE32	struct i386_thread_state
  69_STRUCT_X86_THREAD_STATE32
  70{
  71    unsigned int	eax;
  72    unsigned int	ebx;
  73    unsigned int	ecx;
  74    unsigned int	edx;
  75    unsigned int	edi;
  76    unsigned int	esi;
  77    unsigned int	ebp;
  78    unsigned int	esp;
  79    unsigned int	ss;
  80    unsigned int	eflags;
  81    unsigned int	eip;
  82    unsigned int	cs;
  83    unsigned int	ds;
  84    unsigned int	es;
  85    unsigned int	fs;
  86    unsigned int	gs;
  87};
  88#endif /* !__DARWIN_UNIX03 */
  89
  90/* This structure should be double-word aligned for performance */
  91
  92#if __DARWIN_UNIX03
  93#define _STRUCT_FP_CONTROL	struct __darwin_fp_control
  94_STRUCT_FP_CONTROL
  95{
  96    unsigned short		__invalid	:1,
  97    				__denorm	:1,
  98				__zdiv		:1,
  99				__ovrfl		:1,
 100				__undfl		:1,
 101				__precis	:1,
 102						:2,
 103				__pc		:2,
 104#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
 105#define FP_PREC_24B		0
 106#define	FP_PREC_53B		2
 107#define FP_PREC_64B		3
 108#endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */
 109				__rc		:2,
 110#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
 111#define FP_RND_NEAR		0
 112#define FP_RND_DOWN		1
 113#define FP_RND_UP		2
 114#define FP_CHOP			3
 115#endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */
 116					/*inf*/	:1,
 117						:3;
 118};
 119typedef _STRUCT_FP_CONTROL	__darwin_fp_control_t;
 120#else /* !__DARWIN_UNIX03 */
 121#define _STRUCT_FP_CONTROL	struct fp_control
 122_STRUCT_FP_CONTROL
 123{
 124    unsigned short		invalid	:1,
 125    				denorm	:1,
 126				zdiv	:1,
 127				ovrfl	:1,
 128				undfl	:1,
 129				precis	:1,
 130					:2,
 131				pc	:2,
 132#define FP_PREC_24B		0
 133#define	FP_PREC_53B		2
 134#define FP_PREC_64B		3
 135				rc	:2,
 136#define FP_RND_NEAR		0
 137#define FP_RND_DOWN		1
 138#define FP_RND_UP		2
 139#define FP_CHOP			3
 140				/*inf*/	:1,
 141					:3;
 142};
 143typedef _STRUCT_FP_CONTROL	fp_control_t;
 144#endif /* !__DARWIN_UNIX03 */
 145
 146/*
 147 * Status word.
 148 */
 149
 150#if __DARWIN_UNIX03
 151#define _STRUCT_FP_STATUS	struct __darwin_fp_status
 152_STRUCT_FP_STATUS
 153{
 154    unsigned short		__invalid	:1,
 155    				__denorm	:1,
 156				__zdiv		:1,
 157				__ovrfl		:1,
 158				__undfl		:1,
 159				__precis	:1,
 160				__stkflt	:1,
 161				__errsumm	:1,
 162				__c0		:1,
 163				__c1		:1,
 164				__c2		:1,
 165				__tos		:3,
 166				__c3		:1,
 167				__busy		:1;
 168};
 169typedef _STRUCT_FP_STATUS	__darwin_fp_status_t;
 170#else /* !__DARWIN_UNIX03 */
 171#define _STRUCT_FP_STATUS	struct fp_status
 172_STRUCT_FP_STATUS
 173{
 174    unsigned short		invalid	:1,
 175    				denorm	:1,
 176				zdiv	:1,
 177				ovrfl	:1,
 178				undfl	:1,
 179				precis	:1,
 180				stkflt	:1,
 181				errsumm	:1,
 182				c0	:1,
 183				c1	:1,
 184				c2	:1,
 185				tos	:3,
 186				c3	:1,
 187				busy	:1;
 188};
 189typedef _STRUCT_FP_STATUS	fp_status_t;
 190#endif /* !__DARWIN_UNIX03 */
 191				
 192/* defn of 80bit x87 FPU or MMX register  */
 193
 194#if __DARWIN_UNIX03
 195#define _STRUCT_MMST_REG	struct __darwin_mmst_reg
 196_STRUCT_MMST_REG
 197{
 198	char	__mmst_reg[10];
 199	char	__mmst_rsrv[6];
 200};
 201#else /* !__DARWIN_UNIX03 */
 202#define _STRUCT_MMST_REG	struct mmst_reg
 203_STRUCT_MMST_REG
 204{
 205	char	mmst_reg[10];
 206	char	mmst_rsrv[6];
 207};
 208#endif /* !__DARWIN_UNIX03 */
 209
 210
 211/* defn of 128 bit XMM regs */
 212
 213#if __DARWIN_UNIX03
 214#define _STRUCT_XMM_REG		struct __darwin_xmm_reg
 215_STRUCT_XMM_REG
 216{
 217	char		__xmm_reg[16];
 218};
 219#else /* !__DARWIN_UNIX03 */
 220#define _STRUCT_XMM_REG		struct xmm_reg
 221_STRUCT_XMM_REG
 222{
 223	char		xmm_reg[16];
 224};
 225#endif /* !__DARWIN_UNIX03 */
 226
 227/* defn of 256 bit YMM regs */
 228
 229#if __DARWIN_UNIX03
 230#define _STRUCT_YMM_REG		struct __darwin_ymm_reg
 231_STRUCT_YMM_REG
 232{
 233	char		__ymm_reg[32];
 234};
 235#else /* !__DARWIN_UNIX03 */
 236#define _STRUCT_YMM_REG		struct ymm_reg
 237_STRUCT_YMM_REG
 238{
 239	char		ymm_reg[32];
 240};
 241#endif /* !__DARWIN_UNIX03 */
 242
 243/* defn of 512 bit ZMM regs */
 244
 245#if __DARWIN_UNIX03
 246#define _STRUCT_ZMM_REG		struct __darwin_zmm_reg
 247_STRUCT_ZMM_REG
 248{
 249	char		__zmm_reg[64];
 250};
 251#else /* !__DARWIN_UNIX03 */
 252#define _STRUCT_ZMM_REG		struct zmm_reg
 253_STRUCT_ZMM_REG
 254{
 255	char		zmm_reg[64];
 256};
 257#endif /* !__DARWIN_UNIX03 */
 258
 259#if __DARWIN_UNIX03
 260#define _STRUCT_OPMASK_REG	struct __darwin_opmask_reg
 261_STRUCT_OPMASK_REG
 262{
 263	char		__opmask_reg[8];
 264};
 265#else /* !__DARWIN_UNIX03 */
 266#define _STRUCT_OPMASK_REG	struct opmask_reg
 267_STRUCT_OPMASK_REG
 268{
 269	char		opmask_reg[8];
 270};
 271#endif /* !__DARWIN_UNIX03 */
 272
 273/* 
 274 * Floating point state.
 275 */
 276
 277#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
 278#define FP_STATE_BYTES		512	/* number of chars worth of data from fpu_fcw */
 279#endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */
 280
 281#if __DARWIN_UNIX03
 282#define	_STRUCT_X86_FLOAT_STATE32	struct __darwin_i386_float_state
 283_STRUCT_X86_FLOAT_STATE32
 284{
 285	int 			__fpu_reserved[2];
 286	_STRUCT_FP_CONTROL	__fpu_fcw;		/* x87 FPU control word */
 287	_STRUCT_FP_STATUS	__fpu_fsw;		/* x87 FPU status word */
 288	__uint8_t		__fpu_ftw;		/* x87 FPU tag word */
 289	__uint8_t		__fpu_rsrv1;		/* reserved */ 
 290	__uint16_t		__fpu_fop;		/* x87 FPU Opcode */
 291	__uint32_t		__fpu_ip;		/* x87 FPU Instruction Pointer offset */
 292	__uint16_t		__fpu_cs;		/* x87 FPU Instruction Pointer Selector */
 293	__uint16_t		__fpu_rsrv2;		/* reserved */
 294	__uint32_t		__fpu_dp;		/* x87 FPU Instruction Operand(Data) Pointer offset */
 295	__uint16_t		__fpu_ds;		/* x87 FPU Instruction Operand(Data) Pointer Selector */
 296	__uint16_t		__fpu_rsrv3;		/* reserved */
 297	__uint32_t		__fpu_mxcsr;		/* MXCSR Register state */
 298	__uint32_t		__fpu_mxcsrmask;	/* MXCSR mask */
 299	_STRUCT_MMST_REG	__fpu_stmm0;		/* ST0/MM0   */
 300	_STRUCT_MMST_REG	__fpu_stmm1;		/* ST1/MM1  */
 301	_STRUCT_MMST_REG	__fpu_stmm2;		/* ST2/MM2  */
 302	_STRUCT_MMST_REG	__fpu_stmm3;		/* ST3/MM3  */
 303	_STRUCT_MMST_REG	__fpu_stmm4;		/* ST4/MM4  */
 304	_STRUCT_MMST_REG	__fpu_stmm5;		/* ST5/MM5  */
 305	_STRUCT_MMST_REG	__fpu_stmm6;		/* ST6/MM6  */
 306	_STRUCT_MMST_REG	__fpu_stmm7;		/* ST7/MM7  */
 307	_STRUCT_XMM_REG		__fpu_xmm0;		/* XMM 0  */
 308	_STRUCT_XMM_REG		__fpu_xmm1;		/* XMM 1  */
 309	_STRUCT_XMM_REG		__fpu_xmm2;		/* XMM 2  */
 310	_STRUCT_XMM_REG		__fpu_xmm3;		/* XMM 3  */
 311	_STRUCT_XMM_REG		__fpu_xmm4;		/* XMM 4  */
 312	_STRUCT_XMM_REG		__fpu_xmm5;		/* XMM 5  */
 313	_STRUCT_XMM_REG		__fpu_xmm6;		/* XMM 6  */
 314	_STRUCT_XMM_REG		__fpu_xmm7;		/* XMM 7  */
 315	char			__fpu_rsrv4[14*16];	/* reserved */
 316	int 			__fpu_reserved1;
 317};
 318
 319#define	_STRUCT_X86_AVX_STATE32	struct __darwin_i386_avx_state
 320_STRUCT_X86_AVX_STATE32
 321{
 322	int 			__fpu_reserved[2];
 323	_STRUCT_FP_CONTROL	__fpu_fcw;		/* x87 FPU control word */
 324	_STRUCT_FP_STATUS	__fpu_fsw;		/* x87 FPU status word */
 325	__uint8_t		__fpu_ftw;		/* x87 FPU tag word */
 326	__uint8_t		__fpu_rsrv1;		/* reserved */ 
 327	__uint16_t		__fpu_fop;		/* x87 FPU Opcode */
 328	__uint32_t		__fpu_ip;		/* x87 FPU Instruction Pointer offset */
 329	__uint16_t		__fpu_cs;		/* x87 FPU Instruction Pointer Selector */
 330	__uint16_t		__fpu_rsrv2;		/* reserved */
 331	__uint32_t		__fpu_dp;		/* x87 FPU Instruction Operand(Data) Pointer offset */
 332	__uint16_t		__fpu_ds;		/* x87 FPU Instruction Operand(Data) Pointer Selector */
 333	__uint16_t		__fpu_rsrv3;		/* reserved */
 334	__uint32_t		__fpu_mxcsr;		/* MXCSR Register state */
 335	__uint32_t		__fpu_mxcsrmask;	/* MXCSR mask */
 336	_STRUCT_MMST_REG	__fpu_stmm0;		/* ST0/MM0   */
 337	_STRUCT_MMST_REG	__fpu_stmm1;		/* ST1/MM1  */
 338	_STRUCT_MMST_REG	__fpu_stmm2;		/* ST2/MM2  */
 339	_STRUCT_MMST_REG	__fpu_stmm3;		/* ST3/MM3  */
 340	_STRUCT_MMST_REG	__fpu_stmm4;		/* ST4/MM4  */
 341	_STRUCT_MMST_REG	__fpu_stmm5;		/* ST5/MM5  */
 342	_STRUCT_MMST_REG	__fpu_stmm6;		/* ST6/MM6  */
 343	_STRUCT_MMST_REG	__fpu_stmm7;		/* ST7/MM7  */
 344	_STRUCT_XMM_REG		__fpu_xmm0;		/* XMM 0  */
 345	_STRUCT_XMM_REG		__fpu_xmm1;		/* XMM 1  */
 346	_STRUCT_XMM_REG		__fpu_xmm2;		/* XMM 2  */
 347	_STRUCT_XMM_REG		__fpu_xmm3;		/* XMM 3  */
 348	_STRUCT_XMM_REG		__fpu_xmm4;		/* XMM 4  */
 349	_STRUCT_XMM_REG		__fpu_xmm5;		/* XMM 5  */
 350	_STRUCT_XMM_REG		__fpu_xmm6;		/* XMM 6  */
 351	_STRUCT_XMM_REG		__fpu_xmm7;		/* XMM 7  */
 352	char			__fpu_rsrv4[14*16];	/* reserved */
 353	int 			__fpu_reserved1;
 354	char			__avx_reserved1[64];
 355	_STRUCT_XMM_REG		__fpu_ymmh0;		/* YMMH 0  */
 356	_STRUCT_XMM_REG		__fpu_ymmh1;		/* YMMH 1  */
 357	_STRUCT_XMM_REG		__fpu_ymmh2;		/* YMMH 2  */
 358	_STRUCT_XMM_REG		__fpu_ymmh3;		/* YMMH 3  */
 359	_STRUCT_XMM_REG		__fpu_ymmh4;		/* YMMH 4  */
 360	_STRUCT_XMM_REG		__fpu_ymmh5;		/* YMMH 5  */
 361	_STRUCT_XMM_REG		__fpu_ymmh6;		/* YMMH 6  */
 362	_STRUCT_XMM_REG		__fpu_ymmh7;		/* YMMH 7  */
 363};
 364
 365#define	_STRUCT_X86_AVX512_STATE32	struct __darwin_i386_avx512_state
 366_STRUCT_X86_AVX512_STATE32
 367{
 368	int 			__fpu_reserved[2];
 369	_STRUCT_FP_CONTROL	__fpu_fcw;		/* x87 FPU control word */
 370	_STRUCT_FP_STATUS	__fpu_fsw;		/* x87 FPU status word */
 371	__uint8_t		__fpu_ftw;		/* x87 FPU tag word */
 372	__uint8_t		__fpu_rsrv1;		/* reserved */ 
 373	__uint16_t		__fpu_fop;		/* x87 FPU Opcode */
 374	__uint32_t		__fpu_ip;		/* x87 FPU Instruction Pointer offset */
 375	__uint16_t		__fpu_cs;		/* x87 FPU Instruction Pointer Selector */
 376	__uint16_t		__fpu_rsrv2;		/* reserved */
 377	__uint32_t		__fpu_dp;		/* x87 FPU Instruction Operand(Data) Pointer offset */
 378	__uint16_t		__fpu_ds;		/* x87 FPU Instruction Operand(Data) Pointer Selector */
 379	__uint16_t		__fpu_rsrv3;		/* reserved */
 380	__uint32_t		__fpu_mxcsr;		/* MXCSR Register state */
 381	__uint32_t		__fpu_mxcsrmask;	/* MXCSR mask */
 382	_STRUCT_MMST_REG	__fpu_stmm0;		/* ST0/MM0   */
 383	_STRUCT_MMST_REG	__fpu_stmm1;		/* ST1/MM1  */
 384	_STRUCT_MMST_REG	__fpu_stmm2;		/* ST2/MM2  */
 385	_STRUCT_MMST_REG	__fpu_stmm3;		/* ST3/MM3  */
 386	_STRUCT_MMST_REG	__fpu_stmm4;		/* ST4/MM4  */
 387	_STRUCT_MMST_REG	__fpu_stmm5;		/* ST5/MM5  */
 388	_STRUCT_MMST_REG	__fpu_stmm6;		/* ST6/MM6  */
 389	_STRUCT_MMST_REG	__fpu_stmm7;		/* ST7/MM7  */
 390	_STRUCT_XMM_REG		__fpu_xmm0;		/* XMM 0  */
 391	_STRUCT_XMM_REG		__fpu_xmm1;		/* XMM 1  */
 392	_STRUCT_XMM_REG		__fpu_xmm2;		/* XMM 2  */
 393	_STRUCT_XMM_REG		__fpu_xmm3;		/* XMM 3  */
 394	_STRUCT_XMM_REG		__fpu_xmm4;		/* XMM 4  */
 395	_STRUCT_XMM_REG		__fpu_xmm5;		/* XMM 5  */
 396	_STRUCT_XMM_REG		__fpu_xmm6;		/* XMM 6  */
 397	_STRUCT_XMM_REG		__fpu_xmm7;		/* XMM 7  */
 398	char			__fpu_rsrv4[14*16];	/* reserved */
 399	int 			__fpu_reserved1;
 400	char			__avx_reserved1[64];
 401	_STRUCT_XMM_REG		__fpu_ymmh0;		/* YMMH 0  */
 402	_STRUCT_XMM_REG		__fpu_ymmh1;		/* YMMH 1  */
 403	_STRUCT_XMM_REG		__fpu_ymmh2;		/* YMMH 2  */
 404	_STRUCT_XMM_REG		__fpu_ymmh3;		/* YMMH 3  */
 405	_STRUCT_XMM_REG		__fpu_ymmh4;		/* YMMH 4  */
 406	_STRUCT_XMM_REG		__fpu_ymmh5;		/* YMMH 5  */
 407	_STRUCT_XMM_REG		__fpu_ymmh6;		/* YMMH 6  */
 408	_STRUCT_XMM_REG		__fpu_ymmh7;		/* YMMH 7  */
 409	_STRUCT_OPMASK_REG	__fpu_k0;		/* K0 */
 410	_STRUCT_OPMASK_REG	__fpu_k1;		/* K1 */
 411	_STRUCT_OPMASK_REG	__fpu_k2;		/* K2 */
 412	_STRUCT_OPMASK_REG	__fpu_k3;		/* K3 */
 413	_STRUCT_OPMASK_REG	__fpu_k4;		/* K4 */
 414	_STRUCT_OPMASK_REG	__fpu_k5;		/* K5 */
 415	_STRUCT_OPMASK_REG	__fpu_k6;		/* K6 */
 416	_STRUCT_OPMASK_REG	__fpu_k7;		/* K7 */
 417	_STRUCT_YMM_REG		__fpu_zmmh0;		/* ZMMH 0  */
 418	_STRUCT_YMM_REG		__fpu_zmmh1;		/* ZMMH 1  */
 419	_STRUCT_YMM_REG		__fpu_zmmh2;		/* ZMMH 2  */
 420	_STRUCT_YMM_REG		__fpu_zmmh3;		/* ZMMH 3  */
 421	_STRUCT_YMM_REG		__fpu_zmmh4;		/* ZMMH 4  */
 422	_STRUCT_YMM_REG		__fpu_zmmh5;		/* ZMMH 5  */
 423	_STRUCT_YMM_REG		__fpu_zmmh6;		/* ZMMH 6  */
 424	_STRUCT_YMM_REG		__fpu_zmmh7;		/* ZMMH 7  */
 425};
 426
 427#else /* !__DARWIN_UNIX03 */
 428#define	_STRUCT_X86_FLOAT_STATE32	struct i386_float_state
 429_STRUCT_X86_FLOAT_STATE32
 430{
 431	int 			fpu_reserved[2];
 432	_STRUCT_FP_CONTROL	fpu_fcw;		/* x87 FPU control word */
 433	_STRUCT_FP_STATUS	fpu_fsw;		/* x87 FPU status word */
 434	__uint8_t		fpu_ftw;		/* x87 FPU tag word */
 435	__uint8_t		fpu_rsrv1;		/* reserved */ 
 436	__uint16_t		fpu_fop;		/* x87 FPU Opcode */
 437	__uint32_t		fpu_ip;			/* x87 FPU Instruction Pointer offset */
 438	__uint16_t		fpu_cs;			/* x87 FPU Instruction Pointer Selector */
 439	__uint16_t		fpu_rsrv2;		/* reserved */
 440	__uint32_t		fpu_dp;			/* x87 FPU Instruction Operand(Data) Pointer offset */
 441	__uint16_t		fpu_ds;			/* x87 FPU Instruction Operand(Data) Pointer Selector */
 442	__uint16_t		fpu_rsrv3;		/* reserved */
 443	__uint32_t		fpu_mxcsr;		/* MXCSR Register state */
 444	__uint32_t		fpu_mxcsrmask;		/* MXCSR mask */
 445	_STRUCT_MMST_REG	fpu_stmm0;		/* ST0/MM0   */
 446	_STRUCT_MMST_REG	fpu_stmm1;		/* ST1/MM1  */
 447	_STRUCT_MMST_REG	fpu_stmm2;		/* ST2/MM2  */
 448	_STRUCT_MMST_REG	fpu_stmm3;		/* ST3/MM3  */
 449	_STRUCT_MMST_REG	fpu_stmm4;		/* ST4/MM4  */
 450	_STRUCT_MMST_REG	fpu_stmm5;		/* ST5/MM5  */
 451	_STRUCT_MMST_REG	fpu_stmm6;		/* ST6/MM6  */
 452	_STRUCT_MMST_REG	fpu_stmm7;		/* ST7/MM7  */
 453	_STRUCT_XMM_REG		fpu_xmm0;		/* XMM 0  */
 454	_STRUCT_XMM_REG		fpu_xmm1;		/* XMM 1  */
 455	_STRUCT_XMM_REG		fpu_xmm2;		/* XMM 2  */
 456	_STRUCT_XMM_REG		fpu_xmm3;		/* XMM 3  */
 457	_STRUCT_XMM_REG		fpu_xmm4;		/* XMM 4  */
 458	_STRUCT_XMM_REG		fpu_xmm5;		/* XMM 5  */
 459	_STRUCT_XMM_REG		fpu_xmm6;		/* XMM 6  */
 460	_STRUCT_XMM_REG		fpu_xmm7;		/* XMM 7  */
 461	char			fpu_rsrv4[14*16];	/* reserved */
 462	int 			fpu_reserved1;
 463};
 464
 465#define	_STRUCT_X86_AVX_STATE32	struct i386_avx_state
 466_STRUCT_X86_AVX_STATE32
 467{
 468	int 			fpu_reserved[2];
 469	_STRUCT_FP_CONTROL	fpu_fcw;		/* x87 FPU control word */
 470	_STRUCT_FP_STATUS	fpu_fsw;		/* x87 FPU status word */
 471	__uint8_t		fpu_ftw;		/* x87 FPU tag word */
 472	__uint8_t		fpu_rsrv1;		/* reserved */ 
 473	__uint16_t		fpu_fop;		/* x87 FPU Opcode */
 474	__uint32_t		fpu_ip;			/* x87 FPU Instruction Pointer offset */
 475	__uint16_t		fpu_cs;			/* x87 FPU Instruction Pointer Selector */
 476	__uint16_t		fpu_rsrv2;		/* reserved */
 477	__uint32_t		fpu_dp;			/* x87 FPU Instruction Operand(Data) Pointer offset */
 478	__uint16_t		fpu_ds;			/* x87 FPU Instruction Operand(Data) Pointer Selector */
 479	__uint16_t		fpu_rsrv3;		/* reserved */
 480	__uint32_t		fpu_mxcsr;		/* MXCSR Register state */
 481	__uint32_t		fpu_mxcsrmask;		/* MXCSR mask */
 482	_STRUCT_MMST_REG	fpu_stmm0;		/* ST0/MM0   */
 483	_STRUCT_MMST_REG	fpu_stmm1;		/* ST1/MM1  */
 484	_STRUCT_MMST_REG	fpu_stmm2;		/* ST2/MM2  */
 485	_STRUCT_MMST_REG	fpu_stmm3;		/* ST3/MM3  */
 486	_STRUCT_MMST_REG	fpu_stmm4;		/* ST4/MM4  */
 487	_STRUCT_MMST_REG	fpu_stmm5;		/* ST5/MM5  */
 488	_STRUCT_MMST_REG	fpu_stmm6;		/* ST6/MM6  */
 489	_STRUCT_MMST_REG	fpu_stmm7;		/* ST7/MM7  */
 490	_STRUCT_XMM_REG		fpu_xmm0;		/* XMM 0  */
 491	_STRUCT_XMM_REG		fpu_xmm1;		/* XMM 1  */
 492	_STRUCT_XMM_REG		fpu_xmm2;		/* XMM 2  */
 493	_STRUCT_XMM_REG		fpu_xmm3;		/* XMM 3  */
 494	_STRUCT_XMM_REG		fpu_xmm4;		/* XMM 4  */
 495	_STRUCT_XMM_REG		fpu_xmm5;		/* XMM 5  */
 496	_STRUCT_XMM_REG		fpu_xmm6;		/* XMM 6  */
 497	_STRUCT_XMM_REG		fpu_xmm7;		/* XMM 7  */
 498	char			fpu_rsrv4[14*16];	/* reserved */
 499	int 			fpu_reserved1;
 500	char			avx_reserved1[64];
 501	_STRUCT_XMM_REG		fpu_ymmh0;		/* YMMH 0  */
 502	_STRUCT_XMM_REG		fpu_ymmh1;		/* YMMH 1  */
 503	_STRUCT_XMM_REG		fpu_ymmh2;		/* YMMH 2  */
 504	_STRUCT_XMM_REG		fpu_ymmh3;		/* YMMH 3  */
 505	_STRUCT_XMM_REG		fpu_ymmh4;		/* YMMH 4  */
 506	_STRUCT_XMM_REG		fpu_ymmh5;		/* YMMH 5  */
 507	_STRUCT_XMM_REG		fpu_ymmh6;		/* YMMH 6  */
 508	_STRUCT_XMM_REG		fpu_ymmh7;		/* YMMH 7  */
 509};
 510
 511#define	_STRUCT_X86_AVX512_STATE32	struct i386_avx512_state
 512_STRUCT_X86_AVX512_STATE32
 513{
 514	int 			fpu_reserved[2];
 515	_STRUCT_FP_CONTROL	fpu_fcw;		/* x87 FPU control word */
 516	_STRUCT_FP_STATUS	fpu_fsw;		/* x87 FPU status word */
 517	__uint8_t		fpu_ftw;		/* x87 FPU tag word */
 518	__uint8_t		fpu_rsrv1;		/* reserved */ 
 519	__uint16_t		fpu_fop;		/* x87 FPU Opcode */
 520	__uint32_t		fpu_ip;			/* x87 FPU Instruction Pointer offset */
 521	__uint16_t		fpu_cs;			/* x87 FPU Instruction Pointer Selector */
 522	__uint16_t		fpu_rsrv2;		/* reserved */
 523	__uint32_t		fpu_dp;			/* x87 FPU Instruction Operand(Data) Pointer offset */
 524	__uint16_t		fpu_ds;			/* x87 FPU Instruction Operand(Data) Pointer Selector */
 525	__uint16_t		fpu_rsrv3;		/* reserved */
 526	__uint32_t		fpu_mxcsr;		/* MXCSR Register state */
 527	__uint32_t		fpu_mxcsrmask;		/* MXCSR mask */
 528	_STRUCT_MMST_REG	fpu_stmm0;		/* ST0/MM0   */
 529	_STRUCT_MMST_REG	fpu_stmm1;		/* ST1/MM1  */
 530	_STRUCT_MMST_REG	fpu_stmm2;		/* ST2/MM2  */
 531	_STRUCT_MMST_REG	fpu_stmm3;		/* ST3/MM3  */
 532	_STRUCT_MMST_REG	fpu_stmm4;		/* ST4/MM4  */
 533	_STRUCT_MMST_REG	fpu_stmm5;		/* ST5/MM5  */
 534	_STRUCT_MMST_REG	fpu_stmm6;		/* ST6/MM6  */
 535	_STRUCT_MMST_REG	fpu_stmm7;		/* ST7/MM7  */
 536	_STRUCT_XMM_REG		fpu_xmm0;		/* XMM 0  */
 537	_STRUCT_XMM_REG		fpu_xmm1;		/* XMM 1  */
 538	_STRUCT_XMM_REG		fpu_xmm2;		/* XMM 2  */
 539	_STRUCT_XMM_REG		fpu_xmm3;		/* XMM 3  */
 540	_STRUCT_XMM_REG		fpu_xmm4;		/* XMM 4  */
 541	_STRUCT_XMM_REG		fpu_xmm5;		/* XMM 5  */
 542	_STRUCT_XMM_REG		fpu_xmm6;		/* XMM 6  */
 543	_STRUCT_XMM_REG		fpu_xmm7;		/* XMM 7  */
 544	char			fpu_rsrv4[14*16];	/* reserved */
 545	int 			fpu_reserved1;
 546	char			avx_reserved1[64];
 547	_STRUCT_XMM_REG		fpu_ymmh0;		/* YMMH 0  */
 548	_STRUCT_XMM_REG		fpu_ymmh1;		/* YMMH 1  */
 549	_STRUCT_XMM_REG		fpu_ymmh2;		/* YMMH 2  */
 550	_STRUCT_XMM_REG		fpu_ymmh3;		/* YMMH 3  */
 551	_STRUCT_XMM_REG		fpu_ymmh4;		/* YMMH 4  */
 552	_STRUCT_XMM_REG		fpu_ymmh5;		/* YMMH 5  */
 553	_STRUCT_XMM_REG		fpu_ymmh6;		/* YMMH 6  */
 554	_STRUCT_XMM_REG		fpu_ymmh7;		/* YMMH 7  */
 555	_STRUCT_OPMASK_REG	fpu_k0;			/* K0 */
 556	_STRUCT_OPMASK_REG	fpu_k1;			/* K1 */
 557	_STRUCT_OPMASK_REG	fpu_k2;			/* K2 */
 558	_STRUCT_OPMASK_REG	fpu_k3;			/* K3 */
 559	_STRUCT_OPMASK_REG	fpu_k4;			/* K4 */
 560	_STRUCT_OPMASK_REG	fpu_k5;			/* K5 */
 561	_STRUCT_OPMASK_REG	fpu_k6;			/* K6 */
 562	_STRUCT_OPMASK_REG	fpu_k7;			/* K7 */
 563	_STRUCT_YMM_REG		fpu_zmmh0;		/* ZMMH 0  */
 564	_STRUCT_YMM_REG		fpu_zmmh1;		/* ZMMH 1  */
 565	_STRUCT_YMM_REG		fpu_zmmh2;		/* ZMMH 2  */
 566	_STRUCT_YMM_REG		fpu_zmmh3;		/* ZMMH 3  */
 567	_STRUCT_YMM_REG		fpu_zmmh4;		/* ZMMH 4  */
 568	_STRUCT_YMM_REG		fpu_zmmh5;		/* ZMMH 5  */
 569	_STRUCT_YMM_REG		fpu_zmmh6;		/* ZMMH 6  */
 570	_STRUCT_YMM_REG		fpu_zmmh7;		/* ZMMH 7  */
 571};
 572
 573#endif /* !__DARWIN_UNIX03 */
 574
 575#if __DARWIN_UNIX03
 576#define _STRUCT_X86_EXCEPTION_STATE32	struct __darwin_i386_exception_state
 577_STRUCT_X86_EXCEPTION_STATE32
 578{
 579	__uint16_t	__trapno;
 580	__uint16_t	__cpu;
 581	__uint32_t	__err;
 582	__uint32_t	__faultvaddr;
 583};
 584#else /* !__DARWIN_UNIX03 */
 585#define _STRUCT_X86_EXCEPTION_STATE32	struct i386_exception_state
 586_STRUCT_X86_EXCEPTION_STATE32
 587{
 588	__uint16_t	trapno;
 589	__uint16_t	cpu;
 590	__uint32_t	err;
 591	__uint32_t	faultvaddr;
 592};
 593#endif /* !__DARWIN_UNIX03 */
 594
 595#if __DARWIN_UNIX03
 596#define _STRUCT_X86_DEBUG_STATE32	struct __darwin_x86_debug_state32
 597_STRUCT_X86_DEBUG_STATE32
 598{
 599	unsigned int	__dr0;
 600	unsigned int	__dr1;
 601	unsigned int	__dr2;
 602	unsigned int	__dr3;
 603	unsigned int	__dr4;
 604	unsigned int	__dr5;
 605	unsigned int	__dr6;
 606	unsigned int	__dr7;
 607};
 608
 609#define _STRUCT_X86_INSTRUCTION_STATE	struct __x86_instruction_state
 610_STRUCT_X86_INSTRUCTION_STATE
 611{
 612        int		__insn_stream_valid_bytes;
 613        int		__insn_offset;
 614	int		__out_of_synch;	/*
 615					 * non-zero when the cacheline that includes the insn_offset
 616					 * is replaced in the insn_bytes array due to a mismatch
 617					 * detected when comparing it with the same cacheline in memory
 618					 */
 619#define _X86_INSTRUCTION_STATE_MAX_INSN_BYTES    (2448 - 64 - 4)
 620        __uint8_t	__insn_bytes[_X86_INSTRUCTION_STATE_MAX_INSN_BYTES];
 621#define _X86_INSTRUCTION_STATE_CACHELINE_SIZE	64
 622	__uint8_t	__insn_cacheline[_X86_INSTRUCTION_STATE_CACHELINE_SIZE];
 623};
 624
 625#define _STRUCT_LAST_BRANCH_RECORD	struct __last_branch_record
 626_STRUCT_LAST_BRANCH_RECORD
 627{
 628	__uint64_t	__from_ip;
 629	__uint64_t	__to_ip;
 630	__uint32_t	__mispredict : 1,
 631			__tsx_abort  : 1,
 632			__in_tsx     : 1,
 633			__cycle_count: 16,
 634			__reserved   : 13;
 635};
 636
 637#define _STRUCT_LAST_BRANCH_STATE	struct __last_branch_state
 638_STRUCT_LAST_BRANCH_STATE
 639{
 640        int				__lbr_count;
 641	__uint32_t			__lbr_supported_tsx : 1,
 642					__lbr_supported_cycle_count : 1,
 643					__reserved : 30;
 644#define	__LASTBRANCH_MAX	32
 645	_STRUCT_LAST_BRANCH_RECORD	__lbrs[__LASTBRANCH_MAX];
 646};
 647
 648#else /* !__DARWIN_UNIX03 */
 649
 650#define _STRUCT_X86_DEBUG_STATE32	struct x86_debug_state32
 651_STRUCT_X86_DEBUG_STATE32
 652{
 653	unsigned int	dr0;
 654	unsigned int	dr1;
 655	unsigned int	dr2;
 656	unsigned int	dr3;
 657	unsigned int	dr4;
 658	unsigned int	dr5;
 659	unsigned int	dr6;
 660	unsigned int	dr7;
 661};
 662
 663#define _STRUCT_X86_INSTRUCTION_STATE	struct __x86_instruction_state
 664_STRUCT_X86_INSTRUCTION_STATE
 665{
 666        int		insn_stream_valid_bytes;
 667        int		insn_offset;
 668	int		out_of_synch;	/*
 669					 * non-zero when the cacheline that includes the insn_offset
 670					 * is replaced in the insn_bytes array due to a mismatch
 671					 * detected when comparing it with the same cacheline in memory
 672					 */
 673#define x86_INSTRUCTION_STATE_MAX_INSN_BYTES    (2448 - 64 - 4)
 674        __uint8_t	insn_bytes[x86_INSTRUCTION_STATE_MAX_INSN_BYTES];
 675#define x86_INSTRUCTION_STATE_CACHELINE_SIZE	64
 676	__uint8_t	insn_cacheline[x86_INSTRUCTION_STATE_CACHELINE_SIZE];
 677};
 678
 679#define _STRUCT_LAST_BRANCH_RECORD	struct __last_branch_record
 680_STRUCT_LAST_BRANCH_RECORD
 681{
 682	__uint64_t	from_ip;
 683	__uint64_t	to_ip;
 684	__uint32_t	mispredict : 1,
 685			tsx_abort  : 1,
 686			in_tsx     : 1,
 687			cycle_count: 16,
 688			reserved   : 13;
 689};
 690
 691#define _STRUCT_LAST_BRANCH_STATE	struct __last_branch_state
 692_STRUCT_LAST_BRANCH_STATE
 693{
 694        int				lbr_count;
 695	__uint32_t			lbr_supported_tsx : 1,
 696					lbr_supported_cycle_count : 1,
 697					reserved : 30;
 698#define	__LASTBRANCH_MAX	32
 699	_STRUCT_LAST_BRANCH_RECORD	lbrs[__LASTBRANCH_MAX];
 700};
 701#endif /* !__DARWIN_UNIX03 */
 702
 703#define	_STRUCT_X86_PAGEIN_STATE	struct __x86_pagein_state
 704_STRUCT_X86_PAGEIN_STATE
 705{
 706	int __pagein_error;
 707};
 708
 709/*
 710 * 64 bit versions of the above
 711 */
 712
 713#if __DARWIN_UNIX03
 714#define	_STRUCT_X86_THREAD_STATE64	struct __darwin_x86_thread_state64
 715_STRUCT_X86_THREAD_STATE64
 716{
 717	__uint64_t	__rax;
 718	__uint64_t	__rbx;
 719	__uint64_t	__rcx;
 720	__uint64_t	__rdx;
 721	__uint64_t	__rdi;
 722	__uint64_t	__rsi;
 723	__uint64_t	__rbp;
 724	__uint64_t	__rsp;
 725	__uint64_t	__r8;
 726	__uint64_t	__r9;
 727	__uint64_t	__r10;
 728	__uint64_t	__r11;
 729	__uint64_t	__r12;
 730	__uint64_t	__r13;
 731	__uint64_t	__r14;
 732	__uint64_t	__r15;
 733	__uint64_t	__rip;
 734	__uint64_t	__rflags;
 735	__uint64_t	__cs;
 736	__uint64_t	__fs;
 737	__uint64_t	__gs;
 738};
 739#else /* !__DARWIN_UNIX03 */
 740#define	_STRUCT_X86_THREAD_STATE64	struct x86_thread_state64
 741_STRUCT_X86_THREAD_STATE64
 742{
 743	__uint64_t	rax;
 744	__uint64_t	rbx;
 745	__uint64_t	rcx;
 746	__uint64_t	rdx;
 747	__uint64_t	rdi;
 748	__uint64_t	rsi;
 749	__uint64_t	rbp;
 750	__uint64_t	rsp;
 751	__uint64_t	r8;
 752	__uint64_t	r9;
 753	__uint64_t	r10;
 754	__uint64_t	r11;
 755	__uint64_t	r12;
 756	__uint64_t	r13;
 757	__uint64_t	r14;
 758	__uint64_t	r15;
 759	__uint64_t	rip;
 760	__uint64_t	rflags;
 761	__uint64_t	cs;
 762	__uint64_t	fs;
 763	__uint64_t	gs;
 764};
 765#endif /* !__DARWIN_UNIX03 */
 766
 767/*
 768 * 64 bit versions of the above (complete)
 769 */
 770
 771#if __DARWIN_UNIX03
 772#define	_STRUCT_X86_THREAD_FULL_STATE64	struct __darwin_x86_thread_full_state64
 773_STRUCT_X86_THREAD_FULL_STATE64
 774{
 775	_STRUCT_X86_THREAD_STATE64	__ss64;
 776	__uint64_t			__ds;
 777	__uint64_t			__es;
 778	__uint64_t			__ss;
 779	__uint64_t			__gsbase;
 780};
 781#else /* !__DARWIN_UNIX03 */
 782#define	_STRUCT_X86_THREAD_FULL_STATE64	struct x86_thread_full_state64
 783_STRUCT_X86_THREAD_FULL_STATE64
 784{
 785	_STRUCT_X86_THREAD_STATE64	ss64;
 786	__uint64_t			ds;
 787	__uint64_t			es;
 788	__uint64_t			ss;
 789	__uint64_t			gsbase;
 790};
 791#endif /* !__DARWIN_UNIX03 */
 792
 793
 794#if __DARWIN_UNIX03
 795#define	_STRUCT_X86_FLOAT_STATE64	struct __darwin_x86_float_state64
 796_STRUCT_X86_FLOAT_STATE64
 797{
 798	int 			__fpu_reserved[2];
 799	_STRUCT_FP_CONTROL	__fpu_fcw;		/* x87 FPU control word */
 800	_STRUCT_FP_STATUS	__fpu_fsw;		/* x87 FPU status word */
 801	__uint8_t		__fpu_ftw;		/* x87 FPU tag word */
 802	__uint8_t		__fpu_rsrv1;		/* reserved */ 
 803	__uint16_t		__fpu_fop;		/* x87 FPU Opcode */
 804
 805	/* x87 FPU Instruction Pointer */
 806	__uint32_t		__fpu_ip;		/* offset */
 807	__uint16_t		__fpu_cs;		/* Selector */
 808
 809	__uint16_t		__fpu_rsrv2;		/* reserved */
 810
 811	/* x87 FPU Instruction Operand(Data) Pointer */
 812	__uint32_t		__fpu_dp;		/* offset */
 813	__uint16_t		__fpu_ds;		/* Selector */
 814
 815	__uint16_t		__fpu_rsrv3;		/* reserved */
 816	__uint32_t		__fpu_mxcsr;		/* MXCSR Register state */
 817	__uint32_t		__fpu_mxcsrmask;	/* MXCSR mask */
 818	_STRUCT_MMST_REG	__fpu_stmm0;		/* ST0/MM0   */
 819	_STRUCT_MMST_REG	__fpu_stmm1;		/* ST1/MM1  */
 820	_STRUCT_MMST_REG	__fpu_stmm2;		/* ST2/MM2  */
 821	_STRUCT_MMST_REG	__fpu_stmm3;		/* ST3/MM3  */
 822	_STRUCT_MMST_REG	__fpu_stmm4;		/* ST4/MM4  */
 823	_STRUCT_MMST_REG	__fpu_stmm5;		/* ST5/MM5  */
 824	_STRUCT_MMST_REG	__fpu_stmm6;		/* ST6/MM6  */
 825	_STRUCT_MMST_REG	__fpu_stmm7;		/* ST7/MM7  */
 826	_STRUCT_XMM_REG		__fpu_xmm0;		/* XMM 0  */
 827	_STRUCT_XMM_REG		__fpu_xmm1;		/* XMM 1  */
 828	_STRUCT_XMM_REG		__fpu_xmm2;		/* XMM 2  */
 829	_STRUCT_XMM_REG		__fpu_xmm3;		/* XMM 3  */
 830	_STRUCT_XMM_REG		__fpu_xmm4;		/* XMM 4  */
 831	_STRUCT_XMM_REG		__fpu_xmm5;		/* XMM 5  */
 832	_STRUCT_XMM_REG		__fpu_xmm6;		/* XMM 6  */
 833	_STRUCT_XMM_REG		__fpu_xmm7;		/* XMM 7  */
 834	_STRUCT_XMM_REG		__fpu_xmm8;		/* XMM 8  */
 835	_STRUCT_XMM_REG		__fpu_xmm9;		/* XMM 9  */
 836	_STRUCT_XMM_REG		__fpu_xmm10;		/* XMM 10  */
 837	_STRUCT_XMM_REG		__fpu_xmm11;		/* XMM 11 */
 838	_STRUCT_XMM_REG		__fpu_xmm12;		/* XMM 12  */
 839	_STRUCT_XMM_REG		__fpu_xmm13;		/* XMM 13  */
 840	_STRUCT_XMM_REG		__fpu_xmm14;		/* XMM 14  */
 841	_STRUCT_XMM_REG		__fpu_xmm15;		/* XMM 15  */
 842	char			__fpu_rsrv4[6*16];	/* reserved */
 843	int 			__fpu_reserved1;
 844};
 845
 846#define	_STRUCT_X86_AVX_STATE64	struct __darwin_x86_avx_state64
 847_STRUCT_X86_AVX_STATE64
 848{
 849	int 			__fpu_reserved[2];
 850	_STRUCT_FP_CONTROL	__fpu_fcw;		/* x87 FPU control word */
 851	_STRUCT_FP_STATUS	__fpu_fsw;		/* x87 FPU status word */
 852	__uint8_t		__fpu_ftw;		/* x87 FPU tag word */
 853	__uint8_t		__fpu_rsrv1;		/* reserved */ 
 854	__uint16_t		__fpu_fop;		/* x87 FPU Opcode */
 855
 856	/* x87 FPU Instruction Pointer */
 857	__uint32_t		__fpu_ip;		/* offset */
 858	__uint16_t		__fpu_cs;		/* Selector */
 859
 860	__uint16_t		__fpu_rsrv2;		/* reserved */
 861
 862	/* x87 FPU Instruction Operand(Data) Pointer */
 863	__uint32_t		__fpu_dp;		/* offset */
 864	__uint16_t		__fpu_ds;		/* Selector */
 865
 866	__uint16_t		__fpu_rsrv3;		/* reserved */
 867	__uint32_t		__fpu_mxcsr;		/* MXCSR Register state */
 868	__uint32_t		__fpu_mxcsrmask;	/* MXCSR mask */
 869	_STRUCT_MMST_REG	__fpu_stmm0;		/* ST0/MM0   */
 870	_STRUCT_MMST_REG	__fpu_stmm1;		/* ST1/MM1  */
 871	_STRUCT_MMST_REG	__fpu_stmm2;		/* ST2/MM2  */
 872	_STRUCT_MMST_REG	__fpu_stmm3;		/* ST3/MM3  */
 873	_STRUCT_MMST_REG	__fpu_stmm4;		/* ST4/MM4  */
 874	_STRUCT_MMST_REG	__fpu_stmm5;		/* ST5/MM5  */
 875	_STRUCT_MMST_REG	__fpu_stmm6;		/* ST6/MM6  */
 876	_STRUCT_MMST_REG	__fpu_stmm7;		/* ST7/MM7  */
 877	_STRUCT_XMM_REG		__fpu_xmm0;		/* XMM 0  */
 878	_STRUCT_XMM_REG		__fpu_xmm1;		/* XMM 1  */
 879	_STRUCT_XMM_REG		__fpu_xmm2;		/* XMM 2  */
 880	_STRUCT_XMM_REG		__fpu_xmm3;		/* XMM 3  */
 881	_STRUCT_XMM_REG		__fpu_xmm4;		/* XMM 4  */
 882	_STRUCT_XMM_REG		__fpu_xmm5;		/* XMM 5  */
 883	_STRUCT_XMM_REG		__fpu_xmm6;		/* XMM 6  */
 884	_STRUCT_XMM_REG		__fpu_xmm7;		/* XMM 7  */
 885	_STRUCT_XMM_REG		__fpu_xmm8;		/* XMM 8  */
 886	_STRUCT_XMM_REG		__fpu_xmm9;		/* XMM 9  */
 887	_STRUCT_XMM_REG		__fpu_xmm10;		/* XMM 10  */
 888	_STRUCT_XMM_REG		__fpu_xmm11;		/* XMM 11 */
 889	_STRUCT_XMM_REG		__fpu_xmm12;		/* XMM 12  */
 890	_STRUCT_XMM_REG		__fpu_xmm13;		/* XMM 13  */
 891	_STRUCT_XMM_REG		__fpu_xmm14;		/* XMM 14  */
 892	_STRUCT_XMM_REG		__fpu_xmm15;		/* XMM 15  */
 893	char			__fpu_rsrv4[6*16];	/* reserved */
 894	int 			__fpu_reserved1;
 895	char			__avx_reserved1[64];
 896	_STRUCT_XMM_REG		__fpu_ymmh0;		/* YMMH 0  */
 897	_STRUCT_XMM_REG		__fpu_ymmh1;		/* YMMH 1  */
 898	_STRUCT_XMM_REG		__fpu_ymmh2;		/* YMMH 2  */
 899	_STRUCT_XMM_REG		__fpu_ymmh3;		/* YMMH 3  */
 900	_STRUCT_XMM_REG		__fpu_ymmh4;		/* YMMH 4  */
 901	_STRUCT_XMM_REG		__fpu_ymmh5;		/* YMMH 5  */
 902	_STRUCT_XMM_REG		__fpu_ymmh6;		/* YMMH 6  */
 903	_STRUCT_XMM_REG		__fpu_ymmh7;		/* YMMH 7  */
 904	_STRUCT_XMM_REG		__fpu_ymmh8;		/* YMMH 8  */
 905	_STRUCT_XMM_REG		__fpu_ymmh9;		/* YMMH 9  */
 906	_STRUCT_XMM_REG		__fpu_ymmh10;		/* YMMH 10  */
 907	_STRUCT_XMM_REG		__fpu_ymmh11;		/* YMMH 11  */
 908	_STRUCT_XMM_REG		__fpu_ymmh12;		/* YMMH 12  */
 909	_STRUCT_XMM_REG		__fpu_ymmh13;		/* YMMH 13  */
 910	_STRUCT_XMM_REG		__fpu_ymmh14;		/* YMMH 14  */
 911	_STRUCT_XMM_REG		__fpu_ymmh15;		/* YMMH 15  */
 912};
 913
 914#define	_STRUCT_X86_AVX512_STATE64	struct __darwin_x86_avx512_state64
 915_STRUCT_X86_AVX512_STATE64
 916{
 917	int 			__fpu_reserved[2];
 918	_STRUCT_FP_CONTROL	__fpu_fcw;		/* x87 FPU control word */
 919	_STRUCT_FP_STATUS	__fpu_fsw;		/* x87 FPU status word */
 920	__uint8_t		__fpu_ftw;		/* x87 FPU tag word */
 921	__uint8_t		__fpu_rsrv1;		/* reserved */ 
 922	__uint16_t		__fpu_fop;		/* x87 FPU Opcode */
 923
 924	/* x87 FPU Instruction Pointer */
 925	__uint32_t		__fpu_ip;		/* offset */
 926	__uint16_t		__fpu_cs;		/* Selector */
 927
 928	__uint16_t		__fpu_rsrv2;		/* reserved */
 929
 930	/* x87 FPU Instruction Operand(Data) Pointer */
 931	__uint32_t		__fpu_dp;		/* offset */
 932	__uint16_t		__fpu_ds;		/* Selector */
 933
 934	__uint16_t		__fpu_rsrv3;		/* reserved */
 935	__uint32_t		__fpu_mxcsr;		/* MXCSR Register state */
 936	__uint32_t		__fpu_mxcsrmask;	/* MXCSR mask */
 937	_STRUCT_MMST_REG	__fpu_stmm0;		/* ST0/MM0   */
 938	_STRUCT_MMST_REG	__fpu_stmm1;		/* ST1/MM1  */
 939	_STRUCT_MMST_REG	__fpu_stmm2;		/* ST2/MM2  */
 940	_STRUCT_MMST_REG	__fpu_stmm3;		/* ST3/MM3  */
 941	_STRUCT_MMST_REG	__fpu_stmm4;		/* ST4/MM4  */
 942	_STRUCT_MMST_REG	__fpu_stmm5;		/* ST5/MM5  */
 943	_STRUCT_MMST_REG	__fpu_stmm6;		/* ST6/MM6  */
 944	_STRUCT_MMST_REG	__fpu_stmm7;		/* ST7/MM7  */
 945	_STRUCT_XMM_REG		__fpu_xmm0;		/* XMM 0  */
 946	_STRUCT_XMM_REG		__fpu_xmm1;		/* XMM 1  */
 947	_STRUCT_XMM_REG		__fpu_xmm2;		/* XMM 2  */
 948	_STRUCT_XMM_REG		__fpu_xmm3;		/* XMM 3  */
 949	_STRUCT_XMM_REG		__fpu_xmm4;		/* XMM 4  */
 950	_STRUCT_XMM_REG		__fpu_xmm5;		/* XMM 5  */
 951	_STRUCT_XMM_REG		__fpu_xmm6;		/* XMM 6  */
 952	_STRUCT_XMM_REG		__fpu_xmm7;		/* XMM 7  */
 953	_STRUCT_XMM_REG		__fpu_xmm8;		/* XMM 8  */
 954	_STRUCT_XMM_REG		__fpu_xmm9;		/* XMM 9  */
 955	_STRUCT_XMM_REG		__fpu_xmm10;		/* XMM 10  */
 956	_STRUCT_XMM_REG		__fpu_xmm11;		/* XMM 11 */
 957	_STRUCT_XMM_REG		__fpu_xmm12;		/* XMM 12  */
 958	_STRUCT_XMM_REG		__fpu_xmm13;		/* XMM 13  */
 959	_STRUCT_XMM_REG		__fpu_xmm14;		/* XMM 14  */
 960	_STRUCT_XMM_REG		__fpu_xmm15;		/* XMM 15  */
 961	char			__fpu_rsrv4[6*16];	/* reserved */
 962	int 			__fpu_reserved1;
 963	char			__avx_reserved1[64];
 964	_STRUCT_XMM_REG		__fpu_ymmh0;		/* YMMH 0  */
 965	_STRUCT_XMM_REG		__fpu_ymmh1;		/* YMMH 1  */
 966	_STRUCT_XMM_REG		__fpu_ymmh2;		/* YMMH 2  */
 967	_STRUCT_XMM_REG		__fpu_ymmh3;		/* YMMH 3  */
 968	_STRUCT_XMM_REG		__fpu_ymmh4;		/* YMMH 4  */
 969	_STRUCT_XMM_REG		__fpu_ymmh5;		/* YMMH 5  */
 970	_STRUCT_XMM_REG		__fpu_ymmh6;		/* YMMH 6  */
 971	_STRUCT_XMM_REG		__fpu_ymmh7;		/* YMMH 7  */
 972	_STRUCT_XMM_REG		__fpu_ymmh8;		/* YMMH 8  */
 973	_STRUCT_XMM_REG		__fpu_ymmh9;		/* YMMH 9  */
 974	_STRUCT_XMM_REG		__fpu_ymmh10;		/* YMMH 10  */
 975	_STRUCT_XMM_REG		__fpu_ymmh11;		/* YMMH 11  */
 976	_STRUCT_XMM_REG		__fpu_ymmh12;		/* YMMH 12  */
 977	_STRUCT_XMM_REG		__fpu_ymmh13;		/* YMMH 13  */
 978	_STRUCT_XMM_REG		__fpu_ymmh14;		/* YMMH 14  */
 979	_STRUCT_XMM_REG		__fpu_ymmh15;		/* YMMH 15  */
 980	_STRUCT_OPMASK_REG	__fpu_k0;		/* K0 */
 981	_STRUCT_OPMASK_REG	__fpu_k1;		/* K1 */
 982	_STRUCT_OPMASK_REG	__fpu_k2;		/* K2 */
 983	_STRUCT_OPMASK_REG	__fpu_k3;		/* K3 */
 984	_STRUCT_OPMASK_REG	__fpu_k4;		/* K4 */
 985	_STRUCT_OPMASK_REG	__fpu_k5;		/* K5 */
 986	_STRUCT_OPMASK_REG	__fpu_k6;		/* K6 */
 987	_STRUCT_OPMASK_REG	__fpu_k7;		/* K7 */
 988	_STRUCT_YMM_REG		__fpu_zmmh0;		/* ZMMH 0  */
 989	_STRUCT_YMM_REG		__fpu_zmmh1;		/* ZMMH 1  */
 990	_STRUCT_YMM_REG		__fpu_zmmh2;		/* ZMMH 2  */
 991	_STRUCT_YMM_REG		__fpu_zmmh3;		/* ZMMH 3  */
 992	_STRUCT_YMM_REG		__fpu_zmmh4;		/* ZMMH 4  */
 993	_STRUCT_YMM_REG		__fpu_zmmh5;		/* ZMMH 5  */
 994	_STRUCT_YMM_REG		__fpu_zmmh6;		/* ZMMH 6  */
 995	_STRUCT_YMM_REG		__fpu_zmmh7;		/* ZMMH 7  */
 996	_STRUCT_YMM_REG		__fpu_zmmh8;		/* ZMMH 8  */
 997	_STRUCT_YMM_REG		__fpu_zmmh9;		/* ZMMH 9  */
 998	_STRUCT_YMM_REG		__fpu_zmmh10;		/* ZMMH 10  */
 999	_STRUCT_YMM_REG		__fpu_zmmh11;		/* ZMMH 11  */
1000	_STRUCT_YMM_REG		__fpu_zmmh12;		/* ZMMH 12  */
1001	_STRUCT_YMM_REG		__fpu_zmmh13;		/* ZMMH 13  */
1002	_STRUCT_YMM_REG		__fpu_zmmh14;		/* ZMMH 14  */
1003	_STRUCT_YMM_REG		__fpu_zmmh15;		/* ZMMH 15  */
1004	_STRUCT_ZMM_REG		__fpu_zmm16;		/* ZMM 16  */
1005	_STRUCT_ZMM_REG		__fpu_zmm17;		/* ZMM 17  */
1006	_STRUCT_ZMM_REG		__fpu_zmm18;		/* ZMM 18  */
1007	_STRUCT_ZMM_REG		__fpu_zmm19;		/* ZMM 19  */
1008	_STRUCT_ZMM_REG		__fpu_zmm20;		/* ZMM 20  */
1009	_STRUCT_ZMM_REG		__fpu_zmm21;		/* ZMM 21  */
1010	_STRUCT_ZMM_REG		__fpu_zmm22;		/* ZMM 22  */
1011	_STRUCT_ZMM_REG		__fpu_zmm23;		/* ZMM 23  */
1012	_STRUCT_ZMM_REG		__fpu_zmm24;		/* ZMM 24  */
1013	_STRUCT_ZMM_REG		__fpu_zmm25;		/* ZMM 25  */
1014	_STRUCT_ZMM_REG		__fpu_zmm26;		/* ZMM 26  */
1015	_STRUCT_ZMM_REG		__fpu_zmm27;		/* ZMM 27  */
1016	_STRUCT_ZMM_REG		__fpu_zmm28;		/* ZMM 28  */
1017	_STRUCT_ZMM_REG		__fpu_zmm29;		/* ZMM 29  */
1018	_STRUCT_ZMM_REG		__fpu_zmm30;		/* ZMM 30  */
1019	_STRUCT_ZMM_REG		__fpu_zmm31;		/* ZMM 31  */
1020};
1021
1022#else /* !__DARWIN_UNIX03 */
1023#define	_STRUCT_X86_FLOAT_STATE64	struct x86_float_state64
1024_STRUCT_X86_FLOAT_STATE64
1025{
1026	int 			fpu_reserved[2];
1027	_STRUCT_FP_CONTROL	fpu_fcw;		/* x87 FPU control word */
1028	_STRUCT_FP_STATUS	fpu_fsw;		/* x87 FPU status word */
1029	__uint8_t		fpu_ftw;		/* x87 FPU tag word */
1030	__uint8_t		fpu_rsrv1;		/* reserved */ 
1031	__uint16_t		fpu_fop;		/* x87 FPU Opcode */
1032
1033	/* x87 FPU Instruction Pointer */
1034	__uint32_t		fpu_ip;			/* offset */
1035	__uint16_t		fpu_cs;			/* Selector */
1036
1037	__uint16_t		fpu_rsrv2;		/* reserved */
1038
1039	/* x87 FPU Instruction Operand(Data) Pointer */
1040	__uint32_t		fpu_dp;			/* offset */
1041	__uint16_t		fpu_ds;			/* Selector */
1042
1043	__uint16_t		fpu_rsrv3;		/* reserved */
1044	__uint32_t		fpu_mxcsr;		/* MXCSR Register state */
1045	__uint32_t		fpu_mxcsrmask;		/* MXCSR mask */
1046	_STRUCT_MMST_REG	fpu_stmm0;		/* ST0/MM0   */
1047	_STRUCT_MMST_REG	fpu_stmm1;		/* ST1/MM1  */
1048	_STRUCT_MMST_REG	fpu_stmm2;		/* ST2/MM2  */
1049	_STRUCT_MMST_REG	fpu_stmm3;		/* ST3/MM3  */
1050	_STRUCT_MMST_REG	fpu_stmm4;		/* ST4/MM4  */
1051	_STRUCT_MMST_REG	fpu_stmm5;		/* ST5/MM5  */
1052	_STRUCT_MMST_REG	fpu_stmm6;		/* ST6/MM6  */
1053	_STRUCT_MMST_REG	fpu_stmm7;		/* ST7/MM7  */
1054	_STRUCT_XMM_REG		fpu_xmm0;		/* XMM 0  */
1055	_STRUCT_XMM_REG		fpu_xmm1;		/* XMM 1  */
1056	_STRUCT_XMM_REG		fpu_xmm2;		/* XMM 2  */
1057	_STRUCT_XMM_REG		fpu_xmm3;		/* XMM 3  */
1058	_STRUCT_XMM_REG		fpu_xmm4;		/* XMM 4  */
1059	_STRUCT_XMM_REG		fpu_xmm5;		/* XMM 5  */
1060	_STRUCT_XMM_REG		fpu_xmm6;		/* XMM 6  */
1061	_STRUCT_XMM_REG		fpu_xmm7;		/* XMM 7  */
1062	_STRUCT_XMM_REG		fpu_xmm8;		/* XMM 8  */
1063	_STRUCT_XMM_REG		fpu_xmm9;		/* XMM 9  */
1064	_STRUCT_XMM_REG		fpu_xmm10;		/* XMM 10  */
1065	_STRUCT_XMM_REG		fpu_xmm11;		/* XMM 11 */
1066	_STRUCT_XMM_REG		fpu_xmm12;		/* XMM 12  */
1067	_STRUCT_XMM_REG		fpu_xmm13;		/* XMM 13  */
1068	_STRUCT_XMM_REG		fpu_xmm14;		/* XMM 14  */
1069	_STRUCT_XMM_REG		fpu_xmm15;		/* XMM 15  */
1070	char			fpu_rsrv4[6*16];	/* reserved */
1071	int 			fpu_reserved1;
1072};
1073
1074#define	_STRUCT_X86_AVX_STATE64	struct x86_avx_state64
1075_STRUCT_X86_AVX_STATE64
1076{
1077	int 			fpu_reserved[2];
1078	_STRUCT_FP_CONTROL	fpu_fcw;		/* x87 FPU control word */
1079	_STRUCT_FP_STATUS	fpu_fsw;		/* x87 FPU status word */
1080	__uint8_t		fpu_ftw;		/* x87 FPU tag word */
1081	__uint8_t		fpu_rsrv1;		/* reserved */ 
1082	__uint16_t		fpu_fop;		/* x87 FPU Opcode */
1083
1084	/* x87 FPU Instruction Pointer */
1085	__uint32_t		fpu_ip;			/* offset */
1086	__uint16_t		fpu_cs;			/* Selector */
1087
1088	__uint16_t		fpu_rsrv2;		/* reserved */
1089
1090	/* x87 FPU Instruction Operand(Data) Pointer */
1091	__uint32_t		fpu_dp;			/* offset */
1092	__uint16_t		fpu_ds;			/* Selector */
1093
1094	__uint16_t		fpu_rsrv3;		/* reserved */
1095	__uint32_t		fpu_mxcsr;		/* MXCSR Register state */
1096	__uint32_t		fpu_mxcsrmask;		/* MXCSR mask */
1097	_STRUCT_MMST_REG	fpu_stmm0;		/* ST0/MM0   */
1098	_STRUCT_MMST_REG	fpu_stmm1;		/* ST1/MM1  */
1099	_STRUCT_MMST_REG	fpu_stmm2;		/* ST2/MM2  */
1100	_STRUCT_MMST_REG	fpu_stmm3;		/* ST3/MM3  */
1101	_STRUCT_MMST_REG	fpu_stmm4;		/* ST4/MM4  */
1102	_STRUCT_MMST_REG	fpu_stmm5;		/* ST5/MM5  */
1103	_STRUCT_MMST_REG	fpu_stmm6;		/* ST6/MM6  */
1104	_STRUCT_MMST_REG	fpu_stmm7;		/* ST7/MM7  */
1105	_STRUCT_XMM_REG		fpu_xmm0;		/* XMM 0  */
1106	_STRUCT_XMM_REG		fpu_xmm1;		/* XMM 1  */
1107	_STRUCT_XMM_REG		fpu_xmm2;		/* XMM 2  */
1108	_STRUCT_XMM_REG		fpu_xmm3;		/* XMM 3  */
1109	_STRUCT_XMM_REG		fpu_xmm4;		/* XMM 4  */
1110	_STRUCT_XMM_REG		fpu_xmm5;		/* XMM 5  */
1111	_STRUCT_XMM_REG		fpu_xmm6;		/* XMM 6  */
1112	_STRUCT_XMM_REG		fpu_xmm7;		/* XMM 7  */
1113	_STRUCT_XMM_REG		fpu_xmm8;		/* XMM 8  */
1114	_STRUCT_XMM_REG		fpu_xmm9;		/* XMM 9  */
1115	_STRUCT_XMM_REG		fpu_xmm10;		/* XMM 10  */
1116	_STRUCT_XMM_REG		fpu_xmm11;		/* XMM 11 */
1117	_STRUCT_XMM_REG		fpu_xmm12;		/* XMM 12  */
1118	_STRUCT_XMM_REG		fpu_xmm13;		/* XMM 13  */
1119	_STRUCT_XMM_REG		fpu_xmm14;		/* XMM 14  */
1120	_STRUCT_XMM_REG		fpu_xmm15;		/* XMM 15  */
1121	char			fpu_rsrv4[6*16];	/* reserved */
1122	int 			fpu_reserved1;
1123	char			avx_reserved1[64];
1124	_STRUCT_XMM_REG		fpu_ymmh0;		/* YMMH 0  */
1125	_STRUCT_XMM_REG		fpu_ymmh1;		/* YMMH 1  */
1126	_STRUCT_XMM_REG		fpu_ymmh2;		/* YMMH 2  */
1127	_STRUCT_XMM_REG		fpu_ymmh3;		/* YMMH 3  */
1128	_STRUCT_XMM_REG		fpu_ymmh4;		/* YMMH 4  */
1129	_STRUCT_XMM_REG		fpu_ymmh5;		/* YMMH 5  */
1130	_STRUCT_XMM_REG		fpu_ymmh6;		/* YMMH 6  */
1131	_STRUCT_XMM_REG		fpu_ymmh7;		/* YMMH 7  */
1132	_STRUCT_XMM_REG		fpu_ymmh8;		/* YMMH 8  */
1133	_STRUCT_XMM_REG		fpu_ymmh9;		/* YMMH 9  */
1134	_STRUCT_XMM_REG		fpu_ymmh10;		/* YMMH 10  */
1135	_STRUCT_XMM_REG		fpu_ymmh11;		/* YMMH 11  */
1136	_STRUCT_XMM_REG		fpu_ymmh12;		/* YMMH 12  */
1137	_STRUCT_XMM_REG		fpu_ymmh13;		/* YMMH 13  */
1138	_STRUCT_XMM_REG		fpu_ymmh14;		/* YMMH 14  */
1139	_STRUCT_XMM_REG		fpu_ymmh15;		/* YMMH 15  */
1140};
1141
1142#define	_STRUCT_X86_AVX512_STATE64	struct x86_avx512_state64
1143_STRUCT_X86_AVX512_STATE64
1144{
1145	int 			fpu_reserved[2];
1146	_STRUCT_FP_CONTROL	fpu_fcw;		/* x87 FPU control word */
1147	_STRUCT_FP_STATUS	fpu_fsw;		/* x87 FPU status word */
1148	__uint8_t		fpu_ftw;		/* x87 FPU tag word */
1149	__uint8_t		fpu_rsrv1;		/* reserved */ 
1150	__uint16_t		fpu_fop;		/* x87 FPU Opcode */
1151
1152	/* x87 FPU Instruction Pointer */
1153	__uint32_t		fpu_ip;		/* offset */
1154	__uint16_t		fpu_cs;		/* Selector */
1155
1156	__uint16_t		fpu_rsrv2;		/* reserved */
1157
1158	/* x87 FPU Instruction Operand(Data) Pointer */
1159	__uint32_t		fpu_dp;		/* offset */
1160	__uint16_t		fpu_ds;		/* Selector */
1161
1162	__uint16_t		fpu_rsrv3;		/* reserved */
1163	__uint32_t		fpu_mxcsr;		/* MXCSR Register state */
1164	__uint32_t		fpu_mxcsrmask;	/* MXCSR mask */
1165	_STRUCT_MMST_REG	fpu_stmm0;		/* ST0/MM0   */
1166	_STRUCT_MMST_REG	fpu_stmm1;		/* ST1/MM1  */
1167	_STRUCT_MMST_REG	fpu_stmm2;		/* ST2/MM2  */
1168	_STRUCT_MMST_REG	fpu_stmm3;		/* ST3/MM3  */
1169	_STRUCT_MMST_REG	fpu_stmm4;		/* ST4/MM4  */
1170	_STRUCT_MMST_REG	fpu_stmm5;		/* ST5/MM5  */
1171	_STRUCT_MMST_REG	fpu_stmm6;		/* ST6/MM6  */
1172	_STRUCT_MMST_REG	fpu_stmm7;		/* ST7/MM7  */
1173	_STRUCT_XMM_REG		fpu_xmm0;		/* XMM 0  */
1174	_STRUCT_XMM_REG		fpu_xmm1;		/* XMM 1  */
1175	_STRUCT_XMM_REG		fpu_xmm2;		/* XMM 2  */
1176	_STRUCT_XMM_REG		fpu_xmm3;		/* XMM 3  */
1177	_STRUCT_XMM_REG		fpu_xmm4;		/* XMM 4  */
1178	_STRUCT_XMM_REG		fpu_xmm5;		/* XMM 5  */
1179	_STRUCT_XMM_REG		fpu_xmm6;		/* XMM 6  */
1180	_STRUCT_XMM_REG		fpu_xmm7;		/* XMM 7  */
1181	_STRUCT_XMM_REG		fpu_xmm8;		/* XMM 8  */
1182	_STRUCT_XMM_REG		fpu_xmm9;		/* XMM 9  */
1183	_STRUCT_XMM_REG		fpu_xmm10;		/* XMM 10  */
1184	_STRUCT_XMM_REG		fpu_xmm11;		/* XMM 11 */
1185	_STRUCT_XMM_REG		fpu_xmm12;		/* XMM 12  */
1186	_STRUCT_XMM_REG		fpu_xmm13;		/* XMM 13  */
1187	_STRUCT_XMM_REG		fpu_xmm14;		/* XMM 14  */
1188	_STRUCT_XMM_REG		fpu_xmm15;		/* XMM 15  */
1189	char			fpu_rsrv4[6*16];	/* reserved */
1190	int 			fpu_reserved1;
1191	char			avx_reserved1[64];
1192	_STRUCT_XMM_REG		fpu_ymmh0;		/* YMMH 0  */
1193	_STRUCT_XMM_REG		fpu_ymmh1;		/* YMMH 1  */
1194	_STRUCT_XMM_REG		fpu_ymmh2;		/* YMMH 2  */
1195	_STRUCT_XMM_REG		fpu_ymmh3;		/* YMMH 3  */
1196	_STRUCT_XMM_REG		fpu_ymmh4;		/* YMMH 4  */
1197	_STRUCT_XMM_REG		fpu_ymmh5;		/* YMMH 5  */
1198	_STRUCT_XMM_REG		fpu_ymmh6;		/* YMMH 6  */
1199	_STRUCT_XMM_REG		fpu_ymmh7;		/* YMMH 7  */
1200	_STRUCT_XMM_REG		fpu_ymmh8;		/* YMMH 8  */
1201	_STRUCT_XMM_REG		fpu_ymmh9;		/* YMMH 9  */
1202	_STRUCT_XMM_REG		fpu_ymmh10;		/* YMMH 10  */
1203	_STRUCT_XMM_REG		fpu_ymmh11;		/* YMMH 11  */
1204	_STRUCT_XMM_REG		fpu_ymmh12;		/* YMMH 12  */
1205	_STRUCT_XMM_REG		fpu_ymmh13;		/* YMMH 13  */
1206	_STRUCT_XMM_REG		fpu_ymmh14;		/* YMMH 14  */
1207	_STRUCT_XMM_REG		fpu_ymmh15;		/* YMMH 15  */
1208	_STRUCT_OPMASK_REG	fpu_k0;			/* K0 */
1209	_STRUCT_OPMASK_REG	fpu_k1;			/* K1 */
1210	_STRUCT_OPMASK_REG	fpu_k2;			/* K2 */
1211	_STRUCT_OPMASK_REG	fpu_k3;			/* K3 */
1212	_STRUCT_OPMASK_REG	fpu_k4;			/* K4 */
1213	_STRUCT_OPMASK_REG	fpu_k5;			/* K5 */
1214	_STRUCT_OPMASK_REG	fpu_k6;			/* K6 */
1215	_STRUCT_OPMASK_REG	fpu_k7;			/* K7 */
1216	_STRUCT_YMM_REG		fpu_zmmh0;		/* ZMMH 0  */
1217	_STRUCT_YMM_REG		fpu_zmmh1;		/* ZMMH 1  */
1218	_STRUCT_YMM_REG		fpu_zmmh2;		/* ZMMH 2  */
1219	_STRUCT_YMM_REG		fpu_zmmh3;		/* ZMMH 3  */
1220	_STRUCT_YMM_REG		fpu_zmmh4;		/* ZMMH 4  */
1221	_STRUCT_YMM_REG		fpu_zmmh5;		/* ZMMH 5  */
1222	_STRUCT_YMM_REG		fpu_zmmh6;		/* ZMMH 6  */
1223	_STRUCT_YMM_REG		fpu_zmmh7;		/* ZMMH 7  */
1224	_STRUCT_YMM_REG		fpu_zmmh8;		/* ZMMH 8  */
1225	_STRUCT_YMM_REG		fpu_zmmh9;		/* ZMMH 9  */
1226	_STRUCT_YMM_REG		fpu_zmmh10;		/* ZMMH 10  */
1227	_STRUCT_YMM_REG		fpu_zmmh11;		/* ZMMH 11  */
1228	_STRUCT_YMM_REG		fpu_zmmh12;		/* ZMMH 12  */
1229	_STRUCT_YMM_REG		fpu_zmmh13;		/* ZMMH 13  */
1230	_STRUCT_YMM_REG		fpu_zmmh14;		/* ZMMH 14  */
1231	_STRUCT_YMM_REG		fpu_zmmh15;		/* ZMMH 15  */
1232	_STRUCT_ZMM_REG		fpu_zmm16;		/* ZMM 16  */
1233	_STRUCT_ZMM_REG		fpu_zmm17;		/* ZMM 17  */
1234	_STRUCT_ZMM_REG		fpu_zmm18;		/* ZMM 18  */
1235	_STRUCT_ZMM_REG		fpu_zmm19;		/* ZMM 19  */
1236	_STRUCT_ZMM_REG		fpu_zmm20;		/* ZMM 20  */
1237	_STRUCT_ZMM_REG		fpu_zmm21;		/* ZMM 21  */
1238	_STRUCT_ZMM_REG		fpu_zmm22;		/* ZMM 22  */
1239	_STRUCT_ZMM_REG		fpu_zmm23;		/* ZMM 23  */
1240	_STRUCT_ZMM_REG		fpu_zmm24;		/* ZMM 24  */
1241	_STRUCT_ZMM_REG		fpu_zmm25;		/* ZMM 25  */
1242	_STRUCT_ZMM_REG		fpu_zmm26;		/* ZMM 26  */
1243	_STRUCT_ZMM_REG		fpu_zmm27;		/* ZMM 27  */
1244	_STRUCT_ZMM_REG		fpu_zmm28;		/* ZMM 28  */
1245	_STRUCT_ZMM_REG		fpu_zmm29;		/* ZMM 29  */
1246	_STRUCT_ZMM_REG		fpu_zmm30;		/* ZMM 30  */
1247	_STRUCT_ZMM_REG		fpu_zmm31;		/* ZMM 31  */
1248};
1249
1250#endif /* !__DARWIN_UNIX03 */
1251
1252#if __DARWIN_UNIX03
1253#define _STRUCT_X86_EXCEPTION_STATE64	struct __darwin_x86_exception_state64
1254_STRUCT_X86_EXCEPTION_STATE64
1255{
1256    __uint16_t	__trapno;
1257    __uint16_t	__cpu;
1258    __uint32_t	__err;
1259    __uint64_t	__faultvaddr;
1260};
1261#else /* !__DARWIN_UNIX03 */
1262#define _STRUCT_X86_EXCEPTION_STATE64	struct x86_exception_state64
1263_STRUCT_X86_EXCEPTION_STATE64
1264{
1265    __uint16_t	trapno;
1266    __uint16_t	cpu;
1267    __uint32_t	err;
1268    __uint64_t	faultvaddr;
1269};
1270#endif /* !__DARWIN_UNIX03 */
1271
1272#if __DARWIN_UNIX03
1273#define _STRUCT_X86_DEBUG_STATE64	struct __darwin_x86_debug_state64
1274_STRUCT_X86_DEBUG_STATE64
1275{
1276	__uint64_t	__dr0;
1277	__uint64_t	__dr1;
1278	__uint64_t	__dr2;
1279	__uint64_t	__dr3;
1280	__uint64_t	__dr4;
1281	__uint64_t	__dr5;
1282	__uint64_t	__dr6;
1283	__uint64_t	__dr7;
1284};
1285#else /* !__DARWIN_UNIX03 */
1286#define _STRUCT_X86_DEBUG_STATE64	struct x86_debug_state64
1287_STRUCT_X86_DEBUG_STATE64
1288{
1289	__uint64_t	dr0;
1290	__uint64_t	dr1;
1291	__uint64_t	dr2;
1292	__uint64_t	dr3;
1293	__uint64_t	dr4;
1294	__uint64_t	dr5;
1295	__uint64_t	dr6;
1296	__uint64_t	dr7;
1297};
1298#endif /* !__DARWIN_UNIX03 */
1299
1300#if __DARWIN_UNIX03
1301#define _STRUCT_X86_CPMU_STATE64	struct __darwin_x86_cpmu_state64
1302_STRUCT_X86_CPMU_STATE64
1303{
1304	__uint64_t __ctrs[16];
1305};
1306#else /* __DARWIN_UNIX03 */
1307#define _STRUCT_X86_CPMU_STATE64	struct x86_cpmu_state64
1308_STRUCT_X86_CPMU_STATE64
1309{
1310	__uint64_t ctrs[16];
1311};
1312#endif /* !__DARWIN_UNIX03 */
1313
1314#endif /* defined (__i386__) || defined (__x86_64__) */
1315
1316#endif /* _MACH_I386__STRUCTS_H_ */