;; @file
; IPRT - X86 and AMD64 Structures and Definitions that are not automatically
; converted from the C header file.
;
;
; Copyright (C) 2012-2013 Oracle Corporation
;
; This file is part of VirtualBox Open Source Edition (OSE), as
; available from http://www.virtualbox.org. This file is free software;
; you can redistribute it and/or modify it under the terms of the GNU
; General Public License (GPL) as published by the Free Software
; Foundation, in version 2 as it comes in the "COPYING" file of the
; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
;
; The contents of this file may alternatively be used under the terms
; of the Common Development and Distribution License Version 1.0
; (CDDL) only, as it comes in the "COPYING.CDDL" file of the
; VirtualBox OSE distribution, in which case the provisions of the
; CDDL are applicable instead of those of the GPL.
;
; You may elect to license modified versions of this file under the
; terms and conditions of either the GPL or the CDDL or both.
;
%ifndef ___iprt_x86extra_mac
%define ___iprt_x86extra_mac
%define X86_XCPT_DE 0x00
%define X86_XCPT_DB 0x01
%define X86_XCPT_NMI 0x02
%define X86_XCPT_BP 0x03
%define X86_XCPT_OF 0x04
%define X86_XCPT_BR 0x05
%define X86_XCPT_UD 0x06
%define X86_XCPT_NM 0x07
%define X86_XCPT_DF 0x08
%define X86_XCPT_CO_SEG_OVERRUN 0x09
%define X86_XCPT_TS 0x0a
%define X86_XCPT_NP 0x0b
%define X86_XCPT_SS 0x0c
%define X86_XCPT_GP 0x0d
%define X86_XCPT_PF 0x0e
%define X86_XCPT_MF 0x10
%define X86_XCPT_AC 0x11
%define X86_XCPT_MC 0x12
%define X86_XCPT_XF 0x13
%define X86_XCPT_VE 0x14
%define X86_XCPT_SX 0x1f
%define PAGE_SIZE 0x1000
;;
; 32-bit protected mode fstenv image.
;
struc X86FSTENV32P
.FCW resw 1
.padding1 resw 1
.FSW resw 1
.padding2 resw 1
.FTW resw 1
.padding3 resw 1
.FPUIP resd 1
.FPUCS resw 1
.FOP resw 1
.FPUDP resd 1
.FPUDS resw 1
.padding4 resw 1
endstruc
;;
; The image saved by FXSAVE.
;
struc X86FXSTATE
.FCW resw 1
.FSW resw 1
.FTW resw 1
.FOP resw 1
.FPUIP resd 1
.FPUCS resw 1
.Rsrvd1 resw 1
.FPUDP resd 1
.FPUDS resw 1
.Rsrvd2 resw 1
.MXCSR resd 1
.MXCSR_MASK resd 1
.st0 resd 4
.st1 resd 4
.st2 resd 4
.st3 resd 4
.st4 resd 4
.st5 resd 4
.st6 resd 4
.st7 resd 4
.xmm0 resd 4
.xmm1 resd 4
.xmm2 resd 4
.xmm3 resd 4
.xmm4 resd 4
.xmm5 resd 4
.xmm6 resd 4
.xmm7 resd 4
.xmm8 resd 4
.xmm9 resd 4
.xmm10 resd 4
.xmm11 resd 4
.xmm12 resd 4
.xmm13 resd 4
.xmm14 resd 4
.xmm15 resd 4
.au32RsrvdRest resd 24
endstruc
struc X86TSS16
.selPrev resw 1
.sp0 resw 1
.ss0 resw 1
.sp1 resw 1
.ss1 resw 1
.sp2 resw 1
.ss2 resw 1
.ip resw 1
.flags resw 1
.ax resw 1
.cx resw 1
.dx resw 1
.bx resw 1
.sp resw 1
.bp resw 1
.si resw 1
.di resw 1
.es resw 1
.cs resw 1
.ss resw 1
.ds resw 1
.selLdt resw 1
endstruc
AssertCompileSize(X86TSS16, 44)
struc X86TSS32
.selPrev resw 1
.padding1 resw 1
.esp0 resd 1
.ss0 resw 1
.padding_ss0 resw 1
.esp1 resd 1
.ss1 resw 1
.padding_ss1 resw 1
.esp2 resd 1
.ss2 resw 1
.padding_ss2 resw 1
.cr3 resd 1
.eip resd 1
.eflags resd 1
.eax resd 1
.ecx resd 1
.edx resd 1
.ebx resd 1
.esp resd 1
.ebp resd 1
.esi resd 1
.edi resd 1
.es resw 1
.padding_es resw 1
.cs resw 1
.padding_cs resw 1
.ss resw 1
.padding_ss resw 1
.ds resw 1
.padding_ds resw 1
.fs resw 1
.padding_fs resw 1
.gs resw 1
.padding_gs resw 1
.selLdt resw 1
.padding_ldt resw 1
.fDebugTrap resw 1
.offIoBitmap resw 1
.IntRedirBitmap resb 32
endstruc
struc X86TSS64
.u32Reserved resd 1
.rsp0 resq 1
.rsp1 resq 1
.rsp2 resq 1
.u32Reserved2 resd 2
.ist1 resq 1
.ist2 resq 1
.ist3 resq 1
.ist4 resq 1
.ist5 resq 1
.ist6 resq 1
.ist7 resq 1
.u16Reserved resw 5
.offIoBitmap resw 1
.IntRedirBitmap resb 32
endstruc
AssertCompileSize(X86TSS64, 136)
%endif