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 12 typedef unsigned int reg_t; 13 14 extern reg_t get_bp(void); 15 16 void util_stacktrace(void) 17 { 18 #if USE_SYSDEBUG 19 reg_t bp, pc, hbp; 20 21 bp= get_bp(); 22 while(bp) 23 { 24 pc= ((reg_t *)bp)[1]; 25 hbp= ((reg_t *)bp)[0]; 26 printf("0x%lx ", (unsigned long) pc); 27 if (hbp != 0 && hbp <= bp) 28 { 29 printf("0x%lx ", (unsigned long) -1); 30 break; 31 } 32 bp= hbp; 33 } 34 printf("\n"); 35 #endif /* USE_SYSDEBUG */ 36 } 37 38