diff options
| author | Amlal <amlal@el-mahrouss-logic.com> | 2024-09-07 09:23:23 +0200 |
|---|---|---|
| committer | Amlal <amlal@el-mahrouss-logic.com> | 2024-09-07 09:23:23 +0200 |
| commit | 4cceb09f45b5bd8efa15927fb9a33d0347369709 (patch) | |
| tree | 55344ecf9c03f19de51ea9ecdb24fe40de197024 | |
| parent | 1003d7a20bab6885b4edde7d11103a199de30d21 (diff) | |
[ IMP ] Found issue, address of HangCPU isn't in paged area, so it doesn't really work well.
Signed-off-by: Amlal <amlal@el-mahrouss-logic.com>
| -rw-r--r-- | dev/ZKA/HALKit/AMD64/HalProcessor.cxx | 2 | ||||
| -rw-r--r-- | dev/ZKA/NewKit/KernelCheck.hxx | 1 | ||||
| -rw-r--r-- | dev/ZKA/Sources/KernelCheck.cxx | 4 | ||||
| -rw-r--r-- | dev/ZKA/Sources/UserProcessScheduler.cxx | 4 |
4 files changed, 8 insertions, 3 deletions
diff --git a/dev/ZKA/HALKit/AMD64/HalProcessor.cxx b/dev/ZKA/HALKit/AMD64/HalProcessor.cxx index dd9afd47..b80e7618 100644 --- a/dev/ZKA/HALKit/AMD64/HalProcessor.cxx +++ b/dev/ZKA/HALKit/AMD64/HalProcessor.cxx @@ -34,7 +34,7 @@ namespace Kernel::HAL if ((*pd_entry & 0x01) == 0) { - *pd_entry |= 0x01; + ke_stop(RUNTIME_CHECK_PAGE); } UInt64 pt_base = *pd_entry & ~0xFFF; // Remove flags diff --git a/dev/ZKA/NewKit/KernelCheck.hxx b/dev/ZKA/NewKit/KernelCheck.hxx index 8797ff86..a9d1a452 100644 --- a/dev/ZKA/NewKit/KernelCheck.hxx +++ b/dev/ZKA/NewKit/KernelCheck.hxx @@ -44,6 +44,7 @@ enum RUNTIME_CHECK RUNTIME_CHECK_UNEXCPECTED, RUNTIME_CHECK_FILESYSTEM, RUNTIME_CHECK_VIRTUAL_OUT_OF_MEM, + RUNTIME_CHECK_PAGE, RUNTIME_CHECK_COUNT, }; diff --git a/dev/ZKA/Sources/KernelCheck.cxx b/dev/ZKA/Sources/KernelCheck.cxx index acc01dec..ff71950a 100644 --- a/dev/ZKA/Sources/KernelCheck.cxx +++ b/dev/ZKA/Sources/KernelCheck.cxx @@ -64,6 +64,10 @@ namespace Kernel RecoveryFactory::Recover(); break; } + case RUNTIME_CHECK_PAGE: { + CGDrawString("0x0000000B Write/Read in non paged area.", start_y, x, panicTxt); + RecoveryFactory::Recover(); + } case RUNTIME_CHECK_FILESYSTEM: { CGDrawString("0x0000000A Filesystem corruption error.", start_y, x, panicTxt); RecoveryFactory::Recover(); diff --git a/dev/ZKA/Sources/UserProcessScheduler.cxx b/dev/ZKA/Sources/UserProcessScheduler.cxx index a2541d57..eba81677 100644 --- a/dev/ZKA/Sources/UserProcessScheduler.cxx +++ b/dev/ZKA/Sources/UserProcessScheduler.cxx @@ -239,7 +239,7 @@ namespace Kernel process.MemoryPD = reinterpret_cast<UIntPtr>(hal_read_cr3()); #endif // __ZKA_AMD64__ - process.StackFrame = new HAL::StackFrame(0); + process.StackFrame = (HAL::StackFramePtr)mm_new_ke_heap(sizeof(HAL::StackFrame), Yes, Yes); if (!process.StackFrame) { @@ -264,7 +264,7 @@ namespace Kernel // get preferred stack size by app. const auto cMaxStackSize = process.StackSize; - process.StackReserve = new UInt8[cMaxStackSize]; + process.StackReserve = (UInt8*)mm_new_ke_heap(sizeof(UInt8) * cMaxStackSize, Yes, Yes); if (!process.StackReserve) { |
