100 DPRINT1(
"Swapping from: %p (%16s) to %p (%16s)\n",
101 OldProcess, ((
PEPROCESS)OldProcess)->ImageFileName,
102 NewProcess, ((
PEPROCESS)NewProcess)->ImageFileName);
107 TtbRegister.
AsUlong = NewProcess->DirectoryTableBase[0];
145 DPRINT1(
"WMI Tracing not supported\n");
152 OldProcess = OldThread->ApcState.Process;
153 NewProcess = NewThread->ApcState.Process;
154 if (OldProcess != NewProcess)
165 DPRINT1(
"Address space switch not implemented\n");
173 NewThread->ContextSwitches++;
174 #if 0 // I don't buy this 205 if (NewThread->ApcState.KernelApcPending)
210 if (NewThread->SpecialApcDisable == 0)
357 ULONG InterruptCause;
360 ASSERT(TrapFrame->Reserved == 0xBADB0D00);
372 TrapFrame->PreviousIrql =
OldIrql;
440 ASSERT(TrapFrame->Reserved == 0xBADB0D00);
442 ULONG DebugType, Parameter0;
445 DPRINT1(
"[PREFETCH ABORT] (%x) @ %p/%p/%p\n",
455 if (Instruction & 0xE1200070)
460 DebugType = Instruction & 0xF;
466 Parameter0 = TrapFrame->R0;
467 TrapFrame->Pc +=
sizeof(
ULONG);
481 ExceptionRecord.ExceptionFlags = 0;
482 ExceptionRecord.ExceptionRecord =
NULL;
483 ExceptionRecord.ExceptionAddress = (
PVOID)TrapFrame->Pc;
484 ExceptionRecord.NumberParameters = 3;
489 ExceptionRecord.ExceptionInformation[0] = Parameter0;
490 ExceptionRecord.ExceptionInformation[1] = TrapFrame->R1;
491 ExceptionRecord.ExceptionInformation[2] = TrapFrame->R2;
521 ASSERT(TrapFrame->Reserved == 0xBADB0D00);
523 DPRINT1(
"[ABORT] (%x) @ %p/%p/%p\n",
553 ASSERT(TrapFrame->Reserved == 0xBADB0D00);
555 DPRINT1(
"[SWI] @ %p/%p\n", TrapFrame->Lr, TrapFrame->Pc);
577 Thread->TrapFrame = TrapFrame;
583 Instruction = *(
PULONG)(TrapFrame->Pc -
sizeof(
ULONG));
594 ASSERT(TrapFrame->Reserved == 0xBADB0D00);
599 DPRINT1(
"[UNDEF] @ %p/%p\n", TrapFrame->Lr, TrapFrame->Pc);
ULONG HalGetInterruptSource(VOID)
#define KeGetCurrentIrql()
#define KeLowerIrql(oldIrql)
ULONG_PTR DirectoryTableBase
NTSTATUS NTAPI MmAccessFault(IN ULONG FaultCode, IN PVOID Address, IN KPROCESSOR_MODE Mode, IN PVOID TrapInformation)
void __cdecl _enable(void)
VOID NTAPI KiQuantumEnd(VOID)
FORCEINLINE ULONG KeArmFaultStatusRegisterGet(VOID)
NTSTATUS KiUndefinedExceptionHandler(IN PKTRAP_FRAME TrapFrame)
void __cdecl __debugbreak(void)
struct _KTHREAD * NextThread
FORCEINLINE VOID KeArmWaitForInterrupt(VOID)
BOOLEAN FASTCALL KiSwapContext(IN KIRQL WaitIrql, IN PKTHREAD CurrentThread)
FORCEINLINE VOID KxQueueReadyThread(IN PKTHREAD Thread, IN PKPRCB Prcb)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
VOID NTAPI KiDispatchException(PEXCEPTION_RECORD ExceptionRecord, PKEXCEPTION_FRAME ExceptionFrame, PKTRAP_FRAME Tf, KPROCESSOR_MODE PreviousMode, BOOLEAN SearchFrames)
VOID KiSystemService(IN PKTHREAD Thread, IN PKTRAP_FRAME TrapFrame, IN ULONG Instruction)
VOID KiSoftwareInterruptHandler(IN PKTRAP_FRAME TrapFrame)
struct _KTHREAD * CurrentThread
#define STATUS_BREAKPOINT
FORCEINLINE ULONG KeArmFaultAddressRegisterGet(VOID)
_Reserved_ PVOID Reserved
KIRQL FASTCALL KfRaiseIrql(IN KIRQL NewIrql)
_In_ KPROCESSOR_MODE PreviousMode
NTSTATUS KiPrefetchAbortHandler(IN PKTRAP_FRAME TrapFrame)
VOID KiInterruptHandler(IN PKTRAP_FRAME TrapFrame, IN ULONG Reserved)
#define NT_SUCCESS(StatCode)
VOID NTAPI KiSwapProcess(IN PKPROCESS NewProcess, IN PKPROCESS OldProcess)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
VOID KiApcInterrupt(VOID)
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
struct _SINGLE_LIST_ENTRY * Next
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
VOID NTAPI KiDispatchInterrupt(VOID)
VOID FASTCALL KiIdleLoop(VOID)
SINGLE_LIST_ENTRY DeferredReadyListHead
VOID FASTCALL HalRequestSoftwareInterrupt(IN KIRQL Irql)
volatile ULONG DpcQueueDepth
FORCEINLINE ULONG KeArmInstructionFaultStatusRegisterGet(VOID)
#define KiGetPreviousMode(tf)
PVOID PerfGlobalGroupMask
VOID FASTCALL HalClearSoftwareInterrupt(IN KIRQL Irql)
void __cdecl _disable(void)
struct _KTHREAD * CurrentThread
#define KeGetCurrentThread
NTSTATUS KiDataAbortHandler(IN PKTRAP_FRAME TrapFrame)
VOID NTAPI KiDeliverApc(IN KPROCESSOR_MODE DeliveryMode, IN PKEXCEPTION_FRAME ExceptionFrame, IN PKTRAP_FRAME TrapFrame)
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
VOID FASTCALL KiRetireDpcList(IN PKPRCB Prcb)
FORCEINLINE VOID KeArmTranslationTableRegisterSet(IN ARM_TTB_REGISTER Ttb)