diff --git a/src/clear_register.s b/src/clear_register.s new file mode 100644 index 0000000..6e400f8 --- /dev/null +++ b/src/clear_register.s @@ -0,0 +1,14 @@ +.intel_syntax noprefix + +.section .text + .global clear_registers + +clear_registers: + xor eax, eax + xor ebx, ebx + xor ecx, ecx + xor edx, edx + xor esp, esp + xor ebp, ebp + xor esi, esi + xor edi, edi diff --git a/src/kpanic.c b/src/kpanic.c index 930d6a7..05b457a 100644 --- a/src/kpanic.c +++ b/src/kpanic.c @@ -9,6 +9,7 @@ extern uint32_t page_table1[1024]; extern const char *faults[]; +void clear_registers(void); __attribute__((noreturn)) void kpanic(const char *format, ...) { @@ -30,6 +31,7 @@ __attribute__((noreturn)) void kpanic(const char *format, ...) /* print_stack(); */ /* kprintf("\n\n"); */ /* kprintf("PRESS SPACE TO REBOOT"); */ + clear_registers(); while (terminal_getkey().scan_code != KEY_SPACE) ; reboot();