- Stub out DbgKdWriteVirtualMemoryApi, DbgKdReadPhysicalMemoryApi, DbgKdWritePhysical...
authorStefan Ginsberg <stefanginsberg@gmail.com>
Sun, 11 Oct 2009 20:16:45 +0000 (20:16 +0000)
committerStefan Ginsberg <stefanginsberg@gmail.com>
Sun, 11 Oct 2009 20:16:45 +0000 (20:16 +0000)
commit31c45b85d72c1c54b83c9fbfd885f9e005c73700
tree87bdb9522f9f66d363815d311d99cd1e5f6bff41
parentd00f6c4b5cadcc176c28b01f922a5be3af8ab880
- Stub out DbgKdWriteVirtualMemoryApi, DbgKdReadPhysicalMemoryApi, DbgKdWritePhysicalMemoryApi, DbgKdWriteBreakPointExApi, DbgKdRestoreBreakPointExApi, DbgKdSearchMemoryApi and DbgKdFillMemoryApi cases more properly.
- Fail on physical memory write like we do for read too.
- Don't handle OldVlm1/2 as they appear to be deprecated and unhandled in Windows.
- Implement HalHaltSystem to halt execution in a portable way. Default to xHalHaltSystem, a simple infinite loop, if we get called before HAL has initialized. Use this in KiBugCheckDebugBreak and the system shutdown handler instead of x86/AMD64/ARM intrinsics.
- Don't try to halt the CPU if KeBugCheck has been called 3 times or more -- if this happens, something has gone very wrong, and we shouldn't try to do anything special. Just loop infinitely.
- Fix KiBugCheckDebugBreak -- it shouldn't halt execution when called for the first chance as bugcheck callbacks have not been invoked at this point (nor has the BSOD been displayed). Use SEH to protect against a crash instead of checking KdDebuggerNotPresent as the debugger, if it is present, *could* disconnect while the trap is being handled. Also, don't halt execution if the debugger handled the breakpoint, just break again.
- Don't call MmMapIoSpace from HalpReboot! The reboot might take place at elevated IRQL (as high as HIGH_LEVEL if called from KeBugCheck), and thus can't use any Mm support routines. Use a PTE from the reserved HAL region and map it ourselves instead as done in the BIOS call code.
- Acquire the display ownership in HalReturnToFirmware in case the caller hasn't done so (as done in the KD reboot routine, for example).
- Just include ntndk.h in hal.h instead of including 6 NDK headers (which turns into more than half of the NDK anyway since those headers include other NDK headers).
- Crashing and rebooting from KD now works properly.

svn path=/trunk/; revision=43380
reactos/hal/halx86/generic/halinit.c
reactos/hal/halx86/generic/processor.c
reactos/hal/halx86/generic/reboot.c
reactos/hal/halx86/include/hal.h
reactos/hal/halx86/include/halp.h
reactos/ntoskrnl/ex/shutdown.c
reactos/ntoskrnl/fstub/halstub.c
reactos/ntoskrnl/include/internal/hal.h
reactos/ntoskrnl/kd64/kdapi.c
reactos/ntoskrnl/ke/bug.c