git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
KernelLand - Better node chaching code
[tpg/acess2.git]
/
KernelLand
/
Kernel
/
arch
/
x86
/
errors.c
diff --git
a/KernelLand/Kernel/arch/x86/errors.c
b/KernelLand/Kernel/arch/x86/errors.c
index
d2d2cef
..
8dc90b0
100644
(file)
--- a/
KernelLand/Kernel/arch/x86/errors.c
+++ b/
KernelLand/Kernel/arch/x86/errors.c
@@
-80,7
+80,6
@@
void ErrorHandler(tRegs *Regs)
// Page Fault
if(Regs->int_num == 14)
{
// Page Fault
if(Regs->int_num == 14)
{
- __asm__ __volatile__ ("sti"); // Should be OK, TODO: Test
__asm__ __volatile__ ("mov %%cr2, %0":"=r"(cr));
MM_PageFault( cr, Regs->err_code, Regs );
return ;
__asm__ __volatile__ ("mov %%cr2, %0":"=r"(cr));
MM_PageFault( cr, Regs->err_code, Regs );
return ;
@@
-117,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);
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 )
{
MM_DumpTables(0, KERNEL_BASE);
switch( Regs->int_num )
{
@@
-227,14
+228,14
@@
void Error_Backtrace(Uint eip, Uint ebp)
LogF("Backtrace: 0x%x", eip);
// else
// LogF("Backtrace: %s+0x%x", str, delta);
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;
}
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);
{
if( ebp >= MM_KERNEL_STACKS_END ) break;
//str = Debug_GetSymbol(*(Uint*)(ebp+4), &delta);
@@
-245,7
+246,7
@@
void Error_Backtrace(Uint eip, Uint ebp)
ebp = *(Uint*)ebp;
i++;
}
ebp = *(Uint*)ebp;
i++;
}
- LogF("\n");
+ LogF("\
r\
n");
}
/**
}
/**
UCC
git Repository :: git.ucc.asn.au