From 0534c6e4a656d79990d81cccf402d126262bbc3b Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 28 Jan 2009 23:34:04 +0000 Subject: [PATCH] KD64: implement case 0 for KdpReadControlSpace, which returns a pointer to the Pcr. svn path=/branches/ros-amd64-bringup/; revision=39191 --- reactos/ntoskrnl/kd64/kdapi.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/reactos/ntoskrnl/kd64/kdapi.c b/reactos/ntoskrnl/kd64/kdapi.c index ce0080af69b..e5b3f106e11 100644 --- a/reactos/ntoskrnl/kd64/kdapi.c +++ b/reactos/ntoskrnl/kd64/kdapi.c @@ -319,16 +319,26 @@ KdpReadControlSpace(IN PDBGKD_MANIPULATE_STATE64 State, #if defined (_M_AMD64) if ((ULONG)ReadMemory->TargetBaseAddress <= 2) { + PKPRCB Prcb = KiProcessorBlock[State->Processor]; + PKIPCR Pcr = CONTAINING_RECORD(Prcb, KIPCR, Prcb); + switch ((ULONG_PTR)ReadMemory->TargetBaseAddress) { + case 0: + /* Copy a pointer to the Pcr */ + ControlStart = &Pcr; + RealLength = sizeof(PVOID); + break; + case 1: - ControlStart = &KiProcessorBlock[State->Processor]; + /* Copy a pointer to the Prcb */ + ControlStart = &Prcb; RealLength = sizeof(PVOID); break; case 2: - ControlStart = &KiProcessorBlock[State->Processor]-> - ProcessorState.SpecialRegisters; + /* Copy SpecialRegisters */ + ControlStart = &Prcb->ProcessorState.SpecialRegisters; RealLength = sizeof(KSPECIAL_REGISTERS); break;