~kris/9p

9hist

48286150c6ce452ee576e761e80dabbf94a5eadf — David du Colombier 27 years ago 0eae421
Plan 9 from Bell Labs 1999-07-20
3 files changed, 36 insertions(+), 6 deletions(-)

M carrera/trap.c
M pc/trap.c
M port/devcons.c
M carrera/trap.c => carrera/trap.c +20 -4
@@ 466,20 466,30 @@ kernfault(Ureg *ur, int code)
				up, ur->status, ur->pc, ur->r31, ur->sp);

	dumpregs(ur);
	splhi();
	for(;;);
	panic("kfault");
}

note rsc_wrote_this_but_has_not_checked_it yet;
void
dumpstack(void)
getpcsp(ulong *pc, ulong *sp)
{
	*pc = getcallerpc(&pc);
	sp = (ulong)&pc-4;
}

static void
_dumpstack(ulong dummy)
{
	ulong l, v, top, i;
	ulong pc, sp, link, l, v, top, i;
	extern ulong etext;

	if(up == 0)
		return;

	getpcsp(&pc, &sp);
	link = getcallerpc(&dummy);

	print("ktrace /kernel/path %.8lux %.8lux %.8lux\n", pc, sp, r31);
	top = (ulong)up->kstack + KSTACK;
	i = 0;
	for(l=(ulong)&l; l < top; l += BY2WD) {


@@ 495,6 505,12 @@ dumpstack(void)
	print("\n");
}

void
dumpstack(void)
{
	_dumpstack(0);
}

ulong
R(Ureg *ur, int i)
{

M pc/trap.c => pc/trap.c +14 -2
@@ 315,15 315,25 @@ dumpregs(Ureg* ureg)
}

void
getpcsp(ulong *pc, ulong *sp)
{
	*pc = getcallerpc(&pc);
	*sp = (ulong)&pc;
}

void
dumpstack(void)
{
	ulong l, v, i;
	ulong sp, pc;
	uchar *p;
	extern ulong etext;

	if(up == 0)
		return;

	getpcsp(&pc, &sp);
	print("ktrace /kernel/path %.8lux %.8lux\n", pc, sp);
	i = 0;
	for(l=(ulong)&l; l<(ulong)(up->kstack+KSTACK); l+=4){
		v = *(ulong*)l;


@@ 335,15 345,17 @@ dumpstack(void)
			p = (uchar*)v;
			if(*(p-5) == 0xE8
			|| (*(p-2) == 0xFF && *(p-1) == 0xD0)){
				print("%p ", p-5);
				print("%.8lux=%.8lux ", l, v);
				i++;
			}
		}
		if(i == 8){
		if(i == 4){
			i = 0;
			print("\n");
		}
	}
	if(i)
		print("\n");
}

static void

M port/devcons.c => port/devcons.c +2 -0
@@ 771,6 771,8 @@ conswrite(Chan *c, void *va, long n, vlong off)
			print("conswrite: reboot\n");
			exit(0);
		}
		if(strncmp(a, "panic", 5) == 0)
			panic("/dev/reboot");
		break;

	case Qsysstat: