-/*\r
- * PROJECT: ReactOS Native Headers\r
- * FILE: include/ndk/asm.h\r
- * PURPOSE: Defintions for Structures used in Assembly Code\r
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)\r
- * UPDATE HISTORY:\r
- * Created 07/19/05\r
- */\r
-#ifndef _ASM_H\r
-#define _ASM_H\r
-\r
-/* DEPENDENCIES **************************************************************/\r
-\r
-/* EXPORTED DATA *************************************************************/\r
-\r
-/* CONSTANTS *****************************************************************/\r
-\r
-/*\r
- * Definitions for the offsets of members in the KV86M_REGISTERS\r
- */\r
-#define KV86M_REGISTERS_EBP 0x0\r
-#define KV86M_REGISTERS_EDI 0x4\r
-#define KV86M_REGISTERS_ESI 0x8\r
-#define KV86M_REGISTERS_EDX 0xC\r
-#define KV86M_REGISTERS_ECX 0x10\r
-#define KV86M_REGISTERS_EBX 0x14\r
-#define KV86M_REGISTERS_EAX 0x18\r
-#define KV86M_REGISTERS_DS 0x1C\r
-#define KV86M_REGISTERS_ES 0x20\r
-#define KV86M_REGISTERS_FS 0x24\r
-#define KV86M_REGISTERS_GS 0x28\r
-#define KV86M_REGISTERS_EIP 0x2C\r
-#define KV86M_REGISTERS_CS 0x30\r
-#define KV86M_REGISTERS_EFLAGS 0x34\r
-#define KV86M_REGISTERS_ESP 0x38\r
-#define KV86M_REGISTERS_SS 0x3C\r
-\r
-#define TF_SAVED_EXCEPTION_STACK 0x8C\r
-#define TF_REGS 0x90\r
-#define TF_ORIG_EBP 0x94\r
-\r
-/* TSS Offsets */\r
-#define KTSS_ESP0 0x4\r
-#define KTSS_CR3 0x1C\r
-#define KTSS_EFLAGS 0x24\r
-#define KTSS_IOMAPBASE 0x66\r
-\r
-/*\r
- * Defines for accessing KPCR and KTHREAD structure members\r
- */\r
-#define KTHREAD_INITIAL_STACK 0x18\r
-#define KTHREAD_STACK_LIMIT 0x1C\r
-#define KTHREAD_TEB 0x20\r
-#define KTHREAD_KERNEL_STACK 0x28\r
-#define KTHREAD_NPX_STATE 0x31\r
-#define KTHREAD_STATE 0x2D\r
-#define KTHREAD_APCSTATE_PROCESS 0x34 + 0x10\r
-#define KTHREAD_PENDING_USER_APC 0x34 + 0x16\r
-#define KTHREAD_PENDING_KERNEL_APC 0x34 + 0x15\r
-#define KTHREAD_CONTEXT_SWITCHES 0x4C\r
-#define KTHREAD_WAIT_IRQL 0x54\r
-#define KTHREAD_SERVICE_TABLE 0xDC\r
-#define KTHREAD_PREVIOUS_MODE 0x137\r
-#define KTHREAD_TRAP_FRAME 0x128\r
-#define KTHREAD_CALLBACK_STACK 0x120\r
-\r
-#define KPROCESS_DIRECTORY_TABLE_BASE 0x18\r
-#define KPROCESS_LDT_DESCRIPTOR0 0x20\r
-#define KPROCESS_LDT_DESCRIPTOR1 0x24\r
-#define KPROCESS_IOPM_OFFSET 0x30\r
-\r
-#define KPCR_EXCEPTION_LIST 0x0\r
-#define KPCR_INITIAL_STACK 0x4\r
-#define KPCR_STACK_LIMIT 0x8\r
-#define KPCR_SELF 0x1C\r
-#define KPCR_GDT 0x3C\r
-#define KPCR_TSS 0x40\r
-#define KPCR_CURRENT_THREAD 0x124\r
-#define KPCR_NPX_THREAD 0x2F4\r
-\r
-/* FPU Save Area Offsets */\r
-#define FN_CONTROL_WORD 0x0\r
-#define FN_STATUS_WORD 0x4\r
-#define FN_TAG_WORD 0x8\r
-#define FN_DATA_SELECTOR 0x18\r
-#define FN_CR0_NPX_STATE 0x20C\r
-#define SIZEOF_FX_SAVE_AREA 528\r
-\r
-/* Trap Frame Offsets */\r
-#define KTRAP_FRAME_DEBUGEBP 0x0\r
-#define KTRAP_FRAME_DEBUGEIP 0x4\r
-#define KTRAP_FRAME_DEBUGARGMARK 0x8\r
-#define KTRAP_FRAME_DEBUGPOINTER 0xC\r
-#define KTRAP_FRAME_TEMPSS 0x10\r
-#define KTRAP_FRAME_TEMPESP 0x14\r
-#define KTRAP_FRAME_DR0 0x18\r
-#define KTRAP_FRAME_DR1 0x1C\r
-#define KTRAP_FRAME_DR2 0x20\r
-#define KTRAP_FRAME_DR3 0x24\r
-#define KTRAP_FRAME_DR6 0x28\r
-#define KTRAP_FRAME_DR7 0x2C\r
-#define KTRAP_FRAME_GS 0x30\r
-#define KTRAP_FRAME_RESERVED1 0x32\r
-#define KTRAP_FRAME_ES 0x34\r
-#define KTRAP_FRAME_RESERVED2 0x36\r
-#define KTRAP_FRAME_DS 0x38\r
-#define KTRAP_FRAME_RESERVED3 0x3A\r
-#define KTRAP_FRAME_EDX 0x3C\r
-#define KTRAP_FRAME_ECX 0x40\r
-#define KTRAP_FRAME_EAX 0x44\r
-#define KTRAP_FRAME_PREVIOUS_MODE 0x48\r
-#define KTRAP_FRAME_EXCEPTION_LIST 0x4C\r
-#define KTRAP_FRAME_FS 0x50\r
-#define KTRAP_FRAME_RESERVED4 0x52\r
-#define KTRAP_FRAME_EDI 0x54\r
-#define KTRAP_FRAME_ESI 0x58\r
-#define KTRAP_FRAME_EBX 0x5C\r
-#define KTRAP_FRAME_EBP 0x60\r
-#define KTRAP_FRAME_ERROR_CODE 0x64\r
-#define KTRAP_FRAME_EIP 0x68\r
-#define KTRAP_FRAME_CS 0x6C\r
-#define KTRAP_FRAME_EFLAGS 0x70\r
-#define KTRAP_FRAME_ESP 0x74\r
-#define KTRAP_FRAME_SS 0x78\r
-#define KTRAP_FRAME_RESERVED5 0x7A\r
-#define KTRAP_FRAME_V86_ES 0x7C\r
-#define KTRAP_FRAME_RESERVED6 0x7E\r
-#define KTRAP_FRAME_V86_DS 0x80\r
-#define KTRAP_FRAME_RESERVED7 0x82\r
-#define KTRAP_FRAME_V86_FS 0x84\r
-#define KTRAP_FRAME_RESERVED8 0x86\r
-#define KTRAP_FRAME_V86_GS 0x88\r
-#define KTRAP_FRAME_RESERVED9 0x8A\r
-#define KTRAP_FRAME_SIZE 0x8C\r
-\r
-/* User Shared Data */\r
-#define KERNEL_USER_SHARED_DATA 0x7FFE0000\r
-#define KUSER_SHARED_PROCESSOR_FEATURES KERNEL_USER_SHARED_DATA + 0x274\r
-#define KUSER_SHARED_SYSCALL KERNEL_USER_SHARED_DATA + 0x300\r
-#define KUSER_SHARED_SYSCALL_RET KERNEL_USER_SHARED_DATA + 0x304\r
-#define PROCESSOR_FEATURE_FXSR KUSER_SHARED_PROCESSOR_FEATURES + 0x4\r
-\r
-/* CONTEXT CONSTANTS */\r
-#define CONTEXT_FLAGS 0x0\r
-#define CONTEXT_DR6 0x14\r
-#define CONTEXT_FLOAT_SAVE 0x1C\r
-#define CONTEXT_EDI 0x9C\r
-#define CONTEXT_ESI 0xA0\r
-#define CONTEXT_EBX 0xA4\r
-#define CONTEXT_EDX 0xA8\r
-#define CONTEXT_ECX 0xAC\r
-#define CONTEXT_EAX 0xB0\r
-#define CONTEXT_EBP 0xB4\r
-#define CONTEXT_EIP 0xB8\r
-#define CONTEXT_ESP 0xC4\r
-#define CONTEXT_FLOAT_SAVE_CONTROL_WORD CONTEXT_FLOAT_SAVE + FN_CONTROL_WORD\r
-#define CONTEXT_FLOAT_SAVE_STATUS_WORD CONTEXT_FLOAT_SAVE + FN_STATUS_WORD\r
-#define CONTEXT_FLOAT_SAVE_TAG_WORD CONTEXT_FLOAT_SAVE + FN_TAG_WORD\r
-\r
-/* TEB CONSTANTS */\r
-#define TEB_EXCEPTION_LIST 0x0\r
-#define TEB_STACK_BASE 0x4\r
-#define TEB_STACK_LIMIT 0x8\r
-#define TEB_FIBER_DATA 0x10\r
-#define TEB_ACTIVATION_CONTEXT_STACK_POINTER 0x1A8\r
-#define TEB_DEALLOCATION_STACK 0xE0C\r
-#define TEB_GUARANTEED_STACK_BYTES 0xF78\r
-#define TEB_FLS_DATA 0xFB4\r
-\r
-/* FIBER CONSTANTS */\r
-#define FIBER_PARAMETER 0x0\r
-#define FIBER_EXCEPTION_LIST 0x4\r
-#define FIBER_STACK_BASE 0x8\r
-#define FIBER_STACK_LIMIT 0xC\r
-#define FIBER_DEALLOCATION_STACK 0x10\r
-#define FIBER_CONTEXT 0x14\r
-#define FIBER_GUARANTEED_STACK_BYTES 0x2E0\r
-#define FIBER_FLS_DATA 0x2E4\r
-#define FIBER_ACTIVATION_CONTEXT_STACK 0x2E8\r
-#define FIBER_CONTEXT_FLAGS FIBER_CONTEXT + CONTEXT_FLAGS\r
-#define FIBER_CONTEXT_EAX FIBER_CONTEXT + CONTEXT_EAX\r
-#define FIBER_CONTEXT_EBX FIBER_CONTEXT + CONTEXT_EBX\r
-#define FIBER_CONTEXT_ECX FIBER_CONTEXT + CONTEXT_ECX\r
-#define FIBER_CONTEXT_EDX FIBER_CONTEXT + CONTEXT_EDX\r
-#define FIBER_CONTEXT_ESI FIBER_CONTEXT + CONTEXT_ESI\r
-#define FIBER_CONTEXT_EDI FIBER_CONTEXT + CONTEXT_EDI\r
-#define FIBER_CONTEXT_EBP FIBER_CONTEXT + CONTEXT_EBP\r
-#define FIBER_CONTEXT_ESP FIBER_CONTEXT + CONTEXT_ESP\r
-#define FIBER_CONTEXT_DR6 FIBER_CONTEXT + CONTEXT_DR6\r
-#define FIBER_CONTEXT_FLOAT_SAVE_STATUS_WORD FIBER_CONTEXT + CONTEXT_FLOAT_SAVE_STATUS_WORD \r
-#define FIBER_CONTEXT_FLOAT_SAVE_CONTROL_WORD FIBER_CONTEXT + CONTEXT_FLOAT_SAVE_CONTROL_WORD\r
-#define FIBER_CONTEXT_FLOAT_SAVE_TAG_WORD FIBER_CONTEXT + CONTEXT_FLOAT_SAVE_TAG_WORD\r
-#endif\r
-\r
+/*
+ * 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
+ */
+#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 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
+
+#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
+#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
+