Files
exectos/xtoskrnl/kd/i686/debug.cc
Aiken Harris cc23e459e0
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in 33s
Builds / ExectOS (i686, debug) (push) Successful in 31s
Builds / ExectOS (amd64, release) (push) Successful in 47s
Builds / ExectOS (i686, release) (push) Successful in 45s
Move SwitchProcessor to architecture-specific implementations
2026-06-07 22:53:00 +02:00

37 lines
1.1 KiB
C++

/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/kd/i686/debug.cc
* DESCRIPTION: Kernel Debugger
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
*/
#include <xtos.hh>
/**
* Transfers active control to a previously frozen processor.
*
* @return This routine returns a value indicating how execution should proceed after the debugging session concludes.
*
* @since XT 1.0
*/
XTAPI
KCONTINUE_STATUS
KD::Debugger::SwitchProcessor(VOID)
{
EXCEPTION_RECORD ExceptionRecord;
PKPROCESSOR_CONTROL_BLOCK Prcb;
/* Get processor control block */
Prcb = KE::Processor::GetCurrentProcessorControlBlock();
/* Construct an exception record */
ExceptionRecord.ExceptionAddress = (PVOID)&Prcb->ProcessorState.ContextFrame.Eip;
ExceptionRecord.ExceptionCode = STATUS_WAKE_SYSTEM_DEBUGGER;
ExceptionRecord.ExceptionRecord = &ExceptionRecord;
/* Pass the synthetic exception and the processor context to the debugger */
return (KCONTINUE_STATUS)ProcessCpuStateChange(&ExceptionRecord, &Prcb->ProcessorState.ContextFrame, FALSE);
}