mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
[NTOS:KD64] kdx64.c: Implement KdpAllowDisable() the same as in x86 (#7538)
AMD64 has the same DR7 register as x86 with the same bits meanings, thus the same implementation can be used. References: - https://en.wikipedia.org/wiki/X86_debug_register#DR7_-_Debug_control - AMD64 Architecture Programmer’s Manual, Volume 2: System Programming https://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/programmer-references/24593.pdf Section "13.1.1.4 Debug-Control Register (DR7)" pgs. 393-396 (pgs. 455-458 of the PDF) - Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3 (3A, 3B, 3C, & 3D): System Programming Guide https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html Section "19.2.4 Debug Control Register (DR7)" (pgs. 644-646) Section "19.2.6 Debug Registers and Intel® 64 Processors" (pg. 647)
This commit is contained in:
parent
61feb649d1
commit
2995806a44
1 changed files with 15 additions and 2 deletions
|
@ -363,8 +363,21 @@ NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
KdpAllowDisable(VOID)
|
KdpAllowDisable(VOID)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
ULONG i;
|
||||||
return STATUS_ACCESS_DENIED;
|
|
||||||
|
/* Loop every processor */
|
||||||
|
for (i = 0; i < KeNumberProcessors; i++)
|
||||||
|
{
|
||||||
|
PKPROCESSOR_STATE ProcessorState = &KiProcessorBlock[i]->ProcessorState;
|
||||||
|
|
||||||
|
/* If any processor breakpoints are active,
|
||||||
|
* we can't allow running without a debugger */
|
||||||
|
if (ProcessorState->SpecialRegisters.KernelDr7 & 0xFF)
|
||||||
|
return STATUS_ACCESS_DENIED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* No processor breakpoints, allow disabling the debugger */
|
||||||
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
Loading…
Reference in a new issue