ReactOS 0.4.16-dev-1946-g52006dd
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 0xfffff80000000000ULL
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{
171
172//
173// Processor Control Region
174// Based on WoA
175//
176typedef struct _KIPCR
177{
178 union
179 {
180 struct
181 {
182 ULONG TibPad0[2];
184 struct _KPCR *Self;
188 };
189 };
197 struct
198 {
201 };
204 struct
205 {
211 };
217
218 /* Private members, not in ntddk.h */
219 PVOID Idt[256];
220 PVOID* IdtExt;
222 KPRCB Prcb;
224
225//
226// Special Registers Structure (outside of CONTEXT)
227// Based on WoA symbols
228//
229typedef struct _KSPECIAL_REGISTERS
230{
237 ULONG KernelBcr[8];
239 ULONG KernelWcr[2];
241
242//
243// ARM64 Architecture State
244// Based on WoA symbols
245//
246typedef struct _KARM64_ARCH_STATE
247{
268
269typedef struct _KPROCESSOR_STATE
270{
273 CONTEXT ContextFrame; // 800
275
276//
277// Macro to get current KPRCB
278//
280struct _KPRCB *
282{
283 //UNIMPLEMENTED;
284 return 0;
285}
286
287//
288// Just read it from the PCR
289//
290#define KeGetCurrentIrql() KeGetPcr()->CurrentIrql
291#define _KeGetCurrentThread() KeGetCurrentPrcb()->CurrentThread
292#define _KeGetPreviousMode() KeGetCurrentPrcb()->CurrentThread->PreviousMode
293#define _KeIsExecutingDpc() (KeGetCurrentPrcb()->DpcRoutineActive != 0)
294#define KeGetCurrentThread() _KeGetCurrentThread()
295#define KeGetPreviousMode() _KeGetPreviousMode()
296
297#endif // !NTOS_MODE_USER
298
299#ifdef __cplusplus
300}; // extern "C"
301#endif
302
303#endif // !_ARM64_KETYPES_H
unsigned int UINT32
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:1187
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
unsigned short USHORT
Definition: pedump.c:61
ULONG64 Pmuserenr_El0
Definition: ketypes.h:264
ULONG64 Pmxevcntr_El0[31]
Definition: ketypes.h:260
ULONG64 Pmselr_El0
Definition: ketypes.h:263
ULONG64 Esr_El1
Definition: ketypes.h:255
ULONG64 Ttbr1_El1
Definition: ketypes.h:254
ULONG64 Mair_El1
Definition: ketypes.h:265
ULONG64 Pmovsclr_El0
Definition: ketypes.h:262
ULONG64 Ttbr0_El1
Definition: ketypes.h:253
ULONG64 Midr_El1
Definition: ketypes.h:248
ULONG64 Actlr_El1
Definition: ketypes.h:250
ULONG64 Pmcr_El0
Definition: ketypes.h:257
ULONG64 Vbar_El1
Definition: ketypes.h:266
ULONG64 Cpacr_El1
Definition: ketypes.h:251
ULONG64 Sctlr_El1
Definition: ketypes.h:249
ULONG64 Pmccntr_El0
Definition: ketypes.h:259
ULONG64 Pmxevtyper_El0[31]
Definition: ketypes.h:261
ULONG64 Tcr_El1
Definition: ketypes.h:252
ULONG64 Far_El1
Definition: ketypes.h:256
ULONG64 Pmcntenset_El0
Definition: ketypes.h:258
UCHAR SsbMitigationKernel
Definition: ketypes.h:208
KPRCB Prcb
Definition: ketypes.h:993
UCHAR Pad1[2]
Definition: ketypes.h:192
USHORT MinorVersion
Definition: ketypes.h:981
ULONG TibPad0[2]
Definition: ketypes.h:1055
USHORT InterruptPad
Definition: ketypes.h:1081
ULONG SecondLevelCacheSize
Definition: ketypes.h:985
UCHAR SsbMitigationDynamic
Definition: ketypes.h:207
UCHAR SsbMitigationFirmware
Definition: ketypes.h:206
USHORT MajorVersion
Definition: ketypes.h:980
UCHAR SecondLevelCacheAssociativity
Definition: ketypes.h:976
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 DispatchInterrupt
Definition: ketypes.h:1078
UCHAR BtiMitigation
Definition: ketypes.h:203
ULONG64 PanicStorage[6]
Definition: ketypes.h:213
UCHAR SsbMitigationUser
Definition: ketypes.h:209
ULONG HalReserved[16]
Definition: ketypes.h:986
PKSPIN_LOCK_QUEUE LockArray
Definition: ketypes.h:969
UCHAR Pad2[2]
Definition: ketypes.h:212
UCHAR ApcInterrupt
Definition: ketypes.h:1077
PVOID PcrAlign[15]
Definition: ketypes.h:221
UCHAR SsbMitigationReserved
Definition: ketypes.h:210
struct _KPCR * Self
Definition: ketypes.h:967
ULONG StallScaleFactor
Definition: ketypes.h:982
PVOID KdVersionBlock
Definition: ketypes.h:989
PVOID Used_Self
Definition: ketypes.h:970
PVOID KvaUserModeTtbr1
Definition: ketypes.h:216
PVOID PcrReserved0
Definition: ketypes.h:185
Definition: ke.h:294
ULONG dummy
Definition: ketypes.h:169
KSPECIAL_REGISTERS SpecialRegisters
Definition: ketypes.h:629
KARM64_ARCH_STATE ArchState
Definition: ketypes.h:272
CONTEXT ContextFrame
Definition: ketypes.h:630
ULONG KernelWcr[1]
Definition: ketypes.h:628
ULONG64 Tpidr_El0
Definition: ketypes.h:233
ULONG64 Tpidr_El1
Definition: ketypes.h:235
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:234
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:412
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:413
ULONG64 X17
Definition: ketypes.h:123
ULONG64 X0
Definition: ketypes.h:106
UCHAR ExceptionActive
Definition: ketypes.h:415
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
uint32_t ULONG
Definition: typedefs.h:59
ULONG dummy
Definition: ketypes.h:67
#define FORCEINLINE
Definition: wdftypes.h:67
unsigned char UCHAR
Definition: xmlstorage.h:181
char CHAR
Definition: xmlstorage.h:175