2021-12-13 13:43:56 +00:00
|
|
|
$if (_WDMDDK_)
|
|
|
|
/** Kernel definitions for ARM64 **/
|
|
|
|
|
|
|
|
/* Interrupt request levels */
|
|
|
|
#define PASSIVE_LEVEL 0
|
|
|
|
#define LOW_LEVEL 0
|
|
|
|
#define APC_LEVEL 1
|
|
|
|
#define DISPATCH_LEVEL 2
|
|
|
|
#define CLOCK_LEVEL 13
|
|
|
|
#define IPI_LEVEL 14
|
|
|
|
#define DRS_LEVEL 14
|
|
|
|
#define POWER_LEVEL 14
|
|
|
|
#define PROFILE_LEVEL 15
|
|
|
|
#define HIGH_LEVEL 15
|
|
|
|
|
2022-05-25 14:06:32 +00:00
|
|
|
#define SharedUserData ((KUSER_SHARED_DATA * const)KI_USER_SHARED_DATA)
|
|
|
|
|
|
|
|
#define PAGE_SIZE 0x1000
|
|
|
|
#define PAGE_SHIFT 12L
|
|
|
|
|
|
|
|
#define PAUSE_PROCESSOR YieldProcessor();
|
|
|
|
|
|
|
|
/* FIXME: Based on AMD64 but needed to compile apps */
|
|
|
|
#define KERNEL_STACK_SIZE 12288
|
|
|
|
#define KERNEL_LARGE_STACK_SIZE 61440
|
|
|
|
#define KERNEL_LARGE_STACK_COMMIT KERNEL_STACK_SIZE
|
|
|
|
/* FIXME End */
|
|
|
|
|
|
|
|
#define EXCEPTION_READ_FAULT 0
|
|
|
|
#define EXCEPTION_WRITE_FAULT 1
|
|
|
|
#define EXCEPTION_EXECUTE_FAULT 8
|
|
|
|
|
2021-12-13 13:43:56 +00:00
|
|
|
NTSYSAPI
|
|
|
|
PKTHREAD
|
|
|
|
NTAPI
|
|
|
|
KeGetCurrentThread(VOID);
|
|
|
|
|
|
|
|
#define DbgRaiseAssertionFailure() __break(0xf001)
|
|
|
|
|
|
|
|
$endif (_WDMDDK_)
|
|
|
|
$if (_NTDDK_)
|
|
|
|
|
|
|
|
#define ARM64_MAX_BREAKPOINTS 8
|
|
|
|
#define ARM64_MAX_WATCHPOINTS 2
|
|
|
|
|
|
|
|
typedef union NEON128 {
|
|
|
|
struct {
|
|
|
|
ULONGLONG Low;
|
|
|
|
LONGLONG High;
|
|
|
|
} DUMMYSTRUCTNAME;
|
|
|
|
double D[2];
|
|
|
|
float S[4];
|
|
|
|
USHORT H[8];
|
|
|
|
UCHAR B[16];
|
|
|
|
} NEON128, *PNEON128;
|
|
|
|
typedef NEON128 NEON128, *PNEON128;
|
|
|
|
|
|
|
|
typedef struct _CONTEXT {
|
|
|
|
|
|
|
|
//
|
|
|
|
// Control flags.
|
|
|
|
//
|
|
|
|
|
|
|
|
ULONG ContextFlags;
|
|
|
|
|
|
|
|
//
|
|
|
|
// Integer registers
|
|
|
|
//
|
|
|
|
|
|
|
|
ULONG Cpsr;
|
|
|
|
union {
|
|
|
|
struct {
|
|
|
|
ULONG64 X0;
|
|
|
|
ULONG64 X1;
|
|
|
|
ULONG64 X2;
|
|
|
|
ULONG64 X3;
|
|
|
|
ULONG64 X4;
|
|
|
|
ULONG64 X5;
|
|
|
|
ULONG64 X6;
|
|
|
|
ULONG64 X7;
|
|
|
|
ULONG64 X8;
|
|
|
|
ULONG64 X9;
|
|
|
|
ULONG64 X10;
|
|
|
|
ULONG64 X11;
|
|
|
|
ULONG64 X12;
|
|
|
|
ULONG64 X13;
|
|
|
|
ULONG64 X14;
|
|
|
|
ULONG64 X15;
|
|
|
|
ULONG64 X16;
|
|
|
|
ULONG64 X17;
|
|
|
|
ULONG64 X18;
|
|
|
|
ULONG64 X19;
|
|
|
|
ULONG64 X20;
|
|
|
|
ULONG64 X21;
|
|
|
|
ULONG64 X22;
|
|
|
|
ULONG64 X23;
|
|
|
|
ULONG64 X24;
|
|
|
|
ULONG64 X25;
|
|
|
|
ULONG64 X26;
|
|
|
|
ULONG64 X27;
|
|
|
|
ULONG64 X28;
|
|
|
|
ULONG64 Fp;
|
|
|
|
ULONG64 Lr;
|
|
|
|
} DUMMYSTRUCTNAME;
|
|
|
|
ULONG64 X[31];
|
|
|
|
} DUMMYUNIONNAME;
|
|
|
|
|
|
|
|
ULONG64 Sp;
|
|
|
|
ULONG64 Pc;
|
|
|
|
|
|
|
|
//
|
|
|
|
// Floating Point/NEON Registers
|
|
|
|
//
|
|
|
|
|
|
|
|
NEON128 V[32];
|
|
|
|
ULONG Fpcr;
|
|
|
|
ULONG Fpsr;
|
|
|
|
|
|
|
|
//
|
|
|
|
// Debug registers
|
|
|
|
//
|
|
|
|
|
|
|
|
ULONG Bcr[ARM64_MAX_BREAKPOINTS];
|
|
|
|
ULONG64 Bvr[ARM64_MAX_BREAKPOINTS];
|
|
|
|
ULONG Wcr[ARM64_MAX_WATCHPOINTS];
|
|
|
|
ULONG64 Wvr[ARM64_MAX_WATCHPOINTS];
|
|
|
|
|
|
|
|
} CONTEXT, *PCONTEXT;
|
|
|
|
$endif
|