ReactOS 0.4.17-dev-1321-g5c122a9
ketypes.h
Go to the documentation of this file.
1
2
3#ifndef _ARM64_KETYPES_H
4#define _ARM64_KETYPES_H
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10/* Interrupt request levels */
11#define PASSIVE_LEVEL 0
12#define LOW_LEVEL 0
13#define APC_LEVEL 1
14#define DISPATCH_LEVEL 2
15#define CMCI_LEVEL 5
16#define CLOCK_LEVEL 13
17#define IPI_LEVEL 14
18#define DRS_LEVEL 14
19#define POWER_LEVEL 14
20#define PROFILE_LEVEL 15
21#define HIGH_LEVEL 15
22
23//
24// IPI Types
25//
26#define IPI_APC 1
27#define IPI_DPC 2
28#define IPI_FREEZE 4
29#define IPI_PACKET_READY 6
30#define IPI_SYNCH_REQUEST 16
31
32//
33// PRCB Flags
34//
35#define PRCB_MAJOR_VERSION 1
36#define PRCB_BUILD_DEBUG 1
37#define PRCB_BUILD_UNIPROCESSOR 2
38
39//
40// No LDTs on ARM64
41//
42#define LDT_ENTRY ULONG
43
44
45//
46// HAL Variables
47//
48#define INITIAL_STALL_COUNT 100
49#define MM_HAL_VA_START 0xFFFFFFFFFFC00000ULL
50#define MM_HAL_VA_END 0xFFFFFFFFFFFFFFFFULL
51
52//
53// Double fault stack size
54//
55#define DOUBLE_FAULT_STACK_SIZE 0x8000
56
57//
58// Static Kernel-Mode Address start (use MM_KSEG0_BASE for actual)
59//
60#define KSEG0_BASE 0xFFFF800000000000ULL
61
62//
63// Structure for CPUID info
64//
65typedef union _CPU_INFO
66{
69
70typedef struct _KTRAP_FRAME
71{
75 union
76 {
77 struct
78 {
81 };
82 };
84 union
85 {
86 struct
87 {
90 };
91 };
92 //struct PKARM64_VFP_STATE VfpState;
94 ULONG Bcr[8];
96 ULONG Wcr[2];
101 union
102 {
104 struct
105 {
125 };
126 };
131
132typedef struct _KEXCEPTION_FRAME
133{
136
137#ifndef NTOS_MODE_USER
138
140{
162
163//
164// Processor Region Control Block
165// Based on WoA
166//
167typedef struct _KPRCB
168{
172 struct _KTHREAD *CurrentThread;
173 struct _KTHREAD *NextThread;
174 struct _KTHREAD *IdleThread;
177 union
178 {
180 struct
181 {
184 };
185 };
189
190//
191// Processor Control Region
192// Based on WoA
193//
194typedef struct _KIPCR
195{
196 union
197 {
199 struct
200 {
203 struct _KPCR *Self;
207 };
208 };
216 union
217 {
219 struct
220 {
223 };
224 };
226 union
227 {
229 struct
230 {
235 };
236 };
237 union
238 {
240 struct
241 {
247 };
248 };
250 union
251 {
253 struct
254 {
257 };
258 };
263
264 /* Private members, not in ntddk.h */
265 PVOID Idt[256];
266 PVOID* IdtExt;
268 KPRCB Prcb;
270
271//
272// Special Registers Structure (outside of CONTEXT)
273// Based on WoA symbols
274//
275typedef struct _KSPECIAL_REGISTERS
276{
283 ULONG KernelBcr[8];
285 ULONG KernelWcr[2];
287
288//
289// ARM64 Architecture State
290// Based on WoA symbols
291//
292typedef struct _KARM64_ARCH_STATE
293{
314
315typedef struct _KPROCESSOR_STATE
316{
319 CONTEXT ContextFrame; // 800
321
322//
323// Macro to get current KPRCB
324//
326struct _KPRCB *
328{
329 return &((PKIPCR)KeGetPcr())->Prcb;
330}
331
332//
333// Just read it from the PCR
334//
335#define KeGetCurrentIrql() KeGetPcr()->CurrentIrql
336#define _KeGetCurrentThread() KeGetCurrentPrcb()->CurrentThread
337#define _KeGetPreviousMode() KeGetCurrentPrcb()->CurrentThread->PreviousMode
338#define _KeIsExecutingDpc() (KeGetCurrentPrcb()->DpcRoutineActive != 0)
339#define KeGetCurrentThread() _KeGetCurrentThread()
340#define KeGetPreviousMode() _KeGetPreviousMode()
341
342#endif // !NTOS_MODE_USER
343
344#ifdef __cplusplus
345}; // extern "C"
346#endif
347
348#endif // !_ARM64_KETYPES_H
UCHAR KIRQL
Definition: env_spec_w32.h:591
unsigned __int64 ULONG64
Definition: imports.h:198
struct _KSPECIAL_REGISTERS * PKSPECIAL_REGISTERS
struct _KTRAP_FRAME KTRAP_FRAME
struct _KPROCESSOR_STATE * PKPROCESSOR_STATE
struct _KIPCR KIPCR
struct _KPRCB * PKPRCB
struct _KEXCEPTION_FRAME * PKEXCEPTION_FRAME
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
Definition: ketypes.h:1197
struct _KIPCR * PKIPCR
union _CPU_INFO CPU_INFO
struct _KPRCB KPRCB
struct _KEXCEPTION_FRAME KEXCEPTION_FRAME
struct _KTRAP_FRAME * PKTRAP_FRAME
struct _KSPECIAL_REGISTERS KSPECIAL_REGISTERS
union _CPU_INFO * PCPU_INFO
struct _KPROCESSOR_STATE KPROCESSOR_STATE
struct _KARM64_ARCH_STATE * PKARM64_ARCH_STATE
struct _TRAPFRAME_LOG_ENTRY * PTRAPFRAME_LOG_ENTRY
struct _KARM64_ARCH_STATE KARM64_ARCH_STATE
struct _TRAPFRAME_LOG_ENTRY TRAPFRAME_LOG_ENTRY
#define KeGetPcr()
Definition: ketypes.h:81
unsigned short USHORT
Definition: pedump.c:61
char CHAR
Definition: pedump.c:57
ULONG64 Pmuserenr_El0
Definition: ketypes.h:310
ULONG64 Pmxevcntr_El0[31]
Definition: ketypes.h:306
ULONG64 Pmselr_El0
Definition: ketypes.h:309
ULONG64 Esr_El1
Definition: ketypes.h:301
ULONG64 Ttbr1_El1
Definition: ketypes.h:300
ULONG64 Mair_El1
Definition: ketypes.h:311
ULONG64 Pmovsclr_El0
Definition: ketypes.h:308
ULONG64 Ttbr0_El1
Definition: ketypes.h:299
ULONG64 Midr_El1
Definition: ketypes.h:294
ULONG64 Actlr_El1
Definition: ketypes.h:296
ULONG64 Pmcr_El0
Definition: ketypes.h:303
ULONG64 Vbar_El1
Definition: ketypes.h:312
ULONG64 Cpacr_El1
Definition: ketypes.h:297
ULONG64 Sctlr_El1
Definition: ketypes.h:295
ULONG64 Pmccntr_El0
Definition: ketypes.h:305
ULONG64 Pmxevtyper_El0[31]
Definition: ketypes.h:307
ULONG64 Tcr_El1
Definition: ketypes.h:298
ULONG64 Far_El1
Definition: ketypes.h:302
ULONG64 Pmcntenset_El0
Definition: ketypes.h:304
UCHAR SsbMitigationKernel
Definition: ketypes.h:244
KPRCB Prcb
Definition: ketypes.h:1003
UCHAR Pad1[2]
Definition: ketypes.h:211
USHORT MinorVersion
Definition: ketypes.h:991
ULONG TibPad0[2]
Definition: ketypes.h:1055
USHORT InterruptPad
Definition: ketypes.h:1081
ULONG SecondLevelCacheSize
Definition: ketypes.h:995
UCHAR SsbMitigationDynamic
Definition: ketypes.h:243
UCHAR SsbMitigationFirmware
Definition: ketypes.h:242
USHORT MajorVersion
Definition: ketypes.h:990
UCHAR SecondLevelCacheAssociativity
Definition: ketypes.h:986
PVOID Spare1
Definition: ketypes.h:1056
PVOID Idt[256]
Definition: ketypes.h:1088
KIRQL CurrentIrql
Definition: ketypes.h:1063
PVOID * IdtExt
Definition: ketypes.h:1089
UCHAR SsbMitigationFlags
Definition: ketypes.h:239
UCHAR DispatchInterrupt
Definition: ketypes.h:1078
UCHAR CachePrefetcherMitigation
Definition: ketypes.h:255
UCHAR BtiMitigation
Definition: ketypes.h:228
ULONG64 PanicStorage[6]
Definition: ketypes.h:259
UCHAR SsbMitigationUser
Definition: ketypes.h:245
ULONG HalReserved[16]
Definition: ketypes.h:996
UCHAR CachePrefetcherMitigationFlags
Definition: ketypes.h:252
PKSPIN_LOCK_QUEUE LockArray
Definition: ketypes.h:979
NT_TIB NtTib
Definition: ketypes.h:971
UCHAR BtiVbar
Definition: ketypes.h:232
UCHAR BhbMitigation
Definition: ketypes.h:249
UCHAR BtiCswapSmc
Definition: ketypes.h:234
UCHAR KvaVbar
Definition: ketypes.h:231
UCHAR ApcInterrupt
Definition: ketypes.h:1077
USHORT SoftwareInterruptPending
Definition: ketypes.h:1074
PVOID PcrAlign[15]
Definition: ketypes.h:267
UCHAR SsbMitigationReserved
Definition: ketypes.h:246
UCHAR BtiCswapHvc
Definition: ketypes.h:233
struct _KPCR * Self
Definition: ketypes.h:977
ULONG StallScaleFactor
Definition: ketypes.h:992
PVOID KdVersionBlock
Definition: ketypes.h:999
PVOID Used_Self
Definition: ketypes.h:980
UCHAR Pad2
Definition: ketypes.h:256
PVOID KvaUserModeTtbr1
Definition: ketypes.h:262
PVOID PcrReserved0
Definition: ketypes.h:204
Definition: ke.h:294
UCHAR ReservedMustBeZero
Definition: ketypes.h:757
UCHAR IdleHalt
Definition: ketypes.h:669
struct _KTHREAD * IdleThread
Definition: ketypes.h:672
UCHAR NestingLevel
Definition: ketypes.h:674
UCHAR PendingTick
Definition: ketypes.h:769
USHORT Number
Definition: ketypes.h:663
UCHAR LegacyNumber
Definition: ketypes.h:756
UCHAR IdleState
Definition: ketypes.h:186
UCHAR ClockOwner
Definition: ketypes.h:763
UCHAR PendingTickFlags
Definition: ketypes.h:766
struct _KTHREAD * CurrentThread
Definition: ketypes.h:670
struct _KTHREAD * NextThread
Definition: ketypes.h:671
UCHAR PendingBackupTick
Definition: ketypes.h:770
KSPECIAL_REGISTERS SpecialRegisters
Definition: ketypes.h:635
KARM64_ARCH_STATE ArchState
Definition: ketypes.h:318
CONTEXT ContextFrame
Definition: ketypes.h:636
ULONG KernelWcr[1]
Definition: ketypes.h:628
ULONG64 Tpidr_El0
Definition: ketypes.h:279
ULONG64 Tpidr_El1
Definition: ketypes.h:281
ULONG KernelBvr[8]
Definition: ketypes.h:625
ULONG KernelWvr[1]
Definition: ketypes.h:627
ULONG KernelBcr[8]
Definition: ketypes.h:626
ULONG64 Tpidrro_El0
Definition: ketypes.h:280
ULONG64 X12
Definition: ketypes.h:118
ULONG Esr
Definition: ketypes.h:99
ULONG64 X8
Definition: ketypes.h:114
UCHAR DebugRegistersValid
Definition: ketypes.h:74
ULONG64 Pc
Definition: ketypes.h:129
ULONG VfpState
Definition: ketypes.h:93
ULONG64 X11
Definition: ketypes.h:117
ULONG64 X18
Definition: ketypes.h:124
ULONG64 X9
Definition: ketypes.h:115
ULONG64 X13
Definition: ketypes.h:119
ULONG64 X15
Definition: ketypes.h:121
ULONG Reserved
Definition: ketypes.h:353
CHAR PreviousMode
Definition: ketypes.h:418
ULONG Wcr[1]
Definition: ketypes.h:366
ULONG64 X16
Definition: ketypes.h:122
ULONG64 X2
Definition: ketypes.h:108
ULONG Spsr
Definition: ketypes.h:98
ULONG64 X1
Definition: ketypes.h:107
ULONG64 TrapFrame
Definition: ketypes.h:89
ULONG Bcr[8]
Definition: ketypes.h:364
ULONG64 X4
Definition: ketypes.h:110
ULONG64 Fp
Definition: ketypes.h:128
ULONG64 Lr
Definition: ketypes.h:127
ULONG64 Sp
Definition: ketypes.h:100
ULONG64 FaultAddress
Definition: ketypes.h:88
ULONG64 X3
Definition: ketypes.h:109
ULONG64 X5
Definition: ketypes.h:111
ULONG64 X14
Definition: ketypes.h:120
UCHAR PreviousIrql
Definition: ketypes.h:419
ULONG64 X17
Definition: ketypes.h:123
ULONG64 X0
Definition: ketypes.h:106
UCHAR ExceptionActive
Definition: ketypes.h:421
UCHAR ContextFromKFramesUnwound
Definition: ketypes.h:73
ULONG Wvr[1]
Definition: ketypes.h:365
ULONG64 X10
Definition: ketypes.h:116
ULONG Bvr[8]
Definition: ketypes.h:363
ULONG64 X7
Definition: ketypes.h:113
ULONG64 X6
Definition: ketypes.h:112
Definition: ketypes.h:140
ULONG64 X4
Definition: ketypes.h:150
ULONG64 X1
Definition: ketypes.h:147
ULONG64 Fp
Definition: ketypes.h:154
ULONG64 Sp
Definition: ketypes.h:156
ULONG Esr
Definition: ketypes.h:159
ULONG64 X6
Definition: ketypes.h:152
ULONG64 X0
Definition: ketypes.h:146
ULONG64 X5
Definition: ketypes.h:151
ULONG64 Far
Definition: ketypes.h:158
ULONG64 X2
Definition: ketypes.h:148
USHORT Padding
Definition: ketypes.h:144
ULONG64 Lr
Definition: ketypes.h:155
ULONG64 X7
Definition: ketypes.h:153
UCHAR CpuNumber
Definition: ketypes.h:142
ULONG64 X3
Definition: ketypes.h:149
UCHAR TrapType
Definition: ketypes.h:143
ULONG64 Thread
Definition: ketypes.h:141
ULONG64 Pc
Definition: ketypes.h:157
ULONG Cpsrl
Definition: ketypes.h:145
ULONG Reserved1
Definition: ketypes.h:160
unsigned char UCHAR
Definition: typedefs.h:53
uint32_t UINT32
Definition: typedefs.h:59
uint32_t ULONG
Definition: typedefs.h:59
ULONG dummy
Definition: ketypes.h:67
#define FORCEINLINE
Definition: wdftypes.h:67