- Update KTHREAD and KUSER_SHARED_DATA to latest versions. This should make 2K3 drive...
[reactos.git] / reactos / include / ndk / asm.h
index f58ef92..708ebac 100644 (file)
-/*\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
+