summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--dev/ZKA/HALKit/AMD64/HalProcessor.cxx2
-rw-r--r--dev/ZKA/NewKit/KernelCheck.hxx1
-rw-r--r--dev/ZKA/Sources/KernelCheck.cxx4
-rw-r--r--dev/ZKA/Sources/UserProcessScheduler.cxx4
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)
{