x86: Add stack dump to register dump
This commit is contained in:
parent
9963a8216e
commit
ca56a4ceec
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <asm/interrupt.h>
|
#include <asm/interrupt.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
|
||||||
#define DECLARE_INTERRUPT(x) \
|
#define DECLARE_INTERRUPT(x) \
|
||||||
".globl irq_"#x"\n" \
|
".globl irq_"#x"\n" \
|
||||||
|
@ -108,6 +109,7 @@ void dump_regs(struct irq_regs *regs)
|
||||||
{
|
{
|
||||||
unsigned long cr0 = 0L, cr2 = 0L, cr3 = 0L, cr4 = 0L;
|
unsigned long cr0 = 0L, cr2 = 0L, cr3 = 0L, cr4 = 0L;
|
||||||
unsigned long d0, d1, d2, d3, d6, d7;
|
unsigned long d0, d1, d2, d3, d6, d7;
|
||||||
|
unsigned long sp;
|
||||||
|
|
||||||
printf("EIP: %04x:[<%08lx>] EFLAGS: %08lx\n",
|
printf("EIP: %04x:[<%08lx>] EFLAGS: %08lx\n",
|
||||||
(u16)regs->xcs, regs->eip, regs->eflags);
|
(u16)regs->xcs, regs->eip, regs->eflags);
|
||||||
|
@ -139,6 +141,20 @@ void dump_regs(struct irq_regs *regs)
|
||||||
d7 = get_debugreg(7);
|
d7 = get_debugreg(7);
|
||||||
printf("DR6: %08lx DR7: %08lx\n",
|
printf("DR6: %08lx DR7: %08lx\n",
|
||||||
d6, d7);
|
d6, d7);
|
||||||
|
|
||||||
|
printf("Stack:\n");
|
||||||
|
sp = regs->esp;
|
||||||
|
|
||||||
|
sp += 64;
|
||||||
|
|
||||||
|
while (sp > (regs->esp - 16)) {
|
||||||
|
if (sp == regs->esp)
|
||||||
|
printf("--->");
|
||||||
|
else
|
||||||
|
printf(" ");
|
||||||
|
printf("0x%8.8lx : 0x%8.8lx\n", sp, (ulong)readl(sp));
|
||||||
|
sp -= 4;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct idt_entry {
|
struct idt_entry {
|
||||||
|
|
Loading…
Reference in New Issue