fix: kpanic print address of the fault only when page fault occured
This commit is contained in:
parent
7b7cc86999
commit
db4ed04dd6
11
src/kpanic.c
11
src/kpanic.c
@ -4,9 +4,11 @@
|
|||||||
#include "kprintf.h"
|
#include "kprintf.h"
|
||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
#include "power.h"
|
#include "power.h"
|
||||||
|
#include "string.h"
|
||||||
#include "terminal.h"
|
#include "terminal.h"
|
||||||
|
|
||||||
extern u32 page_table1[1024];
|
extern u32 page_table1[1024];
|
||||||
|
extern const char *faults[];
|
||||||
|
|
||||||
__attribute__((noreturn)) void kpanic(const char *format, ...)
|
__attribute__((noreturn)) void kpanic(const char *format, ...)
|
||||||
{
|
{
|
||||||
@ -17,9 +19,12 @@ __attribute__((noreturn)) void kpanic(const char *format, ...)
|
|||||||
va_start(va, format);
|
va_start(va, format);
|
||||||
kvprintf(format, &va);
|
kvprintf(format, &va);
|
||||||
va_end(va);
|
va_end(va);
|
||||||
u32 faulting_address;
|
|
||||||
__asm__ __volatile__("mov %%cr2, %0" : "=r"(faulting_address));
|
if (strcmp(format, faults[14]) == 0) {
|
||||||
kprintf("fault at address: %p\n", faulting_address);
|
u32 faulting_address;
|
||||||
|
__asm__ __volatile__("mov %%cr2, %0" : "=r"(faulting_address));
|
||||||
|
kprintf("fault at address: %p\n", faulting_address);
|
||||||
|
}
|
||||||
/* for (int i = 16; i < 32; i++) */
|
/* for (int i = 16; i < 32; i++) */
|
||||||
/* kprintf("%p\n", page_table1[i]); */
|
/* kprintf("%p\n", page_table1[i]); */
|
||||||
/* show_valloc_mem(); */
|
/* show_valloc_mem(); */
|
||||||
|
Loading…
Reference in New Issue
Block a user