Author: sginsberg
Date: Wed Oct 14 19:21:56 2009
New Revision: 43461
URL:
http://svn.reactos.org/svn/reactos?rev=43461&view=rev
Log:
Move x86 assembly macros into the x86 directory.
Added:
trunk/reactos/include/ndk/i386/asm.h (with props)
Modified:
trunk/reactos/include/ndk/asm.h
Modified: trunk/reactos/include/ndk/asm.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/asm.h?rev=4346…
==============================================================================
--- trunk/reactos/include/ndk/asm.h [iso-8859-1] (original)
+++ trunk/reactos/include/ndk/asm.h [iso-8859-1] Wed Oct 14 19:21:56 2009
@@ -8,639 +8,22 @@
Abstract:
- ASM Offsets for dealing with de-referencing structures in registers.
- C-compatible version of the file ks386.inc present in the newest WDK.
+ Portability header to choose the correct Architecture-specific header.
Author:
Alex Ionescu (alex.ionescu(a)reactos.com) 06-Oct-2004
--*/
-#ifdef _M_AMD64
-# include "amd64/asm.h"
+
+#if defined(_M_IX86)
+#include <i386/asm.h>
+#elif defined(_M_AMD64)
+#include <amd64/asm.h>
+#elif defined(_M_ARM) || defined(_M_PPC)
+//
+// ARM and PPC ports don't use asm.h
+//
#else
-#ifndef _ASM_H
-#define _ASM_H
-
-//
-// PCR Access
-//
-#ifdef __ASM__
-#ifdef CONFIG_SMP
-#define PCR fs:
-#else
-#define PCR ds:[0xFFDFF000]
+#error Unsupported Architecture
#endif
-#endif
-
-//
-// CPU Modes
-//
-#define KernelMode 0x0
-#define UserMode 0x1
-
-//
-// CPU Types
-//
-#define CPU_NONE 0x0
-#define CPU_INTEL 0x1
-#define CPU_AMD 0x2
-#define CPU_CYRIX 0x3
-#define CPU_TRANSMETA 0x4
-#define CPU_CENTAUR 0x5
-#define CPU_RISE 0x6
-#define CPU_UNKNOWN 0x7
-
-//
-// Selector Names
-//
-#ifdef __ASM__
-#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)
-#endif
-
-//
-// 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_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_STATE_ 0x4C
-#define KTHREAD_NPX_STATE 0x4D
-#define KTHREAD_WAIT_IRQL 0x4E
-#define KTHREAD_NEXT_PROCESSOR 0x40
-#define KTHREAD_WAIT_REASON 0x5A
-#define KTHREAD_PRIORITY 0x5B
-#define KTHREAD_SWAP_BUSY 0x5D
-#define KTHREAD_SERVICE_TABLE 0x118
-#define KTHREAD_PREVIOUS_MODE 0xD7
-#define KTHREAD_COMBINED_APC_DISABLE 0x70
-#define KTHREAD_SPECIAL_APC_DISABLE 0x72
-#define KTHREAD_LARGE_STACK 0x107
-#define KTHREAD_TRAP_FRAME 0x110
-#define KTHREAD_CALLBACK_STACK 0x114
-#define KTHREAD_APC_STATE_INDEX 0x11C
-#define KTHREAD_STACK_BASE 0x158
-#define KTHREAD_QUANTUM 0x15D
-#define KTHREAD_KERNEL_TIME 0x160
-#define KTHREAD_USER_TIME 0x18C
-
-//
-// KPROCESS Offsets
-//
-#define KPROCESS_DIRECTORY_TABLE_BASE 0x18
-#define KPROCESS_LDT_DESCRIPTOR0 0x20
-#define KPROCESS_LDT_DESCRIPTOR1 0x24
-#define KPROCESS_INT21_DESCRIPTOR0 0x28
-#define KPROCESS_INT21_DESCRIPTOR1 0x2C
-#define KPROCESS_IOPM_OFFSET 0x30
-#define KPROCESS_ACTIVE_PROCESSORS 0x34
-#define EPROCESS_VDM_OBJECTS 0x144
-
-//
-// KTIMER_TABLE Offsets
-//
-#ifdef __ASM__
-#define KTIMER_TABLE_ENTRY 0x00
-#define KTIMER_TABLE_TIME 0x08
-#define TIMER_ENTRY_SIZE 0x10
-#define TIMER_TABLE_SIZE 0x200
-#endif
-
-//
-// KPRCB Offsets
-//
-#define KPRCB_DR0 0x2F8
-#define KPRCB_DR1 0x2FC
-#define KPRCB_DR2 0x300
-#define KPRCB_DR3 0x304
-#define KPRCB_DR6 0x308
-#define KPRCB_DR7 0x30C
-#define KPRCB_TIMER_HAND 0x964
-#define KPRCB_TIMER_REQUEST 0x968
-
-//
-// KPCR Offsets
-//
-#define KPCR_EXCEPTION_LIST 0x0
-#define KPCR_INITIAL_STACK 0x4
-#define KPCR_STACK_LIMIT 0x8
-#define KPCR_PERF_GLOBAL_GROUP_MASK 0x8
-#define KPCR_CONTEXT_SWITCHES 0x10
-#define KPCR_SET_MEMBER_COPY 0x14
-#define KPCR_TEB 0x18
-#define KPCR_SELF 0x1C
-#define KPCR_PRCB 0x20
-#define KPCR_IRQL 0x24
-#define KPCR_IRR 0x28
-#define KPCR_IRR_ACTIVE 0x2C
-#define KPCR_IDR 0x30
-#define KPCR_KD_VERSION_BLOCK 0x34
-#define KPCR_IDT 0x38
-#define KPCR_GDT 0x3C
-#define KPCR_TSS 0x40
-#define KPCR_STALL_SCALE_FACTOR 0x4C
-#define KPCR_SET_MEMBER 0x48
-#define KPCR_NUMBER 0x51
-#define KPCR_VDM_ALERT 0x54
-#define KPCR_PRCB_DATA 0x120
-#define KPCR_CURRENT_THREAD 0x124
-#define KPCR_PRCB_NEXT_THREAD 0x128
-#define KPCR_PRCB_IDLE_THREAD 0x12C
-#define KPCR_PROCESSOR_NUMBER 0x130
-#define KPCR_PRCB_SET_MEMBER 0x134
-#define KPCR_PRCB_CPU_TYPE 0x138
-#define KPCR_PRCB_PRCB_LOCK 0xA7C
-#define KPCR_NPX_THREAD 0x640
-#define KPCR_DR6 0x428
-#define KPCR_DR7 0x42C
-#define KPCR_PRCB_INTERRUPT_COUNT 0x644
-#define KPCR_PRCB_KERNEL_TIME 0x648
-#define KPCR_PRCB_USER_TIME 0x64C
-#define KPCR_PRCB_DPC_TIME 0x650
-#define KPCR_PRCB_DEBUG_DPC_TIME 0x654
-#define KPCR_PRCB_INTERRUPT_TIME 0x658
-#define KPCR_PRCB_ADJUST_DPC_THRESHOLD 0x65C
-#define KPCR_PRCB_SKIP_TICK 0x664
-#define KPCR_SYSTEM_CALLS 0x6B8
-#define KPCR_PRCB_DPC_QUEUE_DEPTH 0xA4C
-#define KPCR_PRCB_DPC_COUNT 0xA50
-#define KPCR_PRCB_DPC_STACK 0xA68
-#define KPCR_PRCB_MAXIMUM_DPC_QUEUE_DEPTH 0xA6C
-#define KPCR_PRCB_DPC_REQUEST_RATE 0xA70
-#define KPCR_PRCB_DPC_INTERRUPT_REQUESTED 0xA78
-#define KPCR_PRCB_DPC_ROUTINE_ACTIVE 0xA7A
-#define KPCR_PRCB_DPC_LAST_COUNT 0xA80
-#define KPCR_PRCB_TIMER_REQUEST 0xA88
-#define KPCR_PRCB_QUANTUM_END 0xAA1
-#define KPCR_PRCB_IDLE_SCHEDULE 0xAA3
-#define KPCR_PRCB_DEFERRED_READY_LIST_HEAD 0xC10
-#define KPCR_PRCB_POWER_STATE_IDLE_FUNCTION 0xEC0
-
-//
-// KINTERRUPT Offsets
-//
-#define KINTERRUPT_INTERRUPT_LIST_HEAD 0x04
-#define KINTERRUPT_SERVICE_ROUTINE 0x0C
-#define KINTERRUPT_SERVICE_CONTEXT 0x10
-#define KINTERRUPT_TICK_COUNT 0x18
-#define KINTERRUPT_ACTUAL_LOCK 0x1C
-#define KINTERRUPT_VECTOR 0x24
-#define KINTERRUPT_IRQL 0x28
-#define KINTERRUPT_SYNCHRONIZE_IRQL 0x29
-#define KINTERRUPT_DISPATCH_COUNT 0x38
-
-//
-// 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 FP_CONTROL_WORD 0x0
-#define FP_STATUS_WORD 0x4
-#define FP_TAG_WORD 0x8
-#define FP_ERROR_OFFSET 0xC
-#define FP_ERROR_SELECTOR 0x10
-#define FP_DATA_OFFSET 0x14
-#define FP_DATA_SELECTOR 0x18
-#define FN_CR0_NPX_STATE 0x20C
-#define SIZEOF_FX_SAVE_AREA 528
-#define NPX_FRAME_LENGTH 0x210
-
-//
-// FX Save Area Offsets
-//
-#define FX_CONTROL_WORD 0x0
-#define FX_STATUS_WORD 0x2
-#define FX_TAG_WORD 0x4
-#define FX_ERROR_OPCODE 0x6
-#define FX_ERROR_OFFSET 0x8
-#define FX_ERROR_SELECTOR 0xC
-#define FX_DATA_OFFSET 0x10
-#define FX_DATA_SELECTOR 0x14
-#define FX_MXCSR 0x18
-
-//
-// NPX States
-//
-#define NPX_STATE_NOT_LOADED 0xA
-#define NPX_STATE_LOADED 0x0
-
-//
-// 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
-#define FRAME_EDITED 0xFFF8
-
-//
-// KUSER_SHARED_DATA Offsets
-//
-#ifdef __ASM__
-#define USER_SHARED_DATA 0xFFDF0000
-#endif
-#define USER_SHARED_DATA_INTERRUPT_TIME 0x8
-#define USER_SHARED_DATA_SYSTEM_TIME 0x14
-#define USER_SHARED_DATA_TICK_COUNT 0x320
-
-//
-// KUSER_SHARED_DATA Offsets (this stuff is trash)
-//
-#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 + FP_CONTROL_WORD
-#define CONTEXT_FLOAT_SAVE_STATUS_WORD CONTEXT_FLOAT_SAVE + FP_STATUS_WORD
-#define CONTEXT_FLOAT_SAVE_TAG_WORD CONTEXT_FLOAT_SAVE + FP_TAG_WORD
-#define CONTEXT_ALIGNED_SIZE 0x2CC
-
-//
-// 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
-#define EXCEPTION_RECORD_LENGTH 0x50
-
-//
-// Exception types
-//
-#ifdef __ASM__
-#define EXCEPTION_NONCONTINUABLE 0x0001
-#define EXCEPTION_UNWINDING 0x0002
-#define EXCEPTION_EXIT_UNWIND 0x0004
-#define EXCEPTION_STACK_INVALID 0x0008
-#define EXCEPTION_NESTED_CALL 0x00010
-#define EXCEPTION_TARGET_UNWIND 0x00020
-#define EXCEPTION_COLLIDED_UNWIND 0x00040
-#define EXCEPTION_UNWIND 0x00066
-#define EXCEPTION_EXECUTE_HANDLER 0x00001
-#define EXCEPTION_CONTINUE_SEARCH 0x00000
-#define EXCEPTION_CONTINUE_EXECUTION 0xFFFFFFFF
-#define EXCEPTION_CHAIN_END 0xFFFFFFFF
-#endif
-
-//
-// TEB Offsets
-//
-#define TEB_EXCEPTION_LIST 0x0
-#define TEB_STACK_BASE 0x4
-#define TEB_STACK_LIMIT 0x8
-#define TEB_FIBER_DATA 0x10
-#define TEB_SELF 0x18
-#define TEB_PEB 0x30
-#define TEB_EXCEPTION_CODE 0x1A4
-#define TEB_ACTIVATION_CONTEXT_STACK_POINTER 0x1A8
-#define TEB_DEALLOCATION_STACK 0xE0C
-#define TEB_GDI_BATCH_COUNT 0xF70
-#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
-
-//
-// EFLAGS
-//
-#ifdef __ASM__
-#define EFLAGS_TF 0x100
-#define EFLAGS_INTERRUPT_MASK 0x200
-#define EFLAGS_IOPL 0x3000
-#define EFLAGS_NESTED_TASK 0x4000
-#define EFLAGS_V86_MASK 0x20000
-#define EFLAGS_ALIGN_CHECK 0x40000
-#define EFLAGS_VIF 0x80000
-#define EFLAGS_VIP 0x100000
-#define EFLAG_SIGN 0x8000
-#define EFLAG_ZERO 0x4000
-#define EFLAG_SELECT (EFLAG_SIGN + EFLAG_ZERO)
-#endif
-#define EFLAGS_USER_SANITIZE 0x3F4DD7
-
-//
-// 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
-
-//
-// CR4
-//
-#ifdef __ASM__
-#define CR4_VME 0x1
-#define CR4_PVI 0x2
-#define CR4_TSD 0x4
-#define CR4_DE 0x8
-#define CR4_PSE 0x10
-#define CR4_PAE 0x20
-#define CR4_MCE 0x40
-#define CR4_PGE 0x80
-#define CR4_FXSR 0x200
-#define CR4_XMMEXCPT 0x400
-#endif
-
-//
-// DR6 and 7 Masks
-//
-#define DR6_LEGAL 0xE00F
-#define DR7_LEGAL 0xFFFF0155
-#define DR7_ACTIVE 0x55
-#define DR7_OVERRIDE_V 0x04
-#define DR7_RESERVED_MASK 0xDC00
-#define DR7_OVERRIDE_MASK 0xF0000
-
-//
-// Usermode callout frame definitions
-//
-#define CBSTACK_STACK 0x0
-#define CBSTACK_TRAP_FRAME 0x4
-#define CBSTACK_CALLBACK_STACK 0x8
-#define CBSTACK_EBP 0x18
-#define CBSTACK_RESULT 0x20
-#define CBSTACK_RESULT_LENGTH 0x24
-#define CBSTACK_FRAME_POINTER CBSTACK_EBP
-
-//
-// NTSTATUS, Bugcheck Codes and Debug Codes
-//
-#ifdef __ASM__
-#define STATUS_ACCESS_VIOLATION 0xC0000005
-#define STATUS_IN_PAGE_ERROR 0xC0000006
-#define STATUS_GUARD_PAGE_VIOLATION 0x80000001
-#define STATUS_PRIVILEGED_INSTRUCTION 0xC0000096
-#define STATUS_STACK_OVERFLOW 0xC00000FD
-#define KI_EXCEPTION_ACCESS_VIOLATION 0x10000004
-#define STATUS_INVALID_SYSTEM_SERVICE 0xC000001C
-#define STATUS_NO_CALLBACK_ACTIVE 0xC0000258
-#define STATUS_CALLBACK_POP_STACK 0xC0000423
-#define STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008C
-#define STATUS_ILLEGAL_INSTRUCTION 0xC000001D
-#define STATUS_INVALID_LOCK_SEQUENCE 0xC000001E
-#define STATUS_BREAKPOINT 0x80000003
-#define STATUS_SINGLE_STEP 0x80000004
-#define STATUS_INTEGER_DIVIDE_BY_ZERO 0xC0000094
-#define STATUS_INTEGER_OVERFLOW 0xC0000095
-#define STATUS_FLOAT_DENORMAL_OPERAND 0xC000008D
-#define STATUS_FLOAT_DIVIDE_BY_ZERO 0xC000008E
-#define STATUS_FLOAT_INEXACT_RESULT 0xC000008F
-#define STATUS_FLOAT_INVALID_OPERATION 0xC0000090
-#define STATUS_FLOAT_OVERFLOW 0xC0000091
-#define STATUS_FLOAT_STACK_CHECK 0xC0000092
-#define STATUS_FLOAT_UNDERFLOW 0xC0000093
-#define STATUS_FLOAT_MULTIPLE_FAULTS 0xC00002B4
-#define STATUS_FLOAT_MULTIPLE_TRAPS 0xC00002B5
-#define APC_INDEX_MISMATCH 0x01
-#define IRQL_NOT_GREATER_OR_EQUAL 0x09
-#define IRQL_NOT_LESS_OR_EQUAL 0x0A
-#define TRAP_CAUSE_UNKNOWN 0x12
-#define KMODE_EXCEPTION_NOT_HANDLED 0x13
-#define IRQL_GT_ZERO_AT_SYSTEM_SERVICE 0x4A
-#define UNEXPECTED_KERNEL_MODE_TRAP 0x7F
-#define ATTEMPTED_SWITCH_FROM_DPC 0xB8
-#define HARDWARE_INTERRUPT_STORM 0xF2
-#define DBG_STATUS_CONTROL_C 0x01
-
-//
-// IRQL Levels
-//
-#define PASSIVE_LEVEL 0x0
-#define APC_LEVEL 0x1
-#define DISPATCH_LEVEL 0x2
-#define CLOCK2_LEVEL 0x1C
-#define IPI_LEVEL 0x1D
-#define HIGH_LEVEL 0x1F
-
-//
-// Synchronization-level IRQL
-//
-#ifndef CONFIG_SMP
-#define SYNCH_LEVEL DISPATCH_LEVEL
-#else
-#if (NTDDI_VERSION < NTDDI_WS03)
-#define SYNCH_LEVEL (IPI_LEVEL - 0x1)
-#else
-#define SYNCH_LEVEL (IPI_LEVEL - 0x2)
-#endif
-#endif
-
-//
-// Quantum Decrements
-//
-#define CLOCK_QUANTUM_DECREMENT 0x3
-#endif
-
-//
-// System Call Table definitions
-//
-#define NUMBER_SERVICE_TABLES 0x0002
-#define SERVICE_NUMBER_MASK 0x0FFF
-#define SERVICE_TABLE_SHIFT 0x0008
-#define SERVICE_TABLE_MASK 0x0010
-#define SERVICE_TABLE_TEST 0x0010
-#define SERVICE_DESCRIPTOR_BASE 0x0000
-#define SERVICE_DESCRIPTOR_COUNT 0x0004
-#define SERVICE_DESCRIPTOR_LIMIT 0x0008
-#define SERVICE_DESCRIPTOR_NUMBER 0x000C
-#define SERVICE_DESCRIPTOR_LENGTH 0x0010
-
-//
-// VDM State Pointer
-//
-#define FIXED_NTVDMSTATE_LINEAR_PC_AT 0x714
-
-//
-// Machine types
-//
-#ifdef __ASM__
-#define MACHINE_TYPE_ISA 0x0000
-#define MACHINE_TYPE_EISA 0x0001
-#define MACHINE_TYPE_MCA 0x0002
-
-//
-// Kernel Feature Bits
-//
-#define KF_RDTSC 0x00000002
-
-//
-// Kernel Stack Size
-//
-#define KERNEL_STACK_SIZE 0x3000
-#endif
-
-//
-// Generic Definitions
-//
-#define PRIMARY_VECTOR_BASE 0x30 // FIXME: HACK
-#define MAXIMUM_IDTVECTOR 0xFF
-#endif // !_ASM_H
-
-
-
-#endif
-
-
Added: trunk/reactos/include/ndk/i386/asm.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/i386/asm.h?rev…
==============================================================================
--- trunk/reactos/include/ndk/i386/asm.h (added)
+++ trunk/reactos/include/ndk/i386/asm.h [iso-8859-1] Wed Oct 14 19:21:56 2009
@@ -1,0 +1,638 @@
+/*++ 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.
+ C-compatible version of the file ks386.inc present in the newest WDK.
+
+Author:
+
+ Alex Ionescu (alex.ionescu(a)reactos.com) 06-Oct-2004
+
+--*/
+
+#ifndef _ASM_X86_H
+#define _ASM_X86_H
+
+//
+// PCR Access
+//
+#ifdef __ASM__
+#ifdef CONFIG_SMP
+#define PCR fs:
+#else
+#define PCR ds:[0xFFDFF000]
+#endif
+#endif
+
+//
+// CPU Modes
+//
+#define KernelMode 0x0
+#define UserMode 0x1
+
+//
+// CPU Types
+//
+#define CPU_NONE 0x0
+#define CPU_INTEL 0x1
+#define CPU_AMD 0x2
+#define CPU_CYRIX 0x3
+#define CPU_TRANSMETA 0x4
+#define CPU_CENTAUR 0x5
+#define CPU_RISE 0x6
+#define CPU_UNKNOWN 0x7
+
+//
+// Selector Names
+//
+#ifdef __ASM__
+#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)
+#endif
+
+//
+// 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_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_STATE_ 0x4C
+#define KTHREAD_NPX_STATE 0x4D
+#define KTHREAD_WAIT_IRQL 0x4E
+#define KTHREAD_NEXT_PROCESSOR 0x40
+#define KTHREAD_WAIT_REASON 0x5A
+#define KTHREAD_PRIORITY 0x5B
+#define KTHREAD_SWAP_BUSY 0x5D
+#define KTHREAD_SERVICE_TABLE 0x118
+#define KTHREAD_PREVIOUS_MODE 0xD7
+#define KTHREAD_COMBINED_APC_DISABLE 0x70
+#define KTHREAD_SPECIAL_APC_DISABLE 0x72
+#define KTHREAD_LARGE_STACK 0x107
+#define KTHREAD_TRAP_FRAME 0x110
+#define KTHREAD_CALLBACK_STACK 0x114
+#define KTHREAD_APC_STATE_INDEX 0x11C
+#define KTHREAD_STACK_BASE 0x158
+#define KTHREAD_QUANTUM 0x15D
+#define KTHREAD_KERNEL_TIME 0x160
+#define KTHREAD_USER_TIME 0x18C
+
+//
+// KPROCESS Offsets
+//
+#define KPROCESS_DIRECTORY_TABLE_BASE 0x18
+#define KPROCESS_LDT_DESCRIPTOR0 0x20
+#define KPROCESS_LDT_DESCRIPTOR1 0x24
+#define KPROCESS_INT21_DESCRIPTOR0 0x28
+#define KPROCESS_INT21_DESCRIPTOR1 0x2C
+#define KPROCESS_IOPM_OFFSET 0x30
+#define KPROCESS_ACTIVE_PROCESSORS 0x34
+#define EPROCESS_VDM_OBJECTS 0x144
+
+//
+// KTIMER_TABLE Offsets
+//
+#ifdef __ASM__
+#define KTIMER_TABLE_ENTRY 0x00
+#define KTIMER_TABLE_TIME 0x08
+#define TIMER_ENTRY_SIZE 0x10
+#define TIMER_TABLE_SIZE 0x200
+#endif
+
+//
+// KPRCB Offsets
+//
+#define KPRCB_DR0 0x2F8
+#define KPRCB_DR1 0x2FC
+#define KPRCB_DR2 0x300
+#define KPRCB_DR3 0x304
+#define KPRCB_DR6 0x308
+#define KPRCB_DR7 0x30C
+#define KPRCB_TIMER_HAND 0x964
+#define KPRCB_TIMER_REQUEST 0x968
+
+//
+// KPCR Offsets
+//
+#define KPCR_EXCEPTION_LIST 0x0
+#define KPCR_INITIAL_STACK 0x4
+#define KPCR_STACK_LIMIT 0x8
+#define KPCR_PERF_GLOBAL_GROUP_MASK 0x8
+#define KPCR_CONTEXT_SWITCHES 0x10
+#define KPCR_SET_MEMBER_COPY 0x14
+#define KPCR_TEB 0x18
+#define KPCR_SELF 0x1C
+#define KPCR_PRCB 0x20
+#define KPCR_IRQL 0x24
+#define KPCR_IRR 0x28
+#define KPCR_IRR_ACTIVE 0x2C
+#define KPCR_IDR 0x30
+#define KPCR_KD_VERSION_BLOCK 0x34
+#define KPCR_IDT 0x38
+#define KPCR_GDT 0x3C
+#define KPCR_TSS 0x40
+#define KPCR_STALL_SCALE_FACTOR 0x4C
+#define KPCR_SET_MEMBER 0x48
+#define KPCR_NUMBER 0x51
+#define KPCR_VDM_ALERT 0x54
+#define KPCR_PRCB_DATA 0x120
+#define KPCR_CURRENT_THREAD 0x124
+#define KPCR_PRCB_NEXT_THREAD 0x128
+#define KPCR_PRCB_IDLE_THREAD 0x12C
+#define KPCR_PROCESSOR_NUMBER 0x130
+#define KPCR_PRCB_SET_MEMBER 0x134
+#define KPCR_PRCB_CPU_TYPE 0x138
+#define KPCR_PRCB_PRCB_LOCK 0xA7C
+#define KPCR_NPX_THREAD 0x640
+#define KPCR_DR6 0x428
+#define KPCR_DR7 0x42C
+#define KPCR_PRCB_INTERRUPT_COUNT 0x644
+#define KPCR_PRCB_KERNEL_TIME 0x648
+#define KPCR_PRCB_USER_TIME 0x64C
+#define KPCR_PRCB_DPC_TIME 0x650
+#define KPCR_PRCB_DEBUG_DPC_TIME 0x654
+#define KPCR_PRCB_INTERRUPT_TIME 0x658
+#define KPCR_PRCB_ADJUST_DPC_THRESHOLD 0x65C
+#define KPCR_PRCB_SKIP_TICK 0x664
+#define KPCR_SYSTEM_CALLS 0x6B8
+#define KPCR_PRCB_DPC_QUEUE_DEPTH 0xA4C
+#define KPCR_PRCB_DPC_COUNT 0xA50
+#define KPCR_PRCB_DPC_STACK 0xA68
+#define KPCR_PRCB_MAXIMUM_DPC_QUEUE_DEPTH 0xA6C
+#define KPCR_PRCB_DPC_REQUEST_RATE 0xA70
+#define KPCR_PRCB_DPC_INTERRUPT_REQUESTED 0xA78
+#define KPCR_PRCB_DPC_ROUTINE_ACTIVE 0xA7A
+#define KPCR_PRCB_DPC_LAST_COUNT 0xA80
+#define KPCR_PRCB_TIMER_REQUEST 0xA88
+#define KPCR_PRCB_QUANTUM_END 0xAA1
+#define KPCR_PRCB_IDLE_SCHEDULE 0xAA3
+#define KPCR_PRCB_DEFERRED_READY_LIST_HEAD 0xC10
+#define KPCR_PRCB_POWER_STATE_IDLE_FUNCTION 0xEC0
+
+//
+// KINTERRUPT Offsets
+//
+#define KINTERRUPT_INTERRUPT_LIST_HEAD 0x04
+#define KINTERRUPT_SERVICE_ROUTINE 0x0C
+#define KINTERRUPT_SERVICE_CONTEXT 0x10
+#define KINTERRUPT_TICK_COUNT 0x18
+#define KINTERRUPT_ACTUAL_LOCK 0x1C
+#define KINTERRUPT_VECTOR 0x24
+#define KINTERRUPT_IRQL 0x28
+#define KINTERRUPT_SYNCHRONIZE_IRQL 0x29
+#define KINTERRUPT_DISPATCH_COUNT 0x38
+
+//
+// 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 FP_CONTROL_WORD 0x0
+#define FP_STATUS_WORD 0x4
+#define FP_TAG_WORD 0x8
+#define FP_ERROR_OFFSET 0xC
+#define FP_ERROR_SELECTOR 0x10
+#define FP_DATA_OFFSET 0x14
+#define FP_DATA_SELECTOR 0x18
+#define FN_CR0_NPX_STATE 0x20C
+#define SIZEOF_FX_SAVE_AREA 528
+#define NPX_FRAME_LENGTH 0x210
+
+//
+// FX Save Area Offsets
+//
+#define FX_CONTROL_WORD 0x0
+#define FX_STATUS_WORD 0x2
+#define FX_TAG_WORD 0x4
+#define FX_ERROR_OPCODE 0x6
+#define FX_ERROR_OFFSET 0x8
+#define FX_ERROR_SELECTOR 0xC
+#define FX_DATA_OFFSET 0x10
+#define FX_DATA_SELECTOR 0x14
+#define FX_MXCSR 0x18
+
+//
+// NPX States
+//
+#define NPX_STATE_NOT_LOADED 0xA
+#define NPX_STATE_LOADED 0x0
+
+//
+// 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
+#define FRAME_EDITED 0xFFF8
+
+//
+// KUSER_SHARED_DATA Offsets
+//
+#ifdef __ASM__
+#define USER_SHARED_DATA 0xFFDF0000
+#endif
+#define USER_SHARED_DATA_INTERRUPT_TIME 0x8
+#define USER_SHARED_DATA_SYSTEM_TIME 0x14
+#define USER_SHARED_DATA_TICK_COUNT 0x320
+
+//
+// KUSER_SHARED_DATA Offsets (this stuff is trash)
+//
+#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 + FP_CONTROL_WORD
+#define CONTEXT_FLOAT_SAVE_STATUS_WORD CONTEXT_FLOAT_SAVE + FP_STATUS_WORD
+#define CONTEXT_FLOAT_SAVE_TAG_WORD CONTEXT_FLOAT_SAVE + FP_TAG_WORD
+#define CONTEXT_ALIGNED_SIZE 0x2CC
+
+//
+// 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
+#define EXCEPTION_RECORD_LENGTH 0x50
+
+//
+// Exception types
+//
+#ifdef __ASM__
+#define EXCEPTION_NONCONTINUABLE 0x0001
+#define EXCEPTION_UNWINDING 0x0002
+#define EXCEPTION_EXIT_UNWIND 0x0004
+#define EXCEPTION_STACK_INVALID 0x0008
+#define EXCEPTION_NESTED_CALL 0x00010
+#define EXCEPTION_TARGET_UNWIND 0x00020
+#define EXCEPTION_COLLIDED_UNWIND 0x00040
+#define EXCEPTION_UNWIND 0x00066
+#define EXCEPTION_EXECUTE_HANDLER 0x00001
+#define EXCEPTION_CONTINUE_SEARCH 0x00000
+#define EXCEPTION_CONTINUE_EXECUTION 0xFFFFFFFF
+#define EXCEPTION_CHAIN_END 0xFFFFFFFF
+#endif
+
+//
+// TEB Offsets
+//
+#define TEB_EXCEPTION_LIST 0x0
+#define TEB_STACK_BASE 0x4
+#define TEB_STACK_LIMIT 0x8
+#define TEB_FIBER_DATA 0x10
+#define TEB_SELF 0x18
+#define TEB_PEB 0x30
+#define TEB_EXCEPTION_CODE 0x1A4
+#define TEB_ACTIVATION_CONTEXT_STACK_POINTER 0x1A8
+#define TEB_DEALLOCATION_STACK 0xE0C
+#define TEB_GDI_BATCH_COUNT 0xF70
+#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
+
+//
+// EFLAGS
+//
+#ifdef __ASM__
+#define EFLAGS_TF 0x100
+#define EFLAGS_INTERRUPT_MASK 0x200
+#define EFLAGS_IOPL 0x3000
+#define EFLAGS_NESTED_TASK 0x4000
+#define EFLAGS_V86_MASK 0x20000
+#define EFLAGS_ALIGN_CHECK 0x40000
+#define EFLAGS_VIF 0x80000
+#define EFLAGS_VIP 0x100000
+#define EFLAG_SIGN 0x8000
+#define EFLAG_ZERO 0x4000
+#define EFLAG_SELECT (EFLAG_SIGN + EFLAG_ZERO)
+#endif
+#define EFLAGS_USER_SANITIZE 0x3F4DD7
+
+//
+// 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
+
+//
+// CR4
+//
+#ifdef __ASM__
+#define CR4_VME 0x1
+#define CR4_PVI 0x2
+#define CR4_TSD 0x4
+#define CR4_DE 0x8
+#define CR4_PSE 0x10
+#define CR4_PAE 0x20
+#define CR4_MCE 0x40
+#define CR4_PGE 0x80
+#define CR4_FXSR 0x200
+#define CR4_XMMEXCPT 0x400
+#endif
+
+//
+// DR6 and 7 Masks
+//
+#define DR6_LEGAL 0xE00F
+#define DR7_LEGAL 0xFFFF0155
+#define DR7_ACTIVE 0x55
+#define DR7_OVERRIDE_V 0x04
+#define DR7_RESERVED_MASK 0xDC00
+#define DR7_OVERRIDE_MASK 0xF0000
+
+//
+// Usermode callout frame definitions
+//
+#define CBSTACK_STACK 0x0
+#define CBSTACK_TRAP_FRAME 0x4
+#define CBSTACK_CALLBACK_STACK 0x8
+#define CBSTACK_EBP 0x18
+#define CBSTACK_RESULT 0x20
+#define CBSTACK_RESULT_LENGTH 0x24
+#define CBSTACK_FRAME_POINTER CBSTACK_EBP
+
+//
+// NTSTATUS, Bugcheck Codes and Debug Codes
+//
+#ifdef __ASM__
+#define STATUS_ACCESS_VIOLATION 0xC0000005
+#define STATUS_IN_PAGE_ERROR 0xC0000006
+#define STATUS_GUARD_PAGE_VIOLATION 0x80000001
+#define STATUS_PRIVILEGED_INSTRUCTION 0xC0000096
+#define STATUS_STACK_OVERFLOW 0xC00000FD
+#define KI_EXCEPTION_ACCESS_VIOLATION 0x10000004
+#define STATUS_INVALID_SYSTEM_SERVICE 0xC000001C
+#define STATUS_NO_CALLBACK_ACTIVE 0xC0000258
+#define STATUS_CALLBACK_POP_STACK 0xC0000423
+#define STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008C
+#define STATUS_ILLEGAL_INSTRUCTION 0xC000001D
+#define STATUS_INVALID_LOCK_SEQUENCE 0xC000001E
+#define STATUS_BREAKPOINT 0x80000003
+#define STATUS_SINGLE_STEP 0x80000004
+#define STATUS_INTEGER_DIVIDE_BY_ZERO 0xC0000094
+#define STATUS_INTEGER_OVERFLOW 0xC0000095
+#define STATUS_FLOAT_DENORMAL_OPERAND 0xC000008D
+#define STATUS_FLOAT_DIVIDE_BY_ZERO 0xC000008E
+#define STATUS_FLOAT_INEXACT_RESULT 0xC000008F
+#define STATUS_FLOAT_INVALID_OPERATION 0xC0000090
+#define STATUS_FLOAT_OVERFLOW 0xC0000091
+#define STATUS_FLOAT_STACK_CHECK 0xC0000092
+#define STATUS_FLOAT_UNDERFLOW 0xC0000093
+#define STATUS_FLOAT_MULTIPLE_FAULTS 0xC00002B4
+#define STATUS_FLOAT_MULTIPLE_TRAPS 0xC00002B5
+#define APC_INDEX_MISMATCH 0x01
+#define IRQL_NOT_GREATER_OR_EQUAL 0x09
+#define IRQL_NOT_LESS_OR_EQUAL 0x0A
+#define TRAP_CAUSE_UNKNOWN 0x12
+#define KMODE_EXCEPTION_NOT_HANDLED 0x13
+#define IRQL_GT_ZERO_AT_SYSTEM_SERVICE 0x4A
+#define UNEXPECTED_KERNEL_MODE_TRAP 0x7F
+#define ATTEMPTED_SWITCH_FROM_DPC 0xB8
+#define HARDWARE_INTERRUPT_STORM 0xF2
+#define DBG_STATUS_CONTROL_C 0x01
+
+//
+// IRQL Levels
+//
+#define PASSIVE_LEVEL 0x0
+#define APC_LEVEL 0x1
+#define DISPATCH_LEVEL 0x2
+#define CLOCK2_LEVEL 0x1C
+#define IPI_LEVEL 0x1D
+#define HIGH_LEVEL 0x1F
+
+//
+// Synchronization-level IRQL
+//
+#ifndef CONFIG_SMP
+#define SYNCH_LEVEL DISPATCH_LEVEL
+#else
+#if (NTDDI_VERSION < NTDDI_WS03)
+#define SYNCH_LEVEL (IPI_LEVEL - 0x1)
+#else
+#define SYNCH_LEVEL (IPI_LEVEL - 0x2)
+#endif
+#endif
+
+//
+// Quantum Decrements
+//
+#define CLOCK_QUANTUM_DECREMENT 0x3
+#endif
+
+//
+// System Call Table definitions
+//
+#define NUMBER_SERVICE_TABLES 0x0002
+#define SERVICE_NUMBER_MASK 0x0FFF
+#define SERVICE_TABLE_SHIFT 0x0008
+#define SERVICE_TABLE_MASK 0x0010
+#define SERVICE_TABLE_TEST 0x0010
+#define SERVICE_DESCRIPTOR_BASE 0x0000
+#define SERVICE_DESCRIPTOR_COUNT 0x0004
+#define SERVICE_DESCRIPTOR_LIMIT 0x0008
+#define SERVICE_DESCRIPTOR_NUMBER 0x000C
+#define SERVICE_DESCRIPTOR_LENGTH 0x0010
+
+//
+// VDM State Pointer
+//
+#define FIXED_NTVDMSTATE_LINEAR_PC_AT 0x714
+
+//
+// Machine types
+//
+#ifdef __ASM__
+#define MACHINE_TYPE_ISA 0x0000
+#define MACHINE_TYPE_EISA 0x0001
+#define MACHINE_TYPE_MCA 0x0002
+
+//
+// Kernel Feature Bits
+//
+#define KF_RDTSC 0x00000002
+
+//
+// Kernel Stack Size
+//
+#define KERNEL_STACK_SIZE 0x3000
+#endif
+
+//
+// Generic Definitions
+//
+#define PRIMARY_VECTOR_BASE 0x30 // FIXME: HACK
+#define MAXIMUM_IDTVECTOR 0xFF
+#endif // !_ASM_X86_H
Propchange: trunk/reactos/include/ndk/i386/asm.h
------------------------------------------------------------------------------
svn:eol-style = native