X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86%2Ferrors.c;h=15fe22b0002edc3336476b945382b1c73aba52f5;hb=30e2436921e53b149d65403430048e39a44cad4b;hp=3821281dc89b6d464f36762ac5b576f907c1ce8f;hpb=c575e49ea4543b45ccd2a47d57ec590ca995e707;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86/errors.c b/Kernel/arch/x86/errors.c index 3821281d..15fe22b0 100644 --- a/Kernel/arch/x86/errors.c +++ b/Kernel/arch/x86/errors.c @@ -20,6 +20,7 @@ extern void MM_DumpTables(tVAddr, tVAddr); // === PROTOTYPES === void __stack_chk_fail(void); void ErrorHandler(tRegs *Regs); +void Proc_PrintBacktrace(void); void Error_Backtrace(Uint eip, Uint ebp); void StartupPrint(char *Str); @@ -160,6 +161,14 @@ void ErrorHandler(tRegs *Regs) for(;;) __asm__ __volatile__ ("hlt"); } + +void Proc_PrintBacktrace(void) +{ + Uint32 ebp; + __asm__ __volatile__ ("mov %%ebp, %0" : "=r" (ebp)); + Error_Backtrace( *(Uint32*)(ebp+4), *(Uint32*)ebp ); +} + /** * \fn void Error_Backtrace(Uint eip, Uint ebp) * \brief Unrolls the stack to trace execution