diff --git a/proc.c b/proc.c index 3ab23f4..4d0faec 100644 --- a/proc.c +++ b/proc.c @@ -118,7 +118,7 @@ found: sp -= sizeof *p->context; p->context = (struct context*)sp; memset(p->context, 0, sizeof *p->context); - p->context->eip = (uint64)forkret; + p->context->rip = (uint64)forkret; return p; } @@ -531,7 +531,7 @@ procdump(void) state = "???"; cprintf("%d %s %s", p->pid, state, p->name); if(p->state == SLEEPING){ - getcallerpcs((uint64*)p->context->ebp+2, pc); + getcallerpcs((uint64*)p->context->rbp+2, pc); for(i=0; i<10 && pc[i] != 0; i++) cprintf(" %p", pc[i]); } diff --git a/proc.h b/proc.h index 5ab2de5..e421e44 100644 --- a/proc.h +++ b/proc.h @@ -33,8 +33,8 @@ struct context { uint64 r12; uint64 r11; uint64 rbx; - uint64 ebp; //rbp - uint64 eip; //rip; + uint64 rbp; + uint64 rip; }; enum procstate { UNUSED, EMBRYO, SLEEPING, RUNNABLE, RUNNING, ZOMBIE }; diff --git a/trap.c b/trap.c index f27b99b..c6c6bc2 100644 --- a/trap.c +++ b/trap.c @@ -87,13 +87,13 @@ trap(struct trapframe *tf) default: if(myproc() == 0 || (tf->cs&3) == 0){ // In kernel, it must be our mistake. - cprintf("unexpected trap %d from cpu %d eip %x (cr2=0x%x)\n", + cprintf("unexpected trap %d from cpu %d rip %x (cr2=0x%x)\n", tf->trapno, cpuid(), tf->rip, rcr2()); panic("trap"); } // In user space, assume process misbehaved. cprintf("pid %d %s: trap %d err %d on cpu %d " - "eip 0x%x addr 0x%x--kill proc\n", + "rip 0x%x addr 0x%x--kill proc\n", myproc()->pid, myproc()->name, tf->trapno, tf->err, cpuid(), tf->rip, rcr2()); myproc()->killed = 1;