X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Farch%2Fx86%2Ferrors.c;h=8dc90b0186499f8bb041ec87541811033f1cc837;hb=a3d5866d4aa87dd93db40e9e194fea6f2b0047a4;hp=f0f6e2b2b424b2fae13aef897abc3789257fc6c6;hpb=934d0f535e1929fd90ae0606e77794484aa55284;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/arch/x86/errors.c b/KernelLand/Kernel/arch/x86/errors.c index f0f6e2b2..8dc90b01 100644 --- a/KernelLand/Kernel/arch/x86/errors.c +++ b/KernelLand/Kernel/arch/x86/errors.c @@ -116,6 +116,8 @@ void ErrorHandler(tRegs *Regs) csaERROR_NAMES[Regs->int_num], Regs->err_code); Log_Warning("Arch", "at CS:EIP %04x:%08x", Regs->cs, Regs->eip); + Error_Backtrace(Regs->eip, Regs->ebp); + MM_DumpTables(0, KERNEL_BASE); switch( Regs->int_num ) { @@ -226,14 +228,14 @@ void Error_Backtrace(Uint eip, Uint ebp) LogF("Backtrace: 0x%x", eip); // else // LogF("Backtrace: %s+0x%x", str, delta); - if(!MM_GetPhysAddr(ebp)) + if(!MM_GetPhysAddr((void*)ebp)) { - LogF("\nBacktrace: Invalid EBP, stopping\n"); + LogF("\nBacktrace: Invalid EBP %p, stopping\n", ebp); return; } - while( MM_GetPhysAddr(ebp) && i < MAX_BACKTRACE ) + while( MM_GetPhysAddr((void*)ebp) && i < MAX_BACKTRACE ) { if( ebp >= MM_KERNEL_STACKS_END ) break; //str = Debug_GetSymbol(*(Uint*)(ebp+4), &delta); @@ -244,7 +246,7 @@ void Error_Backtrace(Uint eip, Uint ebp) ebp = *(Uint*)ebp; i++; } - LogF("\n"); + LogF("\r\n"); } /**