plan 9 kernel history: overview | file list | diff list

1991/0427/power/faultmips.c (diff list | history)

1990/1212/sys/src/9/power/faultmips.c:17,221991/0425/sys/src/9/power/faultmips.c:17,23 (short | long)
1990/1212    
	extern char *excname[]; 
	int read; 
 
1991/0425    
	m->pfault++; 
1990/1212    
	addr = ur->badvaddr; 
	addr &= ~(BY2PG-1); 
	read = !(code==CTLBM || code==CTLBS); 
1991/0425/sys/src/9/power/faultmips.c:17,231991/0427/sys/src/9/power/faultmips.c:17,22 (short | long)
1990/1212    
	extern char *excname[]; 
	int read; 
 
1991/0425    
	m->pfault++; 
1990/1212    
	addr = ur->badvaddr; 
	addr &= ~(BY2PG-1); 
	read = !(code==CTLBM || code==CTLBS); 
1991/0427/sys/src/9/power/faultmips.c:15,201991/0705/sys/src/9/power/faultmips.c:15,21 (short | long)
1990/1212    
{ 
	ulong addr; 
	extern char *excname[]; 
1991/0705    
	char buf[ERRLEN]; 
1990/1212    
	int read; 
 
	addr = ur->badvaddr; 
1991/0427/sys/src/9/power/faultmips.c:22,301991/0705/sys/src/9/power/faultmips.c:23,33
1990/1212    
	read = !(code==CTLBM || code==CTLBS); 
	if(fault(addr, read) < 0){ 
		if(user){ 
			pprint("user %s badvaddr=0x%lux\n", excname[code], ur->badvaddr); 
			pprint("status=0x%lux pc=0x%lux sp=0x%lux\n", ur->status, ur->pc, ur->sp); 
			pexit("Suicide", 0); 
1991/0705    
			sprint(buf, "sys: fault %s pc=0x%lux addr=0x%lux", 
				read? "read" : "write", ur->pc, ur->badvaddr); 
			postnote(u->p, 1, buf, NDebug); 
			notify(ur); 
			return; 
1990/1212    
		} 
		print("kernel %s badvaddr=0x%lux\n", excname[code], ur->badvaddr); 
		print("status=0x%lux pc=0x%lux sp=0x%lux\n", ur->status, ur->pc, ur->sp); 
1991/0705/sys/src/9/power/faultmips.c:21,261991/0926/sys/src/9/power/faultmips.c:21,27 (short | long)
1990/1212    
	addr = ur->badvaddr; 
	addr &= ~(BY2PG-1); 
	read = !(code==CTLBM || code==CTLBS); 
1991/0926    
 
1990/1212    
	if(fault(addr, read) < 0){ 
		if(user){ 
1991/0705    
			sprint(buf, "sys: fault %s pc=0x%lux addr=0x%lux", 
1991/0705/sys/src/9/power/faultmips.c:31,371991/0926/sys/src/9/power/faultmips.c:32,37
1990/1212    
		} 
		print("kernel %s badvaddr=0x%lux\n", excname[code], ur->badvaddr); 
		print("status=0x%lux pc=0x%lux sp=0x%lux\n", ur->status, ur->pc, ur->sp); 
		u->p->state = MMUing; 
		dumpregs(ur); 
		panic("fault"); 
	} 
1991/0926/sys/src/9/power/faultmips.c:27,331991/1108/sys/src/9/power/faultmips.c:27,32 (short | long)
1991/0705    
			sprint(buf, "sys: fault %s pc=0x%lux addr=0x%lux", 
				read? "read" : "write", ur->pc, ur->badvaddr); 
			postnote(u->p, 1, buf, NDebug); 
			notify(ur); 
			return; 
1990/1212    
		} 
		print("kernel %s badvaddr=0x%lux\n", excname[code], ur->badvaddr); 
1991/1108/sys/src/9/power/faultmips.c:24,311991/1218/sys/src/9/power/faultmips.c:24,31 (short | long)
1991/0926    
 
1990/1212    
	if(fault(addr, read) < 0){ 
		if(user){ 
1991/0705    
			sprint(buf, "sys: fault %s pc=0x%lux addr=0x%lux", 
				read? "read" : "write", ur->pc, ur->badvaddr); 
1991/1218    
			sprint(buf, "sys: trap: fault %s addr=0x%lux", 
				read? "read" : "write", ur->badvaddr); 
1991/0705    
			postnote(u->p, 1, buf, NDebug); 
			return; 
1990/1212    
		} 
1991/1218/sys/src/9/power/faultmips.c:4,101992/0111/sys/src/9/power/faultmips.c:4,10 (short | long)
1990/1212    
#include	"dat.h" 
#include	"fns.h" 
#include	"ureg.h" 
#include	"errno.h" 
1992/0111    
#include	"../port/error.h" 
1990/1212    
 
/* 
 *  find out fault address and type of access. 
1992/0111/sys/src/9/power/faultmips.c:1,51992/0321/sys/src/9/power/faultmips.c:1,5 (short | long)
1990/1212    
#include	"u.h" 
#include	"lib.h" 
1992/0321    
#include	"../port/lib.h" 
1990/1212    
#include	"mem.h" 
#include	"dat.h" 
#include	"fns.h" 
1992/0321/sys/src/9/power/faultmips.c:5,101992/0508/sys/src/9/power/faultmips.c:5,11 (short | long)
1990/1212    
#include	"fns.h" 
#include	"ureg.h" 
1992/0111    
#include	"../port/error.h" 
1992/0508    
#include	"io.h" 
1990/1212    
 
/* 
 *  find out fault address and type of access. 
1992/0321/sys/src/9/power/faultmips.c:18,231992/0508/sys/src/9/power/faultmips.c:19,25
1991/0705    
	char buf[ERRLEN]; 
1990/1212    
	int read; 
 
1992/0508    
	LEDON(LEDfault); 
1990/1212    
	addr = ur->badvaddr; 
	addr &= ~(BY2PG-1); 
	read = !(code==CTLBM || code==CTLBS); 
1992/0321/sys/src/9/power/faultmips.c:27,321992/0508/sys/src/9/power/faultmips.c:29,35
1991/1218    
			sprint(buf, "sys: trap: fault %s addr=0x%lux", 
				read? "read" : "write", ur->badvaddr); 
1991/0705    
			postnote(u->p, 1, buf, NDebug); 
1992/0508    
			LEDOFF(LEDfault); 
1991/0705    
			return; 
1990/1212    
		} 
		print("kernel %s badvaddr=0x%lux\n", excname[code], ur->badvaddr); 
1992/0321/sys/src/9/power/faultmips.c:34,391992/0508/sys/src/9/power/faultmips.c:37,43
1990/1212    
		dumpregs(ur); 
		panic("fault"); 
	} 
1992/0508    
	LEDOFF(LEDfault); 
1990/1212    
} 
 
/* 
1992/0508/sys/src/9/power/faultmips.c:21,261992/0609/sys/src/9/power/faultmips.c:21,28 (short | long)
1990/1212    
 
1992/0508    
	LEDON(LEDfault); 
1990/1212    
	addr = ur->badvaddr; 
1992/0609    
	if(addr & KZERO) 
		LEDON(LEDkfault); 
1990/1212    
	addr &= ~(BY2PG-1); 
	read = !(code==CTLBM || code==CTLBS); 
1991/0926    
 
1992/0609/sys/src/9/power/faultmips.c:34,411992/1105/sys/src/9/power/faultmips.c:34,41 (short | long)
1992/0508    
			LEDOFF(LEDfault); 
1991/0705    
			return; 
1990/1212    
		} 
		print("kernel %s badvaddr=0x%lux\n", excname[code], ur->badvaddr); 
		print("status=0x%lux pc=0x%lux sp=0x%lux\n", ur->status, ur->pc, ur->sp); 
1992/1105    
		iprint("kernel %s badvaddr=0x%lux\n", excname[code], ur->badvaddr); 
		iprint("status=0x%lux pc=0x%lux sp=0x%lux\n", ur->status, ur->pc, ur->sp); 
1990/1212    
		dumpregs(ur); 
		panic("fault"); 
	} 
1992/1105/sys/src/9/power/faultmips.c:21,281992/1124/sys/src/9/power/faultmips.c:21,32 (short | long)
1990/1212    
 
1992/0508    
	LEDON(LEDfault); 
1990/1212    
	addr = ur->badvaddr; 
1992/0609    
	if(addr & KZERO) 
1992/1124    
	if(addr & KZERO){ 
1992/0609    
		LEDON(LEDkfault); 
1992/1124    
		print("KZERO %s badvaddr=0x%lux r31=0x%lux\n", excname[code], 
			ur->badvaddr, ur->r31); 
		print("status=0x%lux pc=0x%lux sp=0x%lux\n", ur->status, ur->pc, ur->sp); 
	} 
1990/1212    
	addr &= ~(BY2PG-1); 
	read = !(code==CTLBM || code==CTLBS); 
1991/0926    
 
1992/1105/sys/src/9/power/faultmips.c:34,411992/1124/sys/src/9/power/faultmips.c:38,45
1992/0508    
			LEDOFF(LEDfault); 
1991/0705    
			return; 
1990/1212    
		} 
1992/1105    
		iprint("kernel %s badvaddr=0x%lux\n", excname[code], ur->badvaddr); 
		iprint("status=0x%lux pc=0x%lux sp=0x%lux\n", ur->status, ur->pc, ur->sp); 
1992/1124    
		print("kernel %s badvaddr=0x%lux\n", excname[code], ur->badvaddr); 
		print("status=0x%lux pc=0x%lux sp=0x%lux\n", ur->status, ur->pc, ur->sp); 
1990/1212    
		dumpregs(ur); 
		panic("fault"); 
	} 
1992/1124/sys/src/9/power/faultmips.c:21,321992/1125/sys/src/9/power/faultmips.c:21,28 (short | long)
1990/1212    
 
1992/0508    
	LEDON(LEDfault); 
1990/1212    
	addr = ur->badvaddr; 
1992/1124    
	if(addr & KZERO){ 
1992/1125    
	if(addr & KZERO) 
1992/0609    
		LEDON(LEDkfault); 
1992/1124    
		print("KZERO %s badvaddr=0x%lux r31=0x%lux\n", excname[code], 
			ur->badvaddr, ur->r31); 
		print("status=0x%lux pc=0x%lux sp=0x%lux\n", ur->status, ur->pc, ur->sp); 
	} 
1990/1212    
	addr &= ~(BY2PG-1); 
	read = !(code==CTLBM || code==CTLBS); 
1991/0926    
 
1992/1125/sys/src/9/power/faultmips.c:21,271992/1126/sys/src/9/power/faultmips.c:21,27 (short | long)
1990/1212    
 
1992/0508    
	LEDON(LEDfault); 
1990/1212    
	addr = ur->badvaddr; 
1992/1125    
	if(addr & KZERO) 
1992/1126    
	if((addr & KZERO) && (0xffff0000 & addr) != USERADDR) 
1992/0609    
		LEDON(LEDkfault); 
1990/1212    
	addr &= ~(BY2PG-1); 
	read = !(code==CTLBM || code==CTLBS); 
1992/1125/sys/src/9/power/faultmips.c:39,451992/1126/sys/src/9/power/faultmips.c:39,45
1990/1212    
		dumpregs(ur); 
		panic("fault"); 
	} 
1992/0508    
	LEDOFF(LEDfault); 
1992/1126    
	LEDOFF(LEDfault|LEDkfault); 
1990/1212    
} 
 
/* 
1992/1126/sys/src/9/power/faultmips.c:14,451993/0501/sys/src/9/power/faultmips.c:14,43 (short | long)
1990/1212    
void 
faultmips(Ureg *ur, int user, int code) 
{ 
1993/0501    
	int read; 
1990/1212    
	ulong addr; 
	extern char *excname[]; 
1991/0705    
	char buf[ERRLEN]; 
1990/1212    
	int read; 
1993/0501    
	char *p, buf[ERRLEN]; 
1990/1212    
 
1992/0508    
	LEDON(LEDfault); 
1990/1212    
	addr = ur->badvaddr; 
1992/1126    
	if((addr & KZERO) && (0xffff0000 & addr) != USERADDR) 
1992/0609    
		LEDON(LEDkfault); 
1990/1212    
	addr &= ~(BY2PG-1); 
	read = !(code==CTLBM || code==CTLBS); 
1991/0926    
 
1990/1212    
	if(fault(addr, read) < 0){ 
		if(user){ 
1991/1218    
			sprint(buf, "sys: trap: fault %s addr=0x%lux", 
				read? "read" : "write", ur->badvaddr); 
1991/0705    
			postnote(u->p, 1, buf, NDebug); 
1992/0508    
			LEDOFF(LEDfault); 
1991/0705    
			return; 
1990/1212    
		} 
1992/1124    
		print("kernel %s badvaddr=0x%lux\n", excname[code], ur->badvaddr); 
		print("status=0x%lux pc=0x%lux sp=0x%lux\n", ur->status, ur->pc, ur->sp); 
1990/1212    
		dumpregs(ur); 
		panic("fault"); 
1993/0501    
	if(fault(addr, read) == 0) 
		return; 
 
	if(user) { 
		p = "store"; 
		if(read) 
			p = "load"; 
		sprint(buf, "sys: trap: fault %s addr=0x%lux", p, ur->badvaddr); 
		postnote(up, 1, buf, NDebug); 
		return; 
1990/1212    
	} 
1992/1126    
	LEDOFF(LEDfault|LEDkfault); 
1993/0501    
	print("kernel %s vaddr=0x%lux\n", excname[code], ur->badvaddr); 
	print("status=0x%lux pc=0x%lux sp=0x%lux\n", ur->status, ur->pc, ur->sp); 
	dumpregs(ur); 
	panic("fault"); 
1990/1212    
} 
 
/* 
1992/1126/sys/src/9/power/faultmips.c:49,551993/0501/sys/src/9/power/faultmips.c:47,53
1990/1212    
evenaddr(ulong addr) 
{ 
	if(addr & 3){ 
		postnote(u->p, 1, "sys: odd address", NDebug); 
1993/0501    
		postnote(up, 1, "sys: odd address", NDebug); 
1990/1212    
		error(Ebadarg); 
	} 
} 
1993/0501/sys/src/9/power/faultmips.c:1,531997/0327/sys/src/9/power/faultmips.c:0 (short | long)
Deleted.
rsc Mon Mar 7 10:32:54 2005
1990/1212    
#include	"u.h" 
1992/0321    
#include	"../port/lib.h" 
1990/1212    
#include	"mem.h" 
#include	"dat.h" 
#include	"fns.h" 
#include	"ureg.h" 
1992/0111    
#include	"../port/error.h" 
1992/0508    
#include	"io.h" 
1990/1212    
                 
/* 
 *  find out fault address and type of access. 
 *  Call common fault handler. 
 */ 
void 
faultmips(Ureg *ur, int user, int code) 
{ 
1993/0501    
	int read; 
1990/1212    
	ulong addr; 
	extern char *excname[]; 
1993/0501    
	char *p, buf[ERRLEN]; 
1990/1212    
                 
	addr = ur->badvaddr; 
	addr &= ~(BY2PG-1); 
	read = !(code==CTLBM || code==CTLBS); 
1991/0926    
                 
1993/0501    
	if(fault(addr, read) == 0) 
		return; 
                 
	if(user) { 
		p = "store"; 
		if(read) 
			p = "load"; 
		sprint(buf, "sys: trap: fault %s addr=0x%lux", p, ur->badvaddr); 
		postnote(up, 1, buf, NDebug); 
		return; 
1990/1212    
	} 
1993/0501    
	print("kernel %s vaddr=0x%lux\n", excname[code], ur->badvaddr); 
	print("status=0x%lux pc=0x%lux sp=0x%lux\n", ur->status, ur->pc, ur->sp); 
	dumpregs(ur); 
	panic("fault"); 
1990/1212    
} 
                 
/* 
 * called in sysfile.c 
 */ 
void 
evenaddr(ulong addr) 
{ 
	if(addr & 3){ 
1993/0501    
		postnote(up, 1, "sys: odd address", NDebug); 
1990/1212    
		error(Ebadarg); 
	} 
} 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)