From 6ec4ba3dc92aa90a528e5bc256c9c97814b72a12 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sun, 22 Jan 2023 03:00:13 +0200 Subject: [PATCH] Kernel: Move dump_backtrace() out of arch. I discovered __builtin_frame_address() --- kernel/Makefile | 1 + kernel/arch/i386/make.config | 1 - kernel/{arch/i386 => kernel}/Panic.cpp | 5 ++--- 3 files changed, 3 insertions(+), 4 deletions(-) rename kernel/{arch/i386 => kernel}/Panic.cpp (78%) diff --git a/kernel/Makefile b/kernel/Makefile index 9729d28e..53841a3f 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -36,6 +36,7 @@ kernel/font.o \ kernel/Input.o \ kernel/kernel.o \ kernel/kmalloc.o \ +kernel/Panic.o \ kernel/PIC.o \ kernel/PIT.o \ kernel/RTC.o \ diff --git a/kernel/arch/i386/make.config b/kernel/arch/i386/make.config index c933cf40..dc1fb78a 100644 --- a/kernel/arch/i386/make.config +++ b/kernel/arch/i386/make.config @@ -9,6 +9,5 @@ $(ARCHDIR)/boot.o \ $(ARCHDIR)/CPUID.o \ $(ARCHDIR)/IDT.o \ $(ARCHDIR)/MMU.o \ -$(ARCHDIR)/Panic.o \ $(ARCHDIR)/VESA.o \ \ No newline at end of file diff --git a/kernel/arch/i386/Panic.cpp b/kernel/kernel/Panic.cpp similarity index 78% rename from kernel/arch/i386/Panic.cpp rename to kernel/kernel/Panic.cpp index 95968f31..3be0afed 100644 --- a/kernel/arch/i386/Panic.cpp +++ b/kernel/kernel/Panic.cpp @@ -8,11 +8,10 @@ namespace Kernel struct stackframe { stackframe* ebp; - uint32_t eip; + uint64_t eip; }; - stackframe* frame; - asm volatile("movl %%ebp, %0" : "=r"(frame)); + stackframe* frame = (stackframe*)__builtin_frame_address(0); BAN::Formatter::print(Serial::serial_putc, "\e[36mStack trace:\r\n"); while (frame) {