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
Kernel/x86 - Evil hack to do validation of virtual memory
[tpg/acess2.git]
/
KernelLand
/
Kernel
/
arch
/
x86_64
/
errors.c
diff --git
a/KernelLand/Kernel/arch/x86_64/errors.c
b/KernelLand/Kernel/arch/x86_64/errors.c
index
e7812c3
..
81d6466
100644
(file)
--- a/
KernelLand/Kernel/arch/x86_64/errors.c
+++ b/
KernelLand/Kernel/arch/x86_64/errors.c
@@
-6,6
+6,7
@@
#include <proc.h>
#include <mm_virt.h>
#include <threads_int.h> // Needed for SSE handling
#include <proc.h>
#include <mm_virt.h>
#include <threads_int.h> // Needed for SSE handling
+#include <debug_hooks.h>
#define MAX_BACKTRACE 6
#define MAX_BACKTRACE 6
@@
-98,6
+99,9
@@
void Error_Handler(tRegs *Regs)
*(Uint8*)(Regs->RIP+2), *(Uint8*)(Regs->RIP+3)
);
break;
*(Uint8*)(Regs->RIP+2), *(Uint8*)(Regs->RIP+3)
);
break;
+ case 2: // NMI
+ Threads_Dump();
+ break;
}
__asm__ __volatile__ ("cli");
}
__asm__ __volatile__ ("cli");
@@
-105,6
+109,13
@@
void Error_Handler(tRegs *Regs)
__asm__ __volatile__ ("hlt");
}
__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
/**
* \fn void Error_Backtrace(Uint eip, Uint ebp)
* \brief Unrolls the stack to trace execution
UCC
git Repository :: git.ucc.asn.au