cli();
cons.locking = 0;
- cprintf("cpu %d: panic: ", cpuid());
+ // use lapiccpunum so that we can call panic from mycpu()
+ cprintf("cpu %d: panic: ", lapiccpunum());
cprintf(s);
cprintf("\n");
getcallerpcs(&s, pcs);
struct cpu*
mycpu(void)
{
- if(readeflags()&FL_IF){
- // Would prefer to panic but panic calls mycpu().
- cprintf("mycpu called from %x with interrupts enabled\n",
- __builtin_return_address(0));
- }
-
+ if(readeflags()&FL_IF)
+ panic("mycpu called with interrupts enabled\n");
return &cpus[lapiccpunum()];
}