Fixed printing of registers in dbflalt_handler(). The registers
were always in a tss; that tss just changed from the one in the pcb to common_tss (who knows where it was when there was no curpcb?). Not using the pcb also fixed the problem that there is no pcb in idle(), so we now always get useful register values.
This commit is contained in:
parent
82f16b75fb
commit
880c5c361f
@ -35,7 +35,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)trap.c 7.4 (Berkeley) 5/13/91
|
||||
* $Id: trap.c,v 1.90 1997/04/07 06:45:15 peter Exp $
|
||||
* $Id: trap.c,v 1.91 1997/04/07 07:15:55 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -85,6 +85,8 @@
|
||||
#include "isa.h"
|
||||
#include "npx.h"
|
||||
|
||||
extern struct i386tss common_tss;
|
||||
|
||||
int (*pmath_emulate) __P((struct trapframe *));
|
||||
|
||||
extern void trap __P((struct trapframe frame));
|
||||
@ -759,15 +761,11 @@ trap_fatal(frame)
|
||||
void
|
||||
dblfault_handler()
|
||||
{
|
||||
struct pcb *pcb = curpcb;
|
||||
|
||||
if (pcb != NULL) {
|
||||
printf("\nFatal double fault:\n");
|
||||
printf("eip = 0x%x\n", pcb->pcb_eip);
|
||||
printf("esp = 0x%x\n", pcb->pcb_esp);
|
||||
printf("ebp = 0x%x\n", pcb->pcb_ebp);
|
||||
}
|
||||
|
||||
printf("eip = 0x%x\n", common_tss.tss_eip);
|
||||
printf("esp = 0x%x\n", common_tss.tss_esp);
|
||||
printf("ebp = 0x%x\n", common_tss.tss_ebp);
|
||||
panic("double fault");
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)trap.c 7.4 (Berkeley) 5/13/91
|
||||
* $Id: trap.c,v 1.90 1997/04/07 06:45:15 peter Exp $
|
||||
* $Id: trap.c,v 1.91 1997/04/07 07:15:55 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -85,6 +85,8 @@
|
||||
#include "isa.h"
|
||||
#include "npx.h"
|
||||
|
||||
extern struct i386tss common_tss;
|
||||
|
||||
int (*pmath_emulate) __P((struct trapframe *));
|
||||
|
||||
extern void trap __P((struct trapframe frame));
|
||||
@ -759,15 +761,11 @@ trap_fatal(frame)
|
||||
void
|
||||
dblfault_handler()
|
||||
{
|
||||
struct pcb *pcb = curpcb;
|
||||
|
||||
if (pcb != NULL) {
|
||||
printf("\nFatal double fault:\n");
|
||||
printf("eip = 0x%x\n", pcb->pcb_eip);
|
||||
printf("esp = 0x%x\n", pcb->pcb_esp);
|
||||
printf("ebp = 0x%x\n", pcb->pcb_ebp);
|
||||
}
|
||||
|
||||
printf("eip = 0x%x\n", common_tss.tss_eip);
|
||||
printf("esp = 0x%x\n", common_tss.tss_esp);
|
||||
printf("ebp = 0x%x\n", common_tss.tss_ebp);
|
||||
panic("double fault");
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)trap.c 7.4 (Berkeley) 5/13/91
|
||||
* $Id: trap.c,v 1.90 1997/04/07 06:45:15 peter Exp $
|
||||
* $Id: trap.c,v 1.91 1997/04/07 07:15:55 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -85,6 +85,8 @@
|
||||
#include "isa.h"
|
||||
#include "npx.h"
|
||||
|
||||
extern struct i386tss common_tss;
|
||||
|
||||
int (*pmath_emulate) __P((struct trapframe *));
|
||||
|
||||
extern void trap __P((struct trapframe frame));
|
||||
@ -759,15 +761,11 @@ trap_fatal(frame)
|
||||
void
|
||||
dblfault_handler()
|
||||
{
|
||||
struct pcb *pcb = curpcb;
|
||||
|
||||
if (pcb != NULL) {
|
||||
printf("\nFatal double fault:\n");
|
||||
printf("eip = 0x%x\n", pcb->pcb_eip);
|
||||
printf("esp = 0x%x\n", pcb->pcb_esp);
|
||||
printf("ebp = 0x%x\n", pcb->pcb_ebp);
|
||||
}
|
||||
|
||||
printf("eip = 0x%x\n", common_tss.tss_eip);
|
||||
printf("esp = 0x%x\n", common_tss.tss_esp);
|
||||
printf("ebp = 0x%x\n", common_tss.tss_ebp);
|
||||
panic("double fault");
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user