| plan 9 kernel history: overview | file list | diff list |
1990/1227/ss/trap.c (diff list | history)
| 1990/1226/sys/src/9/ss/trap.c:35,42 – 1990/1227/sys/src/9/ss/trap.c:35,40 (short | long | prev | next) | ||
| 1990/1223 | { static char buf[32]; /* BUG: not reentrant! */ | |
| 1990/1226 |
| |
| 1990/1226/sys/src/9/ss/trap.c:57,75 – 1990/1227/sys/src/9/ss/trap.c:55,80 | ||
| 1990/1223 | { int user; char buf[64]; | |
| 1990/1227 | ulong tbr; | |
| 1990/1223 | ||
| 1990/1227 | tbr = (ur->tbr&0xFFF)>>4; if(tbr == 30){ /* interrupt 14: counter 1 */ clock(ur); return; } | |
| 1990/1226 | user = !(ur->psr&PSRPSUPER); /* if(u) | |
| 1990/1223 | u->p->pc = ur->pc; /* BUG */ if(user){ | |
| 1990/1226 |
| |
| 1990/1227 | print("user trap: %s pc=0x%lux\n", excname(tbr), ur->pc); | |
| 1990/1226 | dumpregs(ur); for(;;); | |
| 1990/1227 | sprint(buf, "sys: trap: pc=0x%lux %s", ur->pc, excname(tbr)); | |
| 1990/1223 | postnote(u->p, 1, buf, NDebug); }else{ | |
| 1990/1226 |
| |
| 1990/1227 | print("kernel trap: %s pc=0x%lux\n", excname(tbr), ur->pc); | |
| 1990/1223 | dumpregs(ur); | |
| 1990/1226 | for(;;); | |
| 1990/1223 | exit(); | |