xref: /minix/minix/lib/libsys/stacktrace.c (revision 9f988b79)
1 /*
2 stacktrace.c
3 
4 Created:	Jan 19, 1993 by Philip Homburg
5 
6 Copyright 1995 Philip Homburg
7 */
8 
9 #include <stdio.h>
10 #include <string.h>
11 #include <minix/sysutil.h>
12 
13 typedef unsigned int reg_t;
14 
15 extern reg_t get_bp(void);
16 
17 void util_stacktrace(void)
18 {
19 #if USE_SYSDEBUG
20 	reg_t bp, pc, hbp;
21 
22 	bp= get_bp();
23 	while(bp)
24 	{
25 		pc= ((reg_t *)bp)[1];
26 		hbp= ((reg_t *)bp)[0];
27 		printf("0x%lx ", (unsigned long) pc);
28 		if (hbp != 0 && hbp <= bp)
29 		{
30 			printf("0x%lx ", (unsigned long) -1);
31 			break;
32 		}
33 		bp= hbp;
34 	}
35 	printf("\n");
36 #endif /* USE_SYSDEBUG */
37 }
38 
39