-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/asm.h
- * PURPOSE: Defintions for Structures used in Assembly Code
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
- * UPDATE HISTORY:
- * Created 07/19/05
- */
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu. All rights reserved.
+
+Header Name:
+
+ asm.h
+
+Abstract:
+
+ ASM Offsets for dealing with de-referencing structures in registers.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _ASM_H
#define _ASM_H
-/* DEPENDENCIES **************************************************************/
-
-/* EXPORTED DATA *************************************************************/
-
-/* CONSTANTS *****************************************************************/
-
-/*
- * Definitions for the offsets of members in the KV86M_REGISTERS
- */
-#define KV86M_REGISTERS_EBP 0x0
-#define KV86M_REGISTERS_EDI 0x4
-#define KV86M_REGISTERS_ESI 0x8
-#define KV86M_REGISTERS_EDX 0xC
-#define KV86M_REGISTERS_ECX 0x10
-#define KV86M_REGISTERS_EBX 0x14
-#define KV86M_REGISTERS_EAX 0x18
-#define KV86M_REGISTERS_DS 0x1C
-#define KV86M_REGISTERS_ES 0x20
-#define KV86M_REGISTERS_FS 0x24
-#define KV86M_REGISTERS_GS 0x28
-#define KV86M_REGISTERS_EIP 0x2C
-#define KV86M_REGISTERS_CS 0x30
-#define KV86M_REGISTERS_EFLAGS 0x34
-#define KV86M_REGISTERS_ESP 0x38
-#define KV86M_REGISTERS_SS 0x3C
-
-#define TF_SAVED_EXCEPTION_STACK 0x8C
-#define TF_REGS 0x90
-#define TF_ORIG_EBP 0x94
-
-/* TSS Offsets */
-#define KTSS_ESP0 0x4
-#define KTSS_CR3 0x1C
-#define KTSS_EFLAGS 0x24
-#define KTSS_IOMAPBASE 0x66
-
-/*
- * Defines for accessing KPCR and KTHREAD structure members
- */
-#define KTHREAD_DEBUG_ACTIVE 0x03
-#define KTHREAD_INITIAL_STACK 0x18
-#define KTHREAD_STACK_LIMIT 0x1C
-#define KTHREAD_TEB 0x20
-#define KTHREAD_KERNEL_STACK 0x28
-#define KTHREAD_NPX_STATE 0x31
-#define KTHREAD_STATE 0x2D
-#define KTHREAD_ALERTED 0x2E
-#define KTHREAD_APCSTATE_PROCESS 0x34 + 0x10
-#define KTHREAD_PENDING_USER_APC 0x34 + 0x16
-#define KTHREAD_PENDING_KERNEL_APC 0x34 + 0x15
-#define KTHREAD_CONTEXT_SWITCHES 0x4C
-#define KTHREAD_WAIT_IRQL 0x54
-#define KTHREAD_SERVICE_TABLE 0xDC
-#define KTHREAD_PREVIOUS_MODE 0x137
-#define KTHREAD_TRAP_FRAME 0x128
-#define KTHREAD_CALLBACK_STACK 0x120
-
-#define KPROCESS_DIRECTORY_TABLE_BASE 0x18
-#define KPROCESS_LDT_DESCRIPTOR0 0x20
-#define KPROCESS_LDT_DESCRIPTOR1 0x24
-#define KPROCESS_IOPM_OFFSET 0x30
-
-#define KPCR_EXCEPTION_LIST 0x0
-#define KPCR_INITIAL_STACK 0x4
-#define KPCR_STACK_LIMIT 0x8
-#define KPCR_TEB 0x18
-#define KPCR_SELF 0x1C
-#define KPCR_GDT 0x3C
-#define KPCR_TSS 0x40
-#define KPCR_CURRENT_THREAD 0x124
-#define KPCR_NPX_THREAD 0x2F4
-
-/* FPU Save Area Offsets */
-#define FN_CONTROL_WORD 0x0
-#define FN_STATUS_WORD 0x4
-#define FN_TAG_WORD 0x8
-#define FN_DATA_SELECTOR 0x18
-#define FN_CR0_NPX_STATE 0x20C
-#define SIZEOF_FX_SAVE_AREA 528
-
-/* Trap Frame Offsets */
-#define KTRAP_FRAME_DEBUGEBP 0x0
-#define KTRAP_FRAME_DEBUGEIP 0x4
-#define KTRAP_FRAME_DEBUGARGMARK 0x8
-#define KTRAP_FRAME_DEBUGPOINTER 0xC
-#define KTRAP_FRAME_TEMPCS 0x10
-#define KTRAP_FRAME_TEMPESP 0x14
-#define KTRAP_FRAME_DR0 0x18
-#define KTRAP_FRAME_DR1 0x1C
-#define KTRAP_FRAME_DR2 0x20
-#define KTRAP_FRAME_DR3 0x24
-#define KTRAP_FRAME_DR6 0x28
-#define KTRAP_FRAME_DR7 0x2C
-#define KTRAP_FRAME_GS 0x30
-#define KTRAP_FRAME_RESERVED1 0x32
-#define KTRAP_FRAME_ES 0x34
-#define KTRAP_FRAME_RESERVED2 0x36
-#define KTRAP_FRAME_DS 0x38
-#define KTRAP_FRAME_RESERVED3 0x3A
-#define KTRAP_FRAME_EDX 0x3C
-#define KTRAP_FRAME_ECX 0x40
-#define KTRAP_FRAME_EAX 0x44
-#define KTRAP_FRAME_PREVIOUS_MODE 0x48
-#define KTRAP_FRAME_EXCEPTION_LIST 0x4C
-#define KTRAP_FRAME_FS 0x50
-#define KTRAP_FRAME_RESERVED4 0x52
-#define KTRAP_FRAME_EDI 0x54
-#define KTRAP_FRAME_ESI 0x58
-#define KTRAP_FRAME_EBX 0x5C
-#define KTRAP_FRAME_EBP 0x60
-#define KTRAP_FRAME_ERROR_CODE 0x64
-#define KTRAP_FRAME_EIP 0x68
-#define KTRAP_FRAME_CS 0x6C
-#define KTRAP_FRAME_EFLAGS 0x70
-#define KTRAP_FRAME_ESP 0x74
-#define KTRAP_FRAME_SS 0x78
-#define KTRAP_FRAME_RESERVED5 0x7A
-#define KTRAP_FRAME_V86_ES 0x7C
-#define KTRAP_FRAME_RESERVED6 0x7E
-#define KTRAP_FRAME_V86_DS 0x80
-#define KTRAP_FRAME_RESERVED7 0x82
-#define KTRAP_FRAME_V86_FS 0x84
-#define KTRAP_FRAME_RESERVED8 0x86
-#define KTRAP_FRAME_V86_GS 0x88
-#define KTRAP_FRAME_RESERVED9 0x8A
-#define KTRAP_FRAME_SIZE 0x8C
-
-/* User Shared Data */
-#define KERNEL_USER_SHARED_DATA 0x7FFE0000
-#define KUSER_SHARED_PROCESSOR_FEATURES KERNEL_USER_SHARED_DATA + 0x274
-#define KUSER_SHARED_SYSCALL KERNEL_USER_SHARED_DATA + 0x300
-#define KUSER_SHARED_SYSCALL_RET KERNEL_USER_SHARED_DATA + 0x304
-#define PROCESSOR_FEATURE_FXSR KUSER_SHARED_PROCESSOR_FEATURES + 0x4
-
-/* CONTEXT CONSTANTS */
-#define CONTEXT_FLAGS 0x0
-#define CONTEXT_DR6 0x14
-#define CONTEXT_FLOAT_SAVE 0x1C
-#define CONTEXT_SEGGS 0x8C
-#define CONTEXT_SEGFS 0x90
-#define CONTEXT_SEGES 0x94
-#define CONTEXT_SEGDS 0x98
-#define CONTEXT_EDI 0x9C
-#define CONTEXT_ESI 0xA0
-#define CONTEXT_EBX 0xA4
-#define CONTEXT_EDX 0xA8
-#define CONTEXT_ECX 0xAC
-#define CONTEXT_EAX 0xB0
-#define CONTEXT_EBP 0xB4
-#define CONTEXT_EIP 0xB8
-#define CONTEXT_SEGCS 0xBC
-#define CONTEXT_EFLAGS 0xC0
-#define CONTEXT_ESP 0xC4
-#define CONTEXT_SEGSS 0xC8
-#define CONTEXT_FLOAT_SAVE_CONTROL_WORD CONTEXT_FLOAT_SAVE + FN_CONTROL_WORD
-#define CONTEXT_FLOAT_SAVE_STATUS_WORD CONTEXT_FLOAT_SAVE + FN_STATUS_WORD
-#define CONTEXT_FLOAT_SAVE_TAG_WORD CONTEXT_FLOAT_SAVE + FN_TAG_WORD
-
-/* EXCEPTION_RECORD Constants */
-#define EXCEPTION_RECORD_EXCEPTION_CODE 0x0
-#define EXCEPTION_RECORD_EXCEPTION_FLAGS 0x4
-#define EXCEPTION_RECORD_EXCEPTION_RECORD 0x8
-#define EXCEPTION_RECORD_EXCEPTION_ADDRESS 0xC
-#define EXCEPTION_RECORD_NUMBER_PARAMETERS 0x10
-#define SIZEOF_EXCEPTION_RECORD 0x14
-
-/* TEB CONSTANTS */
-#define TEB_EXCEPTION_LIST 0x0
-#define TEB_STACK_BASE 0x4
-#define TEB_STACK_LIMIT 0x8
-#define TEB_FIBER_DATA 0x10
-#define TEB_PEB 0x30
-#define TEB_EXCEPTION_CODE 0x1A4
-#define TEB_ACTIVATION_CONTEXT_STACK_POINTER 0x1A8
-#define TEB_DEALLOCATION_STACK 0xE0C
-#define TEB_GUARANTEED_STACK_BYTES 0xF78
-#define TEB_FLS_DATA 0xFB4
-
-/* PEB CONSTANTS */
-#define PEB_KERNEL_CALLBACK_TABLE 0x2C
-
-/* FIBER CONSTANTS */
-#define FIBER_PARAMETER 0x0
-#define FIBER_EXCEPTION_LIST 0x4
-#define FIBER_STACK_BASE 0x8
-#define FIBER_STACK_LIMIT 0xC
-#define FIBER_DEALLOCATION_STACK 0x10
-#define FIBER_CONTEXT 0x14
-#define FIBER_GUARANTEED_STACK_BYTES 0x2E0
-#define FIBER_FLS_DATA 0x2E4
-#define FIBER_ACTIVATION_CONTEXT_STACK 0x2E8
-#define FIBER_CONTEXT_FLAGS FIBER_CONTEXT + CONTEXT_FLAGS
-#define FIBER_CONTEXT_EAX FIBER_CONTEXT + CONTEXT_EAX
-#define FIBER_CONTEXT_EBX FIBER_CONTEXT + CONTEXT_EBX
-#define FIBER_CONTEXT_ECX FIBER_CONTEXT + CONTEXT_ECX
-#define FIBER_CONTEXT_EDX FIBER_CONTEXT + CONTEXT_EDX
-#define FIBER_CONTEXT_ESI FIBER_CONTEXT + CONTEXT_ESI
-#define FIBER_CONTEXT_EDI FIBER_CONTEXT + CONTEXT_EDI
-#define FIBER_CONTEXT_EBP FIBER_CONTEXT + CONTEXT_EBP
-#define FIBER_CONTEXT_ESP FIBER_CONTEXT + CONTEXT_ESP
-#define FIBER_CONTEXT_DR6 FIBER_CONTEXT + CONTEXT_DR6
-#define FIBER_CONTEXT_FLOAT_SAVE_STATUS_WORD FIBER_CONTEXT + CONTEXT_FLOAT_SAVE_STATUS_WORD
+//
+// Selector Names
+//
+#define RPL_MASK 0x0003
+#define MODE_MASK 0x0001
+#define KGDT_R0_CODE (0x8)
+#define KGDT_R0_DATA (0x10)
+#define KGDT_R3_CODE (0x18)
+#define KGDT_R3_DATA (0x20)
+#define KGDT_TSS (0x28)
+#define KGDT_R0_PCR (0x30)
+#define KGDT_R3_TEB (0x38)
+#define KGDT_LDT (0x48)
+#define KGDT_DF_TSS (0x50)
+#define KGDT_NMI_TSS (0x58)
+
+//
+// KV86M_REGISTERS Offsets
+//
+#define KV86M_REGISTERS_EBP 0x0
+#define KV86M_REGISTERS_EDI 0x4
+#define KV86M_REGISTERS_ESI 0x8
+#define KV86M_REGISTERS_EDX 0xC
+#define KV86M_REGISTERS_ECX 0x10
+#define KV86M_REGISTERS_EBX 0x14
+#define KV86M_REGISTERS_EAX 0x18
+#define KV86M_REGISTERS_DS 0x1C
+#define KV86M_REGISTERS_ES 0x20
+#define KV86M_REGISTERS_FS 0x24
+#define KV86M_REGISTERS_GS 0x28
+#define KV86M_REGISTERS_EIP 0x2C
+#define KV86M_REGISTERS_CS 0x30
+#define KV86M_REGISTERS_EFLAGS 0x34
+#define KV86M_REGISTERS_ESP 0x38
+#define KV86M_REGISTERS_SS 0x3C
+#define TF_SAVED_EXCEPTION_STACK 0x8C
+#define TF_REGS 0x90
+#define TF_ORIG_EBP 0x94
+
+//
+// TSS Offsets
+//
+#define KTSS_ESP0 0x4
+#define KTSS_CR3 0x1C
+#define KTSS_EFLAGS 0x24
+#define KTSS_IOMAPBASE 0x66
+#define KTSS_IO_MAPS 0x68
+
+//
+// KTHREAD Offsets
+//
+#define KTHREAD_DEBUG_ACTIVE 0x03
+#define KTHREAD_INITIAL_STACK 0x18
+#define KTHREAD_STACK_LIMIT 0x1C
+#define KTHREAD_TEB 0x74
+#define KTHREAD_KERNEL_STACK 0x20
+#define KTHREAD_NPX_STATE 0x4D
+#define KTHREAD_STATE 0x4C
+#define KTHREAD_ALERTED 0x5E
+#define KTHREAD_APCSTATE_PROCESS 0x28 + 0x10
+#define KTHREAD_PENDING_USER_APC 0x28 + 0x16
+#define KTHREAD_PENDING_KERNEL_APC 0x28 + 0x15
+#define KTHREAD_CONTEXT_SWITCHES 0x48
+#define KTHREAD_WAIT_IRQL 0x4E
+#define KTHREAD_SERVICE_TABLE 0x118
+#define KTHREAD_PREVIOUS_MODE 0xD7
+#define KTHREAD_TRAP_FRAME 0x110
+#define KTHREAD_CALLBACK_STACK 0x114
+
+//
+// KPROCESS Offsets
+//
+#define KPROCESS_DIRECTORY_TABLE_BASE 0x18
+#define KPROCESS_LDT_DESCRIPTOR0 0x20
+#define KPROCESS_LDT_DESCRIPTOR1 0x24
+#define KPROCESS_IOPM_OFFSET 0x30
+
+//
+// KPCR Offsets
+//
+#define KPCR_EXCEPTION_LIST 0x0
+#define KPCR_INITIAL_STACK 0x4
+#define KPCR_STACK_LIMIT 0x8
+#define KPCR_SET_MEMBER_COPY 0x14
+#define KPCR_TEB 0x18
+#define KPCR_SELF 0x1C
+#define KPCR_PRCB 0x20
+#define KPCR_KD_VERSION_BLOCK 0x34
+#define KPCR_GDT 0x3C
+#define KPCR_TSS 0x40
+#define KPCR_SET_MEMBER 0x48
+#define KPCR_NUMBER 0x51
+#define KPCR_CURRENT_THREAD 0x124
+#define KPCR_PROCESSOR_NUMBER 0x130
+#define KPCR_PRCB_SET_MEMBER 0x134
+#define KPCR_NPX_THREAD 0x2F4
+#define KPCR_DR6 0x428
+#define KPCR_DR7 0x42C
+
+//
+// KGDTENTRY Offsets
+//
+#define KGDT_BASE_LOW 0x2
+#define KGDT_BASE_MID 0x4
+#define KGDT_BASE_HI 0x7
+#define KGDT_LIMIT_HI 0x6
+#define KGDT_LIMIT_LOW 0x0
+
+//
+// FPU Save Area Offsets
+//
+#define FN_CONTROL_WORD 0x0
+#define FN_STATUS_WORD 0x4
+#define FN_TAG_WORD 0x8
+#define FN_DATA_SELECTOR 0x18
+#define FN_CR0_NPX_STATE 0x20C
+#define SIZEOF_FX_SAVE_AREA 528
+#define NPX_FRAME_LENGTH 0x210
+
+//
+// Trap Frame Offsets
+//
+#define KTRAP_FRAME_DEBUGEBP 0x0
+#define KTRAP_FRAME_DEBUGEIP 0x4
+#define KTRAP_FRAME_DEBUGARGMARK 0x8
+#define KTRAP_FRAME_DEBUGPOINTER 0xC
+#define KTRAP_FRAME_TEMPCS 0x10
+#define KTRAP_FRAME_TEMPESP 0x14
+#define KTRAP_FRAME_DR0 0x18
+#define KTRAP_FRAME_DR1 0x1C
+#define KTRAP_FRAME_DR2 0x20
+#define KTRAP_FRAME_DR3 0x24
+#define KTRAP_FRAME_DR6 0x28
+#define KTRAP_FRAME_DR7 0x2C
+#define KTRAP_FRAME_GS 0x30
+#define KTRAP_FRAME_RESERVED1 0x32
+#define KTRAP_FRAME_ES 0x34
+#define KTRAP_FRAME_RESERVED2 0x36
+#define KTRAP_FRAME_DS 0x38
+#define KTRAP_FRAME_RESERVED3 0x3A
+#define KTRAP_FRAME_EDX 0x3C
+#define KTRAP_FRAME_ECX 0x40
+#define KTRAP_FRAME_EAX 0x44
+#define KTRAP_FRAME_PREVIOUS_MODE 0x48
+#define KTRAP_FRAME_EXCEPTION_LIST 0x4C
+#define KTRAP_FRAME_FS 0x50
+#define KTRAP_FRAME_RESERVED4 0x52
+#define KTRAP_FRAME_EDI 0x54
+#define KTRAP_FRAME_ESI 0x58
+#define KTRAP_FRAME_EBX 0x5C
+#define KTRAP_FRAME_EBP 0x60
+#define KTRAP_FRAME_ERROR_CODE 0x64
+#define KTRAP_FRAME_EIP 0x68
+#define KTRAP_FRAME_CS 0x6C
+#define KTRAP_FRAME_EFLAGS 0x70
+#define KTRAP_FRAME_ESP 0x74
+#define KTRAP_FRAME_SS 0x78
+#define KTRAP_FRAME_RESERVED5 0x7A
+#define KTRAP_FRAME_V86_ES 0x7C
+#define KTRAP_FRAME_RESERVED6 0x7E
+#define KTRAP_FRAME_V86_DS 0x80
+#define KTRAP_FRAME_RESERVED7 0x82
+#define KTRAP_FRAME_V86_FS 0x84
+#define KTRAP_FRAME_RESERVED8 0x86
+#define KTRAP_FRAME_V86_GS 0x88
+#define KTRAP_FRAME_RESERVED9 0x8A
+#define KTRAP_FRAME_SIZE 0x8C
+#define KTRAP_FRAME_LENGTH 0x8C
+#define KTRAP_FRAME_ALIGN 0x04
+
+//
+// KUSER_SHARED_DATA Offsets
+//
+#define KERNEL_USER_SHARED_DATA 0x7FFE0000
+#define KUSER_SHARED_PROCESSOR_FEATURES KERNEL_USER_SHARED_DATA + 0x274
+#define KUSER_SHARED_SYSCALL KERNEL_USER_SHARED_DATA + 0x300
+#define KUSER_SHARED_SYSCALL_RET KERNEL_USER_SHARED_DATA + 0x304
+#define PROCESSOR_FEATURE_FXSR KUSER_SHARED_PROCESSOR_FEATURES + 0x4
+
+//
+// CONTEXT Offsets
+//
+#define CONTEXT_FLAGS 0x0
+#define CONTEXT_DR6 0x14
+#define CONTEXT_FLOAT_SAVE 0x1C
+#define CONTEXT_SEGGS 0x8C
+#define CONTEXT_SEGFS 0x90
+#define CONTEXT_SEGES 0x94
+#define CONTEXT_SEGDS 0x98
+#define CONTEXT_EDI 0x9C
+#define CONTEXT_ESI 0xA0
+#define CONTEXT_EBX 0xA4
+#define CONTEXT_EDX 0xA8
+#define CONTEXT_ECX 0xAC
+#define CONTEXT_EAX 0xB0
+#define CONTEXT_EBP 0xB4
+#define CONTEXT_EIP 0xB8
+#define CONTEXT_SEGCS 0xBC
+#define CONTEXT_EFLAGS 0xC0
+#define CONTEXT_ESP 0xC4
+#define CONTEXT_SEGSS 0xC8
+#define CONTEXT_FLOAT_SAVE_CONTROL_WORD CONTEXT_FLOAT_SAVE + FN_CONTROL_WORD
+#define CONTEXT_FLOAT_SAVE_STATUS_WORD CONTEXT_FLOAT_SAVE + FN_STATUS_WORD
+#define CONTEXT_FLOAT_SAVE_TAG_WORD CONTEXT_FLOAT_SAVE + FN_TAG_WORD
+
+//
+// EXCEPTION_RECORD Offsets
+//
+#define EXCEPTION_RECORD_EXCEPTION_CODE 0x0
+#define EXCEPTION_RECORD_EXCEPTION_FLAGS 0x4
+#define EXCEPTION_RECORD_EXCEPTION_RECORD 0x8
+#define EXCEPTION_RECORD_EXCEPTION_ADDRESS 0xC
+#define EXCEPTION_RECORD_NUMBER_PARAMETERS 0x10
+#define SIZEOF_EXCEPTION_RECORD 0x14
+
+//
+// TEB Offsets
+//
+#define TEB_EXCEPTION_LIST 0x0
+#define TEB_STACK_BASE 0x4
+#define TEB_STACK_LIMIT 0x8
+#define TEB_FIBER_DATA 0x10
+#define TEB_PEB 0x30
+#define TEB_EXCEPTION_CODE 0x1A4
+#define TEB_ACTIVATION_CONTEXT_STACK_POINTER 0x1A8
+#define TEB_DEALLOCATION_STACK 0xE0C
+#define TEB_GUARANTEED_STACK_BYTES 0xF78
+#define TEB_FLS_DATA 0xFB4
+
+//
+// PEB Offsets
+//
+#define PEB_KERNEL_CALLBACK_TABLE 0x2C
+
+//
+// FIBER Offsets
+//
+#define FIBER_PARAMETER 0x0
+#define FIBER_EXCEPTION_LIST 0x4
+#define FIBER_STACK_BASE 0x8
+#define FIBER_STACK_LIMIT 0xC
+#define FIBER_DEALLOCATION_STACK 0x10
+#define FIBER_CONTEXT 0x14
+#define FIBER_GUARANTEED_STACK_BYTES 0x2E0
+#define FIBER_FLS_DATA 0x2E4
+#define FIBER_ACTIVATION_CONTEXT_STACK 0x2E8
+#define FIBER_CONTEXT_FLAGS FIBER_CONTEXT + CONTEXT_FLAGS
+#define FIBER_CONTEXT_EAX FIBER_CONTEXT + CONTEXT_EAX
+#define FIBER_CONTEXT_EBX FIBER_CONTEXT + CONTEXT_EBX
+#define FIBER_CONTEXT_ECX FIBER_CONTEXT + CONTEXT_ECX
+#define FIBER_CONTEXT_EDX FIBER_CONTEXT + CONTEXT_EDX
+#define FIBER_CONTEXT_ESI FIBER_CONTEXT + CONTEXT_ESI
+#define FIBER_CONTEXT_EDI FIBER_CONTEXT + CONTEXT_EDI
+#define FIBER_CONTEXT_EBP FIBER_CONTEXT + CONTEXT_EBP
+#define FIBER_CONTEXT_ESP FIBER_CONTEXT + CONTEXT_ESP
+#define FIBER_CONTEXT_DR6 FIBER_CONTEXT + CONTEXT_DR6
+#define FIBER_CONTEXT_FLOAT_SAVE_STATUS_WORD FIBER_CONTEXT + CONTEXT_FLOAT_SAVE_STATUS_WORD
#define FIBER_CONTEXT_FLOAT_SAVE_CONTROL_WORD FIBER_CONTEXT + CONTEXT_FLOAT_SAVE_CONTROL_WORD
#define FIBER_CONTEXT_FLOAT_SAVE_TAG_WORD FIBER_CONTEXT + CONTEXT_FLOAT_SAVE_TAG_WORD
-#endif
+
+//
+// EFLAGS
+//
+#define EFLAGS_TF 0x100
+#define EFLAGS_INTERRUPT_MASK 0x200
+#define EFLAGS_NESTED_TASK 0x4000
+#define EFLAGS_V86_MASK 0x20000
+#define EFLAGS_ALIGN_CHECK 0x40000
+#define EFLAGS_VIF 0x80000
+#define EFLAGS_VIP 0x100000
+
+//
+// CR0
+//
+#define CR0_PE 0x1
+#define CR0_MP 0x2
+#define CR0_EM 0x4
+#define CR0_TS 0x8
+#define CR0_ET 0x10
+#define CR0_NE 0x20
+#define CR0_WP 0x10000
+#define CR0_AM 0x40000
+#define CR0_NW 0x20000000
+#define CR0_CD 0x40000000
+#define CR0_PG 0x80000000
+
+//
+// Generic Definitions
+//
+#define MAXIMUM_IDTVECTOR 0xFF
+#endif // !_ASM_H