xref: /original-bsd/sys/hp300/scripts/xbt (revision 00695d63)
1# hp300 version of the script to dump out the kernel stack of
2# a process
3#
4# usage: xbt procp
5#
6#	@(#)xbt	8.2 (Berkeley) 04/24/95
7
8set $maxargs = 4
9
10define xbt
11
12	set $usrstack = (unsigned long *) &kstack
13
14	set $p = (struct proc *) $arg0
15	set $paddr = $p->p_addr
16	set $fix = (unsigned long *) $paddr - $usrstack
17	set $paddr = (struct user *)$paddr
18	set $xfp = (unsigned long *) $paddr->u_pcb.pcb_regs[0xa]
19	set $xpc = (unsigned long *) $paddr->u_pcb.pcb_regs[0xb]
20
21	printf "Process %s\n", &($p->p_comm[0])
22	while ($xfp > $usrstack)
23
24		set $xfp += $fix
25		printf "Function:\t"
26		p/a $xpc
27
28		set $i = 0
29		printf "\tArgs:\t"
30		while ($i < $maxargs)
31			set $arg = (unsigned long *) $xfp[$i + 2]
32			if ($arg > $usrstack)
33				set $arg += $fix
34			end
35			printf "%#x\t", (unsigned long) $arg
36			set $i++
37		end
38		printf "\n"
39
40		set $xpc = $xfp[1]
41		set $xfp = (unsigned long *) $xfp[0]
42
43	end
44end
45