X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86_64%2Ferrors.c;h=9ddc950b1d89d033f69ec3ff8c683fa06504561e;hb=a59083b859599aeee6ab3e4fd6a0113faa5fddf5;hp=711846c81ecb8ce2cca237b5cc97bf49acea4520;hpb=273ede03312a1b5c537d250403ff11065106e186;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86_64/errors.c b/Kernel/arch/x86_64/errors.c index 711846c8..9ddc950b 100644 --- a/Kernel/arch/x86_64/errors.c +++ b/Kernel/arch/x86_64/errors.c @@ -39,6 +39,8 @@ void Error_Handler(tRegs *Regs) } Debug_KernelPanic(); + + Error_Backtrace(Regs->RIP, Regs->RBP); Log("CPU Error %x, Code: 0x%x", Regs->IntNum, Regs->ErrorCode); // Log(" - %s", csaERROR_NAMES[Regs->IntNum]); @@ -98,8 +100,7 @@ void Error_Backtrace(Uint IP, Uint BP) // return; //} - if( IP > MM_USER_MAX - && IP < MM_KERNEL_CODE + if( IP > MM_USER_MAX && IP < MM_KERNEL_CODE && (MM_MODULE_MIN > IP || IP > MM_MODULE_MAX) ) { @@ -119,7 +120,7 @@ void Error_Backtrace(Uint IP, Uint BP) } - while( MM_GetPhysAddr(BP) && i < MAX_BACKTRACE ) + while( MM_GetPhysAddr(BP) && MM_GetPhysAddr(BP+8+7) && i < MAX_BACKTRACE ) { //str = Debug_GetSymbol(*(Uint*)(ebp+4), &delta); //if(str == NULL)