Pārlūkot izejas kodu

Kernel: Interpret "reserved bit violation" page faults correctly

We don't actually react to these in any meaningful way other than
crashing, but let's at least print the correct information. :^)
Andreas Kling 5 gadi atpakaļ
vecāks
revīzija
c22a4301ed
2 mainītis faili ar 4 papildinājumiem un 2 dzēšanām
  1. 2 1
      Kernel/Arch/i386/CPU.cpp
  2. 2 1
      Kernel/Arch/i386/CPU.h

+ 2 - 1
Kernel/Arch/i386/CPU.cpp

@@ -279,10 +279,11 @@ void page_fault_handler(RegisterDump regs)
             return;
         }
 
-        kprintf("\033[31;1m%s(%u:%u) Unrecoverable page fault, %s%s address %p\033[0m\n",
+        kprintf("\033[31;1m%s(%u:%u) Unrecoverable page fault, %s%s%s address %p\033[0m\n",
             current->process().name().characters(),
             current->pid(),
             current->tid(),
+                regs.exception_code & PageFaultFlags::ReservedBitViolation ? "reserved bit violation / " : "",
             regs.exception_code & PageFaultFlags::InstructionFetch ? "instruction fetch / " : "",
             regs.exception_code & PageFaultFlags::Write ? "write to" : "read from",
             fault_address);

+ 2 - 1
Kernel/Arch/i386/CPU.h

@@ -348,7 +348,8 @@ struct PageFaultFlags {
         Write = 0x02,
         UserMode = 0x04,
         SupervisorMode = 0x00,
-        InstructionFetch = 0x08,
+        ReservedBitViolation = 0x08,
+        InstructionFetch = 0x10,
     };
 };