diff options
author | rtm <rtm> | 2006-08-15 22:18:20 +0000 |
---|---|---|
committer | rtm <rtm> | 2006-08-15 22:18:20 +0000 |
commit | 350e63f7a9b1be695c0cf69e380bd96733524f25 (patch) | |
tree | 782259566c4596eef115590ff3e054fc7c5f3718 /trap.c | |
parent | 69332d1918fda38b25fc3ec8c786d16bb17e9e68 (diff) | |
download | xv6-labs-350e63f7a9b1be695c0cf69e380bd96733524f25.tar.gz xv6-labs-350e63f7a9b1be695c0cf69e380bd96733524f25.tar.bz2 xv6-labs-350e63f7a9b1be695c0cf69e380bd96733524f25.zip |
no more proc[] entry per cpu for idle loop
each cpu[] has its own gdt and tss
no per-proc gdt or tss, re-write cpu's in scheduler (you win, cliff)
main0() switches to cpu[0].mpstack
Diffstat (limited to 'trap.c')
-rw-r--r-- | trap.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -41,8 +41,8 @@ trap(struct trapframe *tf) panic("interrupt while holding a lock"); } - if(cpu() == 1 && curproc[cpu()] == 0){ - if(&tf < cpus[cpu()].mpstack || &tf > cpus[cpu()].mpstack + 512){ + if(curproc[cpu()] == 0){ + if(&tf < cpus[cpu()].mpstack || &tf > cpus[cpu()].mpstack + MPSTACK){ cprintf("&tf %x mpstack %x\n", &tf, cpus[cpu()].mpstack); panic("trap cpu stack"); } @@ -125,7 +125,8 @@ trap(struct trapframe *tf) return; } - cprintf("trap %d\n", v); + cprintf("trap %d from cpu %d eip %x\n", v, cpu(), tf->eip); + panic("trap"); return; } |