kern

diff src/panic.c @ 57:437360696883

I think we're done for now. two processes seem to be scheduled and switched just fine, fork seems to work (NO CoW YET!)
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 16 Aug 2011 03:26:53 +0300
parents 5f6c5751ae05
children 2dda077c1d38
line diff
     1.1 --- a/src/panic.c	Mon Aug 15 06:17:58 2011 +0300
     1.2 +++ b/src/panic.c	Tue Aug 16 03:26:53 2011 +0300
     1.3 @@ -18,12 +18,15 @@
     1.4  {
     1.5  	va_list ap;
     1.6  	struct all_registers regs;
     1.7 +	uint32_t eip;
     1.8  
     1.9  	disable_intr();
    1.10  
    1.11  	memset(&regs, 0, sizeof regs);
    1.12  	get_regs(&regs);
    1.13  
    1.14 +	eip = get_caller_instr_ptr();
    1.15 +
    1.16  	printf("~~~~~ kernel panic ~~~~~\n");
    1.17  	va_start(ap, fmt);
    1.18  	vprintf(fmt, ap);
    1.19 @@ -32,7 +35,7 @@
    1.20  	printf("\nRegisters:\n");
    1.21  	printf("eax: %x, ebx: %x, ecx: %x, edx: %x\n", regs.eax, regs.ebx, regs.ecx, regs.edx);
    1.22  	printf("esp: %x, ebp: %x, esi: %x, edi: %x\n", regs.esp, regs.ebp, regs.esi, regs.edi);
    1.23 -	printf("eflags: %x\n", regs.eflags);
    1.24 +	printf("eip: %x, eflags: %x\n", eip, regs.eflags);
    1.25  	printf("cr0: %x, cr1: %x, cr2: %x, cr3: %x\n", regs.cr0, regs.cr1, regs.cr2, regs.cr3);
    1.26  	printf("cs: %x (%d|%d)\n", regs.cs, regs.cs >> 3, regs.cs & 3);
    1.27  	printf("ss: %x (%d|%d)\n", regs.ss, regs.ss >> 3, regs.ss & 3);