X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Farch%2Fx86_64%2Ferrors.c;h=81d6466ba10f2b52e565592414f06de92c246e11;hb=13078002b01ee4f63eb2001d2ef479a2a006ea32;hp=fda3113941bd816a6f1cf5a31f6df53784ea8966;hpb=04a050f42807686dc119838c82372409246d55bb;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/arch/x86_64/errors.c b/KernelLand/Kernel/arch/x86_64/errors.c index fda31139..81d6466b 100644 --- a/KernelLand/Kernel/arch/x86_64/errors.c +++ b/KernelLand/Kernel/arch/x86_64/errors.c @@ -6,6 +6,7 @@ #include #include #include // Needed for SSE handling +#include #define MAX_BACKTRACE 6 @@ -13,7 +14,6 @@ extern int MM_PageFault(tVAddr Addr, Uint ErrorCode, tRegs *Regs); extern void Error_Backtrace(Uint IP, Uint BP); extern void Proc_EnableSSE(void); -extern void Threads_Dump(void); extern void Proc_RestoreSSE(Uint32 Data); // === PROTOTYPES === @@ -109,6 +109,13 @@ void Error_Handler(tRegs *Regs) __asm__ __volatile__ ("hlt"); } +void Proc_PrintBacktrace(void) +{ + Uint64 *rbp; + __asm__ __volatile__ ("mov %%rbp, %0" : "=r" (rbp)); + Error_Backtrace( rbp[1], rbp[0] ); +} + /** * \fn void Error_Backtrace(Uint eip, Uint ebp) * \brief Unrolls the stack to trace execution