| plan 9 kernel history: overview | file list | diff list |
1991/1218/gnot/fault68020.c (diff list | history)
| 1990/1212/sys/src/9/gnot/fault68020.c:45,59 – 1990/1214/sys/src/9/gnot/fault68020.c:45,52 (short | long) | ||
| 1990/1212 | void fault68020(Ureg *ur, FFrame *f) { | |
| 1990/1214 | ulong addr, badvaddr; int user, read, insyscall; | |
| 1990/1212 | if(u == 0){ dumpregs(ur); | |
| 1990/1214/sys/src/9/gnot/fault68020.c:73,86 – 1991/0705/sys/src/9/gnot/fault68020.c:73,89 (short | long) | ||
| 1990/1212 | panic("prefetch pagefault"); }else panic("prefetch format"); | |
| 1991/0705 | ||
| 1990/1212 | addr &= VAMASK; badvaddr = addr; addr &= ~(BY2PG-1); user = !(ur->sr&SUPER); | |
| 1991/0705 | ||
| 1990/1212 | if(f->ssw & DF) read = (f->ssw&READ) && !(f->ssw&RM); else read = f->ssw&(FB|FC); | |
| 1991/0705 | ||
| 1990/1212 | /* print("fault pc=%lux addr=%lux read %d\n", ur->pc, badvaddr, read); /**/ if(fault(addr, read) < 0){ | |
| 1991/0705/sys/src/9/gnot/fault68020.c:89,95 – 1991/0710/sys/src/9/gnot/fault68020.c:89,95 (short | long) | ||
| 1990/1212 | if(fault(addr, read) < 0){ if(user){ pprint("user %s error addr=0x%lux\n", read? "read" : "write", badvaddr); | |
| 1991/0710 | pprint("status=0x%lux pc=0x%lux sp=0x%lux\n", ur->sr, ur->pc, ur->usp); | |
| 1990/1212 | pexit("Suicide", 0); } u->p->state = MMUing; | |
| 1991/0710/sys/src/9/gnot/fault68020.c:47,52 – 1991/0719/sys/src/9/gnot/fault68020.c:47,53 (short | long) | ||
| 1990/1212 | { | |
| 1990/1214 | ulong addr, badvaddr; int user, read, insyscall; | |
| 1991/0719 | char buf[ERRLEN]; | |
| 1990/1212 | if(u == 0){ dumpregs(ur); | |
| 1991/0710/sys/src/9/gnot/fault68020.c:88,96 – 1991/0719/sys/src/9/gnot/fault68020.c:89,99 | ||
| 1990/1212 | if(fault(addr, read) < 0){ if(user){ | |
| 1991/0710 |
| |
| 1990/1212 |
| |
| 1991/0719 | sprint(buf, "sys: fault %s pc=0x%lux addr=0x%lux", read? "read" : "write", ur->pc, badvaddr); postnote(u->p, 1, buf, NDebug); notify(ur); return; | |
| 1990/1212 | } u->p->state = MMUing; dumpregs(ur); | |
| 1991/0719/sys/src/9/gnot/fault68020.c:95,101 – 1991/0926/sys/src/9/gnot/fault68020.c:95,100 (short | long) | ||
| 1991/0719 | notify(ur); return; | |
| 1990/1212 | } | |
| 1991/0926/sys/src/9/gnot/fault68020.c:92,97 – 1991/1108/sys/src/9/gnot/fault68020.c:92,99 (short | long) | ||
| 1991/0719 | sprint(buf, "sys: fault %s pc=0x%lux addr=0x%lux", read? "read" : "write", ur->pc, badvaddr); postnote(u->p, 1, buf, NDebug); | |
| 1991/1108 | if(u->p->procctl) procctl(u->p); | |
| 1991/0719 | notify(ur); return; | |
| 1990/1212 | } | |
| 1991/1108/sys/src/9/gnot/fault68020.c:55,60 – 1991/1112/sys/src/9/gnot/fault68020.c:55,61 (short | long) | ||
| 1990/1212 | } insyscall = u->p->insyscall; u->p->insyscall = 1; | |
| 1991/1112 | u->dbgreg = ur; | |
| 1990/1212 | addr = 0; /* set */ if(f->ssw & DF) addr = f->addr; | |
| 1991/1108/sys/src/9/gnot/fault68020.c:92,99 – 1991/1112/sys/src/9/gnot/fault68020.c:93,98 | ||
| 1991/0719 | sprint(buf, "sys: fault %s pc=0x%lux addr=0x%lux", read? "read" : "write", ur->pc, badvaddr); postnote(u->p, 1, buf, NDebug); | |
| 1991/1108 |
| |
| 1991/0719 | notify(ur); return; | |
| 1990/1212 | } | |
| 1991/1112/sys/src/9/gnot/fault68020.c:90,97 – 1991/1218/sys/src/9/gnot/fault68020.c:90,97 (short | long) | ||
| 1990/1212 | if(fault(addr, read) < 0){ if(user){ | |
| 1991/0719 |
| |
| 1991/1218 | sprint(buf, "sys: trap: fault %s addr=0x%lux", read? "read" : "write", badvaddr); | |
| 1991/0719 | postnote(u->p, 1, buf, NDebug); notify(ur); return; | |
| 1991/1218/sys/src/9/gnot/fault68020.c:4,10 – 1992/0111/sys/src/9/gnot/fault68020.c:4,10 (short | long) | ||
|
Move error.h to ../port. Change errors to actual strings.
rsc Fri Mar 4 12:44:25 2005 | ||
| 1990/1212 | #include "dat.h" #include "fns.h" #include "ureg.h" | |
| 1992/0111 | #include "../port/error.h" | |
| 1990/1212 | #define FORMAT(ur) ((((ur)->vo)>>12)&0xF) #define OFFSET(ur) (((ur)->vo)&0xFFF) | |
| 1992/0111/sys/src/9/gnot/fault68020.c:55,61 – 1992/0201/sys/src/9/gnot/fault68020.c:55,60 (short | long) | ||
| 1990/1212 | } insyscall = u->p->insyscall; u->p->insyscall = 1; | |
| 1991/1112 |
| |
| 1990/1212 | addr = 0; /* set */ if(f->ssw & DF) addr = f->addr; | |
| 1992/0111/sys/src/9/gnot/fault68020.c:80,85 – 1992/0201/sys/src/9/gnot/fault68020.c:79,86 | ||
| 1990/1212 | badvaddr = addr; addr &= ~(BY2PG-1); user = !(ur->sr&SUPER); | |
| 1992/0201 | if(user) u->dbgreg = ur; | |
| 1991/0705 | ||
| 1990/1212 | if(f->ssw & DF) read = (f->ssw&READ) && !(f->ssw&RM); | |
| 1992/0201/sys/src/9/gnot/fault68020.c:1,5 – 1992/0321/sys/src/9/gnot/fault68020.c:1,5 (short | long) | ||
|
Move lib.h to ../port.
rsc Fri Mar 4 12:44:25 2005 | ||
| 1990/1212 | #include "u.h" | |
| 1992/0321 | #include "../port/lib.h" | |
| 1990/1212 | #include "mem.h" #include "dat.h" #include "fns.h" | |
| 1992/0321/sys/src/9/gnot/fault68020.c:99,105 – 1992/0812/sys/src/9/gnot/fault68020.c:99,104 (short | long) | ||
| 1990/1212 | } dumpregs(ur); panic("fault: 0x%lux", badvaddr); | |
| 1992/0812/sys/src/9/gnot/fault68020.c:1,104 – 1993/0501/sys/src/9/gnot/fault68020.c:0 (short | long) | ||
|
Deleted.
rsc Mon Mar 7 10:21:44 2005 | ||
| 1990/1212 |
| |
| 1992/0321 |
| |
| 1990/1212 |
| |
| 1992/0111 |
| |
| 1990/1212 |
| |
| 1990/1214 |
| |
| 1991/0719 |
| |
| 1990/1212 |
| |
| 1991/0705 | ||
| 1990/1212 |
| |
| 1992/0201 |
| |
| 1991/0705 | ||
| 1990/1212 |
| |
| 1991/0705 | ||
| 1990/1212 |
| |
| 1991/1218 |
| |
| 1991/0719 |
| |
| 1990/1212 |
| |