[CMAKE]
[reactos.git] / include / reactos / ks386.inc
1
2 /* Pointer size */
3 SizeofPointer = 0x4
4
5 /* Breakpoints */
6 BREAKPOINT_BREAK = 0x0
7 BREAKPOINT_PRINT = 0x1
8 BREAKPOINT_PROMPT = 0x2
9 BREAKPOINT_LOAD_SYMBOLS = 0x3
10 BREAKPOINT_UNLOAD_SYMBOLS = 0x4
11 BREAKPOINT_COMMAND_STRING = 0x5
12
13 /* Context Frame Flags */
14 CONTEXT_FULL = 0x10007
15 CONTEXT_CONTROL = 0x10001
16 CONTEXT_INTEGER = 0x10002
17 CONTEXT_SEGMENTS = 0x10004
18 CONTEXT_FLOATING_POINT = 0x10008
19 CONTEXT_DEBUG_REGISTERS = 0x10010
20
21 /* Exception flags */
22 EXCEPTION_NONCONTINUABLE = 0x1
23 EXCEPTION_UNWINDING = 0x2
24 EXCEPTION_EXIT_UNWIND = 0x4
25 EXCEPTION_STACK_INVALID = 0x8
26 EXCEPTION_NESTED_CALL = 0x10
27 EXCEPTION_TARGET_UNWIND = 0x20
28 EXCEPTION_COLLIDED_UNWIND = 0x20
29 EXCEPTION_UNWIND = 0x6
30 EXCEPTION_EXECUTE_HANDLER = 0x1
31 EXCEPTION_CONTINUE_SEARCH = 0x0
32 EXCEPTION_CONTINUE_EXECUTION = 0xffffffff
33 EXCEPTION_CHAIN_END = 0xffffffff
34
35 /* Exception types */
36 ExceptionContinueExecution = 0x0
37 ExceptionContinueSearch = 0x1
38 ExceptionNestedException = 0x2
39 ExceptionCollidedUnwind = 0x3
40
41 /* Lock Queue */
42 LOCK_QUEUE_WAIT = 0x1
43 LOCK_QUEUE_OWNER = 0x2
44 LockQueueDispatcherLock = 0x0
45
46 /* Process states */
47 ProcessInMemory = 0x0
48 ProcessOutOfMemory = 0x1
49 ProcessInTransition = 0x2
50
51 /* Processor mode */
52 KernelMode = 0x0
53 UserMode = 0x1
54
55 /* Status codes */
56 STATUS_ACCESS_VIOLATION = 0xc0000005
57 STATUS_ASSERTION_FAILURE = 0xc0000420
58 STATUS_ARRAY_BOUNDS_EXCEEDED = 0xc000008c
59 STATUS_BAD_COMPRESSION_BUFFER = 0xc0000242
60 STATUS_BREAKPOINT = 0x80000003
61 STATUS_CALLBACK_POP_STACK = 0xc0000423
62 STATUS_DATATYPE_MISALIGNMENT = 0x80000002
63 STATUS_FLOAT_DENORMAL_OPERAND = 0xc000008d
64 STATUS_FLOAT_DIVIDE_BY_ZERO = 0xc000008e
65 STATUS_FLOAT_INEXACT_RESULT = 0xc000008f
66 STATUS_FLOAT_INVALID_OPERATION = 0xc0000090
67 STATUS_FLOAT_OVERFLOW = 0xc0000091
68 STATUS_FLOAT_STACK_CHECK = 0xc0000092
69 STATUS_FLOAT_UNDERFLOW = 0xc0000093
70 STATUS_FLOAT_MULTIPLE_FAULTS = 0xc00002b4
71 STATUS_FLOAT_MULTIPLE_TRAPS = 0xc00002b5
72 STATUS_GUARD_PAGE_VIOLATION = 0x80000001
73 STATUS_ILLEGAL_FLOAT_CONTEXT = 0xc000014a
74 STATUS_ILLEGAL_INSTRUCTION = 0xc000001d
75 STATUS_INSTRUCTION_MISALIGNMENT = 0xc00000aa
76 STATUS_INVALID_HANDLE = 0xc0000008
77 STATUS_INVALID_LOCK_SEQUENCE = 0xc000001e
78 STATUS_INVALID_OWNER = 0xc000005a
79 STATUS_INVALID_PARAMETER = 0xc000000d
80 STATUS_INVALID_PARAMETER_1 = 0xc00000ef
81 STATUS_INVALID_SYSTEM_SERVICE = 0xc000001c
82 STATUS_INTEGER_DIVIDE_BY_ZERO = 0xc0000094
83 STATUS_INTEGER_OVERFLOW = 0xc0000095
84 STATUS_IN_PAGE_ERROR = 0xc0000006
85 STATUS_KERNEL_APC = 0x100
86 STATUS_LONGJUMP = 0x80000026
87 STATUS_NO_CALLBACK_ACTIVE = 0xc0000258
88 STATUS_NO_EVENT_PAIR = 0xc000014e
89 STATUS_PRIVILEGED_INSTRUCTION = 0xc0000096
90 STATUS_SINGLE_STEP = 0x80000004
91 STATUS_STACK_BUFFER_OVERRUN = 0xc0000409
92 STATUS_STACK_OVERFLOW = 0xc00000fd
93 STATUS_SUCCESS = 0x0
94 STATUS_THREAD_IS_TERMINATING = 0xc000004b
95 STATUS_TIMEOUT = 0x102
96 STATUS_UNWIND = 0xc0000027
97 STATUS_UNWIND_CONSOLIDATE = 0x80000029
98 STATUS_USER_APC = 0xc0
99 STATUS_WAKE_SYSTEM_DEBUGGER = 0x80000007
100
101 /* TLS defines */
102 TLS_MINIMUM_AVAILABLE = 0x40
103 TLS_EXPANSION_SLOTS = 0x400
104
105 /* Thread states */
106 Initialized = 0x0
107 Ready = 0x1
108 Running = 0x2
109 Standby = 0x3
110 Terminated = 0x4
111 Waiting = 0x5
112
113 /* Wait type / reason */
114 WrExecutive = 0x7
115 WrMutex = 0x1d
116 WrDispatchInt = 0x1f
117 WrQuantumEnd = 0x1e
118 WrEventPair = 0xe
119 WaitAny = 0x1
120 WaitAll = 0x0
121
122 /* Interrupt object types */
123 InLevelSensitive = 0x0
124 InLatched = 0x1
125
126 /* Bug Check Codes */
127 APC_INDEX_MISMATCH = 0x1
128 INVALID_AFFINITY_SET = 0x3
129 INVALID_DATA_ACCESS_TRAP = 0x4
130 IRQL_NOT_GREATER_OR_EQUAL = 0x9
131 IRQL_NOT_LESS_OR_EQUAL = 0xa
132 NO_USER_MODE_CONTEXT = 0xe
133 SPIN_LOCK_ALREADY_OWNED = 0xf
134 SPIN_LOCK_NOT_OWNED = 0x10
135 THREAD_NOT_MUTEX_OWNER = 0x11
136 TRAP_CAUSE_UNKNOWN = 0x12
137 KMODE_EXCEPTION_NOT_HANDLED = 0x1e
138 KERNEL_APC_PENDING_DURING_EXIT = 0x20
139 PANIC_STACK_SWITCH = 0x2b
140 DATA_BUS_ERROR = 0x2e
141 INSTRUCTION_BUS_ERROR = 0x2f
142 SYSTEM_EXIT_OWNED_MUTEX = 0x39
143 PAGE_FAULT_WITH_INTERRUPTS_OFF = 0x49
144 IRQL_GT_ZERO_AT_SYSTEM_SERVICE = 0x4a
145 DATA_COHERENCY_EXCEPTION = 0x55
146 INSTRUCTION_COHERENCY_EXCEPTION = 0x56
147 HAL1_INITIALIZATION_FAILED = 0x61
148 UNEXPECTED_KERNEL_MODE_TRAP = 0x7f
149 NMI_HARDWARE_FAILURE = 0x80
150 SPIN_LOCK_INIT_FAILURE = 0x81
151 ATTEMPTED_SWITCH_FROM_DPC = 0xb8
152
153 /* IRQL */
154 PASSIVE_LEVEL = 0x0
155 APC_LEVEL = 0x1
156 DISPATCH_LEVEL = 0x2
157 CLOCK1_LEVEL = 0x1c
158 CLOCK2_LEVEL = 0x1c
159 IPI_LEVEL = 0x1d
160 POWER_LEVEL = 0x1e
161 PROFILE_LEVEL = 0x1b
162 HIGH_LEVEL = 0x1f
163 #ifdef NT_UP
164 SYNCH_LEVEL = 0x2
165 #else
166 SYNCH_LEVEL = 0x1b
167 #endif
168
169 /* Stack sizes */
170 KERNEL_STACK_SIZE = 0x3000
171 KERNEL_LARGE_STACK_SIZE = 0xf000
172 KERNEL_LARGE_STACK_COMMIT = 0x3000
173
174 /* Miscellaneous Definitions */
175 LOW_REALTIME_PRIORITY = 0x10
176 CLOCK_QUANTUM_DECREMENT = 0x3
177 WAIT_QUANTUM_DECREMENT = 0x1
178 MAXIMUM_PROCESSORS = 0x20
179 INITIAL_STALL_COUNT = 0x64
180 KI_EXCEPTION_ACCESS_VIOLATION = 0x10000004
181 Executive = 0x0
182 FALSE = 0x0
183 TRUE = 0x1
184 DBG_STATUS_CONTROL_C = 0x1
185 USER_SHARED_DATA = 0x7ffe0000
186 PAGE_SIZE = 0x1000
187 MAXIMUM_IDTVECTOR = 0xff
188 PRIMARY_VECTOR_BASE = 0x30
189 RPL_MASK = 0x3
190 MODE_MASK = 0x1
191 NUMBER_SERVICE_TABLES = 0x2
192 SERVICE_NUMBER_MASK = 0xfff
193 SERVICE_TABLE_SHIFT = 0x8
194 SERVICE_TABLE_MASK = 0x10
195 SERVICE_TABLE_TEST = 0x10
196
197 /* KAPC */
198 ApType = 0x0
199 ApSize = 0x2
200 ApThread = 0x8
201 ApApcListEntry = 0xc
202 ApKernelRoutine = 0x14
203 ApRundownRoutine = 0x18
204 ApNormalRoutine = 0x1c
205 ApNormalContext = 0x20
206 ApSystemArgument1 = 0x24
207 ApSystemArgument2 = 0x28
208 ApApcStateIndex = 0x2c
209 ApApcMode = 0x2d
210 ApInserted = 0x2e
211 ApcObjectLength = 0x30
212
213 /* KAPC_STATE */
214 AsApcListHead = 0x0
215 AsProcess = 0x10
216 AsKernelApcInProgress = 0x14
217 AsKernelApcPending = 0x15
218 AsUserApcPending = 0x16
219
220 /* CLIENT_ID */
221 CidUniqueProcess = 0x0
222 CidUniqueThread = 0x4
223
224 /* RTL_CRITICAL_SECTION */
225 CsDebugInfo = 0x0
226 CsLockCount = 0x4
227 CsRecursionCount = 0x8
228 CsOwningThread = 0xc
229 CsLockSemaphore = 0x10
230 CsSpinCount = 0x14
231
232 /* RTL_CRITICAL_SECTION_DEBUG */
233 CsType = 0x0
234 CsCreatorBackTraceIndex = 0x2
235 CsCriticalSection = 0x4
236 CsProcessLocksList = 0x8
237 CsEntryCount = 0x10
238 CsContentionCount = 0x14
239
240 /* KDEVICE_QUEUE_ENTRY */
241 DeDeviceListEntry = 0x0
242 DeSortKey = 0x8
243 DeInserted = 0xc
244 DeviceQueueEntryLength = 0x10
245
246 /* KDPC */
247 DpType = 0x0
248 DpImportance = 0x1
249 DpNumber = 0x2
250 DpDpcListEntry = 0x4
251 DpDeferredRoutine = 0xc
252 DpDeferredContext = 0x10
253 DpSystemArgument1 = 0x14
254 DpSystemArgument2 = 0x18
255 DpDpcData = 0x1c
256 DpcObjectLength = 0x20
257
258 /* KDEVICE_QUEUE */
259 DvType = 0x0
260 DvSize = 0x2
261 DvDeviceListHead = 0x4
262 DvSpinLock = 0xc
263 DvBusy = 0x10
264 DeviceQueueObjectLength = 0x14
265
266 /* EXCEPTION_RECORD */
267 ErExceptionCode = 0x0
268 ErExceptionFlags = 0x4
269 ErExceptionRecord = 0x8
270 ErExceptionAddress = 0xc
271 ErNumberParameters = 0x10
272 ErExceptionInformation = 0x14
273 ExceptionRecordLength = 0x50
274 EXCEPTION_RECORD_LENGTH = 0x50
275
276 /* EPROCESS */
277 EpDebugPort = 0xcc
278 EpVdmObjects = 0x144
279 ExecutiveProcessObjectLength = 0x278
280
281 /* KEVENT */
282 EvType = 0x0
283 EvSize = 0x2
284 EvSignalState = 0x4
285 EvWaitListHead = 0x8
286 EventObjectLength = 0x10
287
288 /* FAST_MUTEX */
289 FmCount = 0x0
290 FmOwner = 0x4
291 FmContention = 0x8
292 FmOldIrql = 0x1c
293
294 /* KINTERRUPT */
295 InType = 0x0
296 InSize = 0x2
297 InInterruptListEntry = 0x4
298 InServiceRoutine = 0xc
299 InServiceContext = 0x10
300 InSpinLock = 0x14
301 InTickCount = 0x18
302 InActualLock = 0x1c
303 InDispatchAddress = 0x20
304 InVector = 0x24
305 InIrql = 0x28
306 InSynchronizeIrql = 0x29
307 InFloatingSave = 0x2a
308 InConnected = 0x2b
309 InNumber = 0x2c
310 InShareVector = 0x2d
311 InMode = 0x30
312 InServiceCount = 0x34
313 InDispatchCount = 0x38
314 InDispatchCode = 0x3c
315 InterruptObjectLength = 0x1e4
316
317 /* IO_STATUS_BLOCK */
318 IoStatus = 0x0
319 IoPointer = 0x0
320 IoInformation = 0x4
321
322 /* KNODE */
323 KnPfnDereferenceSListHead = 0x8
324 KnProcessorMask = 0x10
325 KnColor = 0x14
326 KnSeed = 0x18
327 KnNodeNumber = 0x19
328 KnFlags = 0x1a
329 knMmShiftedColor = 0x1e
330 KnFreeCount = 0x22
331 KnPfnDeferredList = 0x2a
332 KNODE_SIZE = 0x2e
333
334 /* KSPIN_LOCK_QUEUE */
335 LqNext = 0x0
336 LqLock = 0x4
337
338 /* KLOCK_QUEUE_HANDLE */
339 LqhNext = 0x0
340 LqhLock = 0x4
341 LqhOldIrql = 0x8
342 LOCK_QUEUE_HEADER_SIZE = 0xc
343
344 /* LARGE_INTEGER */
345 LiLowPart = 0x0
346 LiHighPart = 0x4
347
348 /* LIST_ENTRY */
349 LsFlink = 0x0
350 LsBlink = 0x4
351
352 /* PEB */
353 PeKernelCallbackTable = 0x2c
354 ProcessEnvironmentBlockLength = 0x230
355
356 /* KPROFILE */
357 PfType = 0x0
358 PfSize = 0x2
359 PfProfileListEntry = 0x4
360 PfProcess = 0xc
361 PfRangeBase = 0x10
362 PfRangeLimit = 0x14
363 PfBucketShift = 0x18
364 PfBuffer = 0x1c
365 PfSegment = 0x20
366 PfAffinity = 0x24
367 PfSource = 0x28
368 PfStarted = 0x2c
369 ProfileObjectLength = 0x30
370
371 /* PORT_MESSAGE */
372 PmLength = 0x0
373 PmZeroInit = 0x4
374 PmClientId = 0x8
375 PmProcess = 0x8
376 PmThread = 0xc
377 PmMessageId = 0x10
378 PmClientViewSize = 0x14
379 PortMessageLength = 0x18
380
381 /* KPROCESS */
382 PrType = 0x0
383 PrSize = 0x2
384 PrSignalState = 0x4
385 PrProfileListHead = 0x10
386 PrDirectoryTableBase = 0x18
387 PrLdtDescriptor = 0x20
388 PrIopmOffset = 0x30
389 PrInt21Descriptor = 0x28
390 PrVdmTrapcHandler = 0x4c
391 PrFlags = 0x6b
392 PrActiveProcessors = 0x34
393 PrKernelTime = 0x38
394 PrUserTime = 0x3c
395 PrReadyListHead = 0x40
396 PrSwapListEntry = 0x48
397 PrThreadListHead = 0x50
398 PrProcessLock = 0x58
399 PrAffinity = 0x5c
400 PrProcessFlags = 0x60
401 PrBasePriority = 0x64
402 PrQuantumReset = 0x65
403 PrState = 0x66
404 PrStackCount = 0x6c
405 KernelProcessObjectLength = 0x78
406
407 /* KQUEUE */
408 QuType = 0x0
409 QuSize = 0x2
410 QuSignalState = 0x4
411 QuEntryListHead = 0x10
412 QuCurrentCount = 0x18
413 QuMaximumCount = 0x1c
414 QuThreadListHead = 0x20
415 QueueObjectLength = 0x28
416
417 /* STRING */
418 StrLength = 0x0
419 StrMaximumLength = 0x2
420 StrBuffer = 0x4
421
422 /* TEB */
423 TeCmTeb = 0x0
424 TeExceptionList = 0x0
425 TeStackBase = 0x4
426 TeStackLimit = 0x8
427 TeFiberData = 0x10
428 TeSelf = 0x18
429 TeEnvironmentPointer = 0x1c
430 TeClientId = 0x20
431 TeActiveRpcHandle = 0x28
432 TeThreadLocalStoragePointer = 0x2c
433 TeCountOfOwnedCriticalSections = 0x38
434 TePeb = 0x30
435 TeCsrClientThread = 0x3c
436 TeWOW32Reserved = 0xc0
437 TeExceptionCode = 0x1a4
438 TeActivationContextStackPointer = 0x1a8
439 TeGdiClientPID = 0x6c0
440 TeGdiClientTID = 0x6c4
441 TeGdiThreadLocalInfo = 0x6c8
442 TeglDispatchTable = 0x7c4
443 TeglReserved1 = 0xb68
444 TeglReserved2 = 0xbdc
445 TeglSectionInfo = 0xbe0
446 TeglSection = 0xbe4
447 TeglTable = 0xbe8
448 TeglCurrentRC = 0xbec
449 TeglContext = 0xbf0
450 TeDeallocationStack = 0xe0c
451 TeTlsSlots = 0xe10
452 TeTlsExpansionSlots = 0xf94
453 TeLastErrorValue = 0x34
454 TeVdm = 0xf18
455 TeInstrumentation = 0xf2c
456 TeGdiBatchCount = 0xf70
457 TeGuaranteedStackBytes = 0xf78
458 TeFlsData = 0xfb4
459 ThreadEnvironmentBlockLength = 0xfbc
460
461 /* TIME_FIELDS */
462 TfSecond = 0xa
463 TfMinute = 0x8
464 TfHour = 0x6
465 TfWeekday = 0xe
466 TfDay = 0x4
467 TfMonth = 0x2
468 TfYear = 0x0
469 TfMilliseconds = 0xc
470
471 /* KTHREAD */
472 ThType = 0x0
473 ThSize = 0x2
474 ThLock = 0x0
475 ThDebugActive = 0x3
476 ThSignalState = 0x4
477 ThInitialStack = 0x18
478 ThStackLimit = 0x1c
479 ThKernelStack = 0x20
480 ThThreadLock = 0x24
481 ThAlerted = 0x5e
482 ThApcState = 0x28
483 ThPriority = 0x5b
484 ThSwapBusy = 0x5d
485 ThNextProcessor = 0x40
486 ThDeferredProcessor = 0x41
487 ThApcQueueLock = 0x44
488 ThContextSwitches = 0x48
489 ThState = 0x4c
490 ThNpxState = 0x4d
491 ThWaitIrql = 0x4e
492 ThWaitMode = 0x4f
493 ThWaitStatus = 0x50
494 ThWaitBlockList = 0x54
495 ThGateObject = 0x54
496 ThWaitListEntry = 0x60
497 ThSwapListEntry = 0x60
498 ThQueue = 0x68
499 ThWaitTime = 0x6c
500 ThCombinedApcDisable = 0x70
501 ThKernelApcDisable = 0x70
502 ThSpecialApcDisable = 0x72
503 ThTeb = 0x74
504 ThTimer = 0x78
505 ThThreadFlags = 0xa0
506 ThServiceTable = 0x118
507 ThWaitBlock = 0xa8
508 ThResourceIndex = 0xef
509 ThQueueListEntry = 0x108
510 ThTrapFrame = 0x110
511 ThCallbackStack = 0x114
512 ThApcStateIndex = 0x11c
513 ThIdealProcessor = 0x11d
514 ThBasePriority = 0x121
515 ThPriorityDecrement = 0x122
516 ThAdjustReason = 0x42
517 ThAdjustIncrement = 0x43
518 ThPreviousMode = 0xd7
519 ThSaturation = 0x123
520 ThFreezeCount = 0x14f
521 ThUserAffinity = 0x124
522 ThProcess = 0x128
523 ThAffinity = 0x12c
524 ThUserIdealProcessor = 0x151
525 ThApcStatePointer = 0x130
526 ThSavedApcState = 0x138
527 ThWaitReason = 0x5a
528 ThSuspendCount = 0x150
529 ThWin32Thread = 0x154
530 ThStackBase = 0x158
531 ThSuspendApc = 0x15c
532 ThPowerState = 0x18b
533 ThKernelTime = 0x160
534 ThLegoData = 0x184
535 ThLargeStack = 0x107
536 ThUserTime = 0x18c
537 ThSuspendSemaphore = 0x190
538 ThSListFaultCount = 0x1a4
539 ThThreadListEntry = 0x1a8
540 ThMutantListHead = 0x10
541 ThSListFaultAddress = 0x1b0
542 KernelThreadObjectLength = 0x1b8
543 ExecutiveThreadObjectLength = 0x250
544
545 /* KTIMER */
546 TiType = 0x0
547 TiSize = 0x2
548 TiInserted = 0x3
549 TiSignalState = 0x4
550 TiDueTime = 0x10
551 TiTimerListEntry = 0x18
552 TiDpc = 0x20
553 TiPeriod = 0x24
554 TimerObjectLength = 0x28
555
556 /* TIME */
557
558 /* KUSER_SHARED_DATA */
559 UsTickCountMultiplier = 0x4
560 UsInterruptTime = 0x8
561 UsSystemTime = 0x14
562 UsTimeZoneBias = 0x20
563 UsImageNumberLow = 0x2c
564 UsImageNumberHigh = 0x2e
565 UsNtSystemRoot = 0x30
566 UsMaxStackTraceDepth = 0x238
567 UsCryptoExponent = 0x23c
568 UsTimeZoneId = 0x240
569 UsLargePageMinimum = 0x244
570 UsReserved2 = 0x248
571 UsNtProductType = 0x264
572 UsProductTypeIsValid = 0x268
573 UsNtMajorVersion = 0x26c
574 UsNtMinorVersion = 0x270
575 UsProcessorFeatures = 0x274
576 UsReserved1 = 0x2b4
577 UsReserved3 = 0x2b8
578 UsTimeSlip = 0x2bc
579 UsAlternativeArchitecture = 0x2c0
580 UsSystemExpirationDate = 0x2c8
581 UsSuiteMask = 0x2d0
582 UsKdDebuggerEnabled = 0x2d4
583 UsActiveConsoleId = 0x2d8
584 UsDismountCount = 0x2dc
585 UsComPlusPackage = 0x2e0
586 UsLastSystemRITEventTickCount = 0x2e4
587 UsNumberOfPhysicalPages = 0x2e8
588 UsSafeBootMode = 0x2ec
589 UsTestRetInstruction = 0x2f8
590 UsSystemCall = 0x300
591 UsSystemCallReturn = 0x304
592 UsSystemCallPad = 0x308
593 UsTickCount = 0x320
594 UsTickCountQuad = 0x320
595 UsWow64SharedInformation = 0x340
596
597 /* KWAIT_BLOCK */
598 WbWaitListEntry = 0x0
599 WbThread = 0x8
600 WbObject = 0xc
601 WbNextWaitBlock = 0x10
602 WbWaitKey = 0x14
603 WbWaitType = 0x16
604
605 /* CR0 flags */
606 CR0_PE = 0x1
607 CR0_MP = 0x2
608 CR0_EM = 0x4
609 CR0_TS = 0x8
610 CR0_ET = 0x10
611 CR0_NE = 0x20
612 CR0_WP = 0x10000
613 CR0_AM = 0x40000
614 CR0_NW = 0x20000000
615 CR0_CD = 0x40000000
616 CR0_PG = 0x80000000
617
618 /* CR4 flags */
619 CR4_VME = 0x1
620 CR4_PVI = 0x2
621 CR4_TSD = 0x4
622 CR4_DE = 0x8
623 CR4_PSE = 0x10
624 CR4_PAE = 0x20
625 CR4_MCE = 0x40
626 CR4_PGE = 0x80
627 CR4_FXSR = 0x200
628 CR4_XMMEXCPT = 0x400
629
630 /* KeFeatureBits flags */
631 KF_RDTSC = 0x2
632 KF_CR4 = 0x4
633 KF_GLOBAL_PAGE = 0x10
634 KF_LARGE_PAGE = 0x20
635 KF_CMPXCHG8B = 0x80
636 KF_FAST_SYSCALL = 0x1000
637 KF_V86_VIS = 0x1
638
639 /* Machine type definitions */
640 MACHINE_TYPE_ISA = 0x0
641 MACHINE_TYPE_EISA = 0x1
642 MACHINE_TYPE_MCA = 0x2
643
644 /* EFLAGS */
645 EFLAGS_TF = 0x100
646 EFLAGS_INTERRUPT_MASK = 0x200
647 EFLAGS_V86_MASK = 0x20000
648 EFLAGS_ALIGN_CHECK = 0x40000
649 EFLAGS_VIF = 0x80000
650 EFLAGS_VIP = 0x100000
651 EFLAGS_USER_SANITIZE = 0x3f4dd7
652
653 /* KDGT selectors */
654 KGDT_R3_DATA = 0x20
655 KGDT_R3_CODE = 0x18
656 KGDT_R0_CODE = 0x8
657 KGDT_R0_DATA = 0x10
658 KGDT_R0_PCR = 0x30
659 KGDT_TSS = 0x28
660 KGDT_R3_TEB = 0x38
661 KGDT_DF_TSS = 0x50
662 KGDT_NMI_TSS = 0x58
663 KGDT_LDT = 0x48
664 NPX_STATE_NOT_LOADED = 0xa
665 NPX_STATE_LOADED = 0x0
666 PF_XMMI_INSTRUCTIONS_AVAILABLE = 0x6
667 EFLAG_SELECT = 0xc000
668
669 /* CONTEXT */
670 CsContextFlags = 0x0
671 CsDr0 = 0x4
672 CsDr1 = 0x8
673 CsDr2 = 0xc
674 CsDr3 = 0x10
675 CsDr6 = 0x14
676 CsDr7 = 0x18
677 CsFloatSave = 0x1c
678 CsSegGs = 0x8c
679 CsSegFs = 0x90
680 CsSegEs = 0x94
681 CsSegDs = 0x98
682 CsEdi = 0x9c
683 CsEsi = 0xa0
684 CsEbx = 0xa4
685 CsEdx = 0xa8
686 CsEcx = 0xac
687 CsEax = 0xb0
688 CsEbp = 0xb4
689 CsEip = 0xb8
690 CsSegCs = 0xbc
691 CsEflags = 0xc0
692 CsEsp = 0xc4
693 CsSegSs = 0xc8
694 CsExtendedRegisters = 0xcc
695 ContextFrameLength = 0x2cc
696 CONTEXT_LENGTH = 0x2cc
697
698 /* KGDTENTRY */
699 KgdtBaseLow = 0x2
700 KgdtBaseMid = 0x4
701 KgdtBaseHi = 0x7
702 KgdtLimitHi = 0x6
703 KgdtLimitLow = 0x0
704
705 /* KTRAP_FRAME */
706 TsExceptionList = 0x4c
707 TsPreviousPreviousMode = 0x48
708 TsSegGs = 0x30
709 TsSegFs = 0x50
710 TsSegEs = 0x34
711 TsSegDs = 0x38
712 TsEdi = 0x54
713 TsEsi = 0x58
714 TsEbp = 0x60
715 TsEbx = 0x5c
716 TsEdx = 0x3c
717 TsEcx = 0x40
718 TsEax = 0x44
719 TsErrCode = 0x64
720 TsEip = 0x68
721 TsSegCs = 0x6c
722 TsEflags = 0x70
723 TsHardwareEsp = 0x74
724 TsHardwareSegSs = 0x78
725 TsTempSegCs = 0x10
726 TsTempEsp = 0x14
727 TsDbgEbp = 0x0
728 TsDbgEip = 0x4
729 TsDbgArgMark = 0x8
730 TsDbgArgPointer = 0xc
731 TsDr0 = 0x18
732 TsDr1 = 0x1c
733 TsDr2 = 0x20
734 TsDr3 = 0x24
735 TsDr6 = 0x28
736 TsDr7 = 0x2c
737 TsV86Es = 0x7c
738 TsV86Ds = 0x80
739 TsV86Fs = 0x84
740 TsV86Gs = 0x88
741 KTRAP_FRAME_LENGTH = 0x8c
742 KTRAP_FRAME_ALIGN = 0x4
743 FRAME_EDITED = 0xfff8
744
745 /* KTSS */
746 TssEsp0 = 0x4
747 TssCR3 = 0x1c
748 TssEip = 0x20
749 TssEFlags = 0x24
750 TssEax = 0x28
751 TssEbx = 0x34
752 TssEcx = 0x2c
753 TssEdx = 0x30
754 TssEsp = 0x38
755 TssEbp = 0x3c
756 TssEsi = 0x40
757 TssEdi = 0x44
758 TssEs = 0x48
759 TssCs = 0x4c
760 TssSs = 0x50
761 TssDs = 0x54
762 TssFs = 0x58
763 TssGs = 0x5c
764 TssLDT = 0x60
765 TssIoMapBase = 0x66
766 TssIoMaps = 0x68
767 TssLength = 0x20ac
768
769 /* KPCR */
770 KPCR_EXCEPTION_LIST = 0x0
771 KPCR_PERF_GLOBAL_GROUP_MASK = 0x8
772 KPCR_CONTEXT_SWITCHES = 0x10
773 KPCR_TEB = 0x18
774 KPCR_SELF = 0x1c
775 KPCR_PRCB = 0x20
776 KPCR_IDT = 0x38
777 KPCR_GDT = 0x3c
778 KPCR_TSS = 0x40
779 KPCR_STALL_SCALE_FACTOR = 0x4c
780 KPCR_PRCB_DATA = 0x120
781 KPCR_CURRENT_THREAD = 0x124
782 KPCR_PRCB_NEXT_THREAD = 0x128
783 KPCR_PRCB_DPC_QUEUE_DEPTH = 0xa4c
784 KPCR_PRCB_DPC_STACK = 0xa68
785 KPCR_PRCB_MAXIMUM_DPC_QUEUE_DEPTH = 0xa6c
786 KPCR_PRCB_DPC_ROUTINE_ACTIVE = 0xa7a
787 KPCR_PRCB_TIMER_REQUEST = 0xa88
788 KPCR_PRCB_QUANTUM_END = 0xaa1
789 KPCR_PRCB_DEFERRED_READY_LIST_HEAD = 0xc10
790 KPCR_PRCB_POWER_STATE_IDLE_FUNCTION = 0xec0
791
792 /* KTRAP_FRAME */
793 KTRAP_FRAME_DEBUGEBP = 0x0
794 KTRAP_FRAME_DEBUGEIP = 0x4
795 KTRAP_FRAME_TEMPESP = 0x14
796 KTRAP_FRAME_DR0 = 0x18
797 KTRAP_FRAME_DR1 = 0x1c
798 KTRAP_FRAME_DR2 = 0x20
799 KTRAP_FRAME_DR3 = 0x24
800 KTRAP_FRAME_DR6 = 0x28
801 KTRAP_FRAME_DR7 = 0x2c
802 KTRAP_FRAME_GS = 0x30
803 KTRAP_FRAME_ES = 0x34
804 KTRAP_FRAME_DS = 0x38
805 KTRAP_FRAME_EDX = 0x3c
806 KTRAP_FRAME_ECX = 0x40
807 KTRAP_FRAME_EAX = 0x44
808 KTRAP_FRAME_PREVIOUS_MODE = 0x48
809 KTRAP_FRAME_EXCEPTION_LIST = 0x4c
810 KTRAP_FRAME_FS = 0x50
811 KTRAP_FRAME_EDI = 0x54
812 KTRAP_FRAME_ESI = 0x58
813 KTRAP_FRAME_EBX = 0x5c
814 KTRAP_FRAME_EBP = 0x60
815 KTRAP_FRAME_ERROR_CODE = 0x64
816 KTRAP_FRAME_EIP = 0x68
817 KTRAP_FRAME_EFLAGS = 0x70
818 KTRAP_FRAME_ESP = 0x74
819 KTRAP_FRAME_SS = 0x78
820 KTRAP_FRAME_V86_ES = 0x7c
821 KTRAP_FRAME_V86_DS = 0x80
822 KTRAP_FRAME_V86_FS = 0x84
823 KTRAP_FRAME_V86_GS = 0x88
824 KTRAP_FRAME_SIZE = 0x8c
825 FRAME_EDITED = 0xfff8
826
827 /* CONTEXT */
828 CONTEXT_FLAGS = 0x0
829 CONTEXT_SEGGS = 0x8c
830 CONTEXT_SEGFS = 0x90
831 CONTEXT_SEGES = 0x94
832 CONTEXT_SEGDS = 0x98
833 CONTEXT_EDI = 0x9c
834 CONTEXT_ESI = 0xa0
835 CONTEXT_EBX = 0xa4
836 CONTEXT_EDX = 0xa8
837 CONTEXT_ECX = 0xac
838 CONTEXT_EAX = 0xb0
839 CONTEXT_EBP = 0xb4
840 CONTEXT_EIP = 0xb8
841 CONTEXT_SEGCS = 0xbc
842 CONTEXT_EFLAGS = 0xc0
843 CONTEXT_ESP = 0xc4
844 CONTEXT_SEGSS = 0xc8
845 CONTEXT_FRAME_LENGTH = 0x2cc
846
847 /* FIBER */
848 FIBER_PARAMETER = 0x0
849 FIBER_EXCEPTION_LIST = 0x4
850 FIBER_STACK_BASE = 0x8
851 FIBER_STACK_LIMIT = 0xc
852 FIBER_DEALLOCATION_STACK = 0x10
853 FIBER_CONTEXT = 0x14
854 FIBER_CONTEXT_FLAGS = 0x14
855 FIBER_CONTEXT_EAX = 0xc4
856 FIBER_CONTEXT_EBX = 0xb8
857 FIBER_CONTEXT_ECX = 0xc0
858 FIBER_CONTEXT_EDX = 0xbc
859 FIBER_CONTEXT_ESI = 0xb4
860 FIBER_CONTEXT_EDI = 0xb0
861 FIBER_CONTEXT_EBP = 0xc8
862 FIBER_CONTEXT_EIP = 0xcc
863 FIBER_CONTEXT_ESP = 0xd8
864 FIBER_CONTEXT_DR6 = 0x28
865 FIBER_CONTEXT_FLOAT_SAVE_CONTROL_WORD = 0x30
866 FIBER_CONTEXT_FLOAT_SAVE_STATUS_WORD = 0x34
867 FIBER_CONTEXT_FLOAT_SAVE_TAG_WORD = 0x38
868 FIBER_GUARANTEED_STACK_BYTES = 0x2e0
869 FIBER_FLS_DATA = 0x2e4
870 FIBER_ACTIVATION_CONTEXT_STACK = 0x2e8
871
872 /* KTSS */
873 KTSS_IOMAPBASE = 0x66
874 KTSS_ESP0 = 0x4
875
876 /* EXCEPTION_RECORD */
877 EXCEPTION_RECORD_EXCEPTION_CODE = 0x0
878 EXCEPTION_RECORD_EXCEPTION_FLAGS = 0x4
879 EXCEPTION_RECORD_EXCEPTION_RECORD = 0x8
880 EXCEPTION_RECORD_EXCEPTION_ADDRESS = 0xc
881 EXCEPTION_RECORD_NUMBER_PARAMETERS = 0x10
882 EXCEPTION_RECORD_EXCEPTION_ADDRESS = 0xc
883 SIZEOF_EXCEPTION_RECORD = 0x50
884 EXCEPTION_RECORD_LENGTH = 0x50
885
886 /* KTHREAD */
887 KTHREAD_DEBUG_ACTIVE = 0x3
888 KTHREAD_INITIAL_STACK = 0x18
889 KTHREAD_STACK_LIMIT = 0x1c
890 KTHREAD_TEB = 0x74
891 KTHREAD_KERNEL_STACK = 0x20
892 KTHREAD_APCSTATE_PROCESS = 0x38
893 KTHREAD_PENDING_KERNEL_APC = 0x3d
894 KTHREAD_CONTEXT_SWITCHES = 0x48
895 KTHREAD_STATE_ = 0x4c
896 KTHREAD_NPX_STATE = 0x4d
897 KTHREAD_WAIT_IRQL = 0x4e
898 KTHREAD_WAIT_REASON = 0x5a
899 KTHREAD_COMBINED_APC_DISABLE = 0x70
900 KTHREAD_SPECIAL_APC_DISABLE = 0x72
901 KTHREAD_LARGE_STACK = 0x107
902 KTHREAD_TRAP_FRAME = 0x110
903 KTHREAD_CALLBACK_STACK = 0x114
904 KTHREAD_APC_STATE_INDEX = 0x11c
905 KTHREAD_STACK_BASE = 0x158
906
907 /* KPROCESS */
908 KPROCESS_DIRECTORY_TABLE_BASE = 0x18
909 KPROCESS_LDT_DESCRIPTOR0 = 0x20
910 KPROCESS_LDT_DESCRIPTOR1 = 0x24
911 KPROCESS_INT21_DESCRIPTOR0 = 0x28
912 KPROCESS_INT21_DESCRIPTOR1 = 0x2c
913 KPROCESS_IOPM_OFFSET = 0x30
914
915 /* Teb */
916 TEB_EXCEPTION_LIST = 0x0
917 TEB_STACK_LIMIT = 0x8
918 TEB_STACK_BASE = 0x4
919 TEB_SELF = 0x18
920 TEB_FIBER_DATA = 0x10
921 TEB_PEB = 0x30
922 TEB_EXCEPTION_CODE = 0x1a4
923 PEB_KERNEL_CALLBACK_TABLE = 0x2c
924 TEB_FLS_DATA = 0xfb4
925 TEB_ACTIVATION_CONTEXT_STACK_POINTER = 0x1a8
926 TEB_GUARANTEED_STACK_BYTES = 0xf78
927 TEB_DEALLOCATION_STACK = 0xe0c
928
929 /* Misc */
930 NPX_FRAME_LENGTH = 0x210
931 FN_CR0_NPX_STATE = 0x20c
932 DR7_RESERVED_MASK = 0xdc00
933 FP_CONTROL_WORD = 0x0
934 FP_STATUS_WORD = 0x4
935 FP_TAG_WORD = 0x8
936 FP_DATA_SELECTOR = 0x18
937 CBSTACK_RESULT = 0x20
938 CBSTACK_RESULT_LENGTH = 0x24
939 CBSTACK_TRAP_FRAME = 0x4
940 CBSTACK_CALLBACK_STACK = 0x8
941 SIZEOF_FX_SAVE_AREA = 0x210
942 KUSER_SHARED_SYSCALL = 0x7ffe0300
943 EXCEPTION_EXECUTE_HANDLER = 0x1
944 STATUS_CALLBACK_POP_STACK = 0xc0000423
945 CONTEXT_ALIGNED_SIZE = 0x2cc
946 PROCESSOR_FEATURE_FXSR = 0x7ffe0278