21#define KD_BREAKPOINT_TYPE ULONG
22#define KD_BREAKPOINT_SIZE sizeof(ULONG)
23#define KD_BREAKPOINT_VALUE 0xD43E0000
26#define ESR_EC_SHIFT 26
27#define ESR_EC_UNKNOWN 0x00
28#define ESR_EC_WFX 0x01
29#define ESR_EC_FP_ACCESS 0x07
30#define ESR_EC_ILLEGAL_STATE 0x0E
31#define ESR_EC_SVC64 0x15
32#define ESR_EC_SYS64 0x18
33#define ESR_EC_SVE 0x19
34#define ESR_EC_IABT_LOWER 0x20
35#define ESR_EC_IABT_CURRENT 0x21
36#define ESR_EC_PC_ALIGN 0x22
37#define ESR_EC_DABT_LOWER 0x24
38#define ESR_EC_DABT_CURRENT 0x25
39#define ESR_EC_SP_ALIGN 0x26
40#define ESR_EC_FP_EXCEPTION 0x2C
41#define ESR_EC_SERROR 0x2F
42#define ESR_EC_BREAKPOINT_LOWER 0x30
43#define ESR_EC_BREAKPOINT_CURRENT 0x31
44#define ESR_EC_STEP_LOWER 0x32
45#define ESR_EC_STEP_CURRENT 0x33
46#define ESR_EC_WATCHPOINT_LOWER 0x34
47#define ESR_EC_WATCHPOINT_CURRENT 0x35
48#define ESR_EC_BRK64 0x3C
51#define ESR_ISS_WNR 0x40
52#define ESR_ISS_FSC_MASK 0x3F
55#define KI_TRAP_SYNCHRONOUS 0
58#define KI_TRAP_SERROR 3
127 return TrapFrame->Pc;
143 return TrapFrame->Sp;
151 return TrapFrame->Fp;
158 return (
ULONG64)_ReadStatusReg(ARM64_CNTVCT);
164#define KeGetTrapFrame(Thread) \
165 ((PKTRAP_FRAME)((ULONG_PTR)((Thread)->InitialStack) - \
166 sizeof(KTRAP_FRAME)))
168#define KeGetExceptionFrame(Thread) \
169 (PKEXCEPTION_FRAME)((ULONG_PTR)KeGetTrapFrame(Thread) - \
170 sizeof(KEXCEPTION_FRAME))
176#define KeGetContextSwitches(Prcb) \
177 ((Prcb)->KeContextSwitches)
183#define KiGetSecondLevelDCacheSize() ((PKIPCR)KeGetPcr())->SecondLevelCacheSize
189#define KeGetTrapFrameInterruptState(TrapFrame) \
190 (((TrapFrame)->Spsr & ARM64_PSR_I) == 0)
254#define KiGetPreviousMode(TrapFrame) \
255 (KiUserTrap(TrapFrame) ? UserMode : KernelMode)
301#define KeArchInitThreadWithContext(Thread,SystemRoutine,StartRoutine,StartContext,Context) \
302 KeArm64InitThreadWithContext(Thread,SystemRoutine,StartRoutine,StartContext,Context)
UINT32 void void ** ReturnValue
VOID NTAPI KeArm64FlushTbEntry(_In_ PVOID Address)
VOID NTAPI KeArm64SweepIcacheRange(_In_ PVOID BaseAddress, _In_ SIZE_T Length)
VOID NTAPI KeArm64FlushTbAll(VOID)
#define KeArm64ReadRegister(Register)
#define ARM64_PSR_MODE_EL0T
#define ARM64_PSR_MODE_MASK
#define DECLSPEC_NORETURN
#define PsGetCurrentThread()
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
VOID(NTAPI * PKSYSTEM_ROUTINE)(PKSTART_ROUTINE StartRoutine, PVOID StartContext)
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize _Pre_valid_ PVOID * BaseAddress
#define UNREFERENCED_PARAMETER(P)
VOID KiSetTrapContext(_Out_ PKTRAP_FRAME TrapFrame, _In_ PCONTEXT Context, _In_ KPROCESSOR_MODE RequestorMode)
DECLSPEC_NORETURN VOID KiUserCallbackExit(_In_ PKTRAP_FRAME TrapFrame)
FORCEINLINE ULONG_PTR KeGetTrapFrameFrameRegister(PKTRAP_FRAME TrapFrame)
DECLSPEC_NORETURN VOID KiSwitchToBootStack(IN ULONG_PTR InitialStack)
FORCEINLINE ULONG_PTR KeGetContextFrameRegister(PCONTEXT Context)
FORCEINLINE VOID KeInvalidateTlbEntry(IN PVOID Address)
FORCEINLINE VOID KeFlushProcessTb(VOID)
FORCEINLINE VOID KeSetContextFrameRegister(PCONTEXT Context, ULONG_PTR Frame)
DECLSPEC_NORETURN VOID KiExceptionExit(_In_ PKTRAP_FRAME TrapFrame, _In_ PKEXCEPTION_FRAME ExceptionFrame)
FORCEINLINE ULONG64 KxQueryProcessorCycleTime(VOID)
FORCEINLINE ULONG_PTR KeGetTrapFrameStackRegister(PKTRAP_FRAME TrapFrame)
FORCEINLINE BOOLEAN KeDisableInterrupts(VOID)
ULONG64 KiGetFeatureBits(VOID)
Evaluates the KeFeatureFlag bits for the current CPU.
NTHALAPI NTSTATUS NTAPI HalAllocateAdapterChannel(IN PADAPTER_OBJECT AdapterObject, IN PWAIT_CONTEXT_BLOCK Wcb, IN ULONG NumberOfMapRegisters, IN PDRIVER_CONTROL ExecutionRoutine)
VOID KiGetTrapContext(_In_ PKTRAP_FRAME TrapFrame, _Out_ PCONTEXT Context)
FORCEINLINE VOID KeRestoreInterrupts(BOOLEAN WereEnabled)
VOID KiSetProcessorType(VOID)
FORCEINLINE VOID KiRundownThread(IN PKTHREAD Thread)
NTKERNELAPI volatile KSYSTEM_TIME KeTickCount
FORCEINLINE BOOLEAN KiUserTrap(IN PKTRAP_FRAME TrapFrame)
FORCEINLINE VOID KeSweepICache(IN PVOID BaseAddress, IN SIZE_T FlushSize)
FORCEINLINE PULONG_PTR KiGetUserModeStackAddress(void)
FORCEINLINE ULONG_PTR KeGetContextStackRegister(PCONTEXT Context)
VOID KiArm64InitializeTraps(VOID)
VOID KeArm64InitThreadWithContext(_In_ PKTHREAD Thread, _In_ PKSYSTEM_ROUTINE SystemRoutine, _In_ PKSTART_ROUTINE StartRoutine, _In_ PVOID StartContext, _In_opt_ PCONTEXT Context)
#define KeSetContextReturnRegister(Context, ReturnValue)
#define KiGetLinkedTrapFrame(x)
#define KeSetContextPc(Context, ProgramCounter)
#define KeGetContextPc(Context)
#define KeGetContextReturnRegister(Context)
#define KeGetTrapFramePc(TrapFrame)
#define KiEndInterrupt(x, y)
VOID NTAPI KiThreadStartup(VOID)
void __cdecl _disable(void)
void __cdecl _enable(void)
_Out_ PULONG NumberOfMapRegisters
_In_ PDEVICE_OBJECT _In_ ULONG _In_ PDRIVER_CONTROL ExecutionRoutine
DRIVER_CONTROL * PDRIVER_CONTROL
KSTART_ROUTINE * PKSTART_ROUTINE
_In_ ULONG _In_opt_ POBJECT_ATTRIBUTES _In_opt_ HANDLE _Out_opt_ PCLIENT_ID _In_ PKSTART_ROUTINE StartRoutine