Changes in kernel/arch/sparc64/src/debug/stacktrace.c [819a768:d99c1d2] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/src/debug/stacktrace.c
r819a768 rd99c1d2 37 37 #include <typedefs.h> 38 38 39 #include <arch.h>40 #include <arch/stack.h>41 #include <arch/trap/trap_table.h>42 43 #if defined(SUN4V)44 #include <arch/sun4v/arch.h>45 #endif46 47 #define FRAME_OFFSET_FP_PREV 1448 #define FRAME_OFFSET_RA 1549 50 extern void alloc_window_and_flush(void);51 52 39 bool kernel_frame_pointer_validate(uintptr_t fp) 53 40 { 54 uintptr_t kstack; 55 56 #if defined(SUN4U) 57 kstack = read_from_ag_g6(); 58 #elif defined(SUN4V) 59 kstack = asi_u64_read(ASI_SCRATCHPAD, SCRATCHPAD_KSTACK); 60 #endif 61 62 kstack += STACK_BIAS; 63 kstack -= PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE; 64 65 if (THREAD && (fp == kstack)) 66 return false; 67 return fp != 0; 41 return false; 68 42 } 69 43 70 44 bool kernel_frame_pointer_prev(uintptr_t fp, uintptr_t *prev) 71 45 { 72 uint64_t *stack = (void *) fp; 73 alloc_window_and_flush(); 74 *prev = stack[FRAME_OFFSET_FP_PREV] + STACK_BIAS; 75 return true; 46 return false; 76 47 } 77 48 78 49 bool kernel_return_address_get(uintptr_t fp, uintptr_t *ra) 79 50 { 80 uint64_t *stack = (void *) fp; 81 alloc_window_and_flush(); 82 *ra = stack[FRAME_OFFSET_RA]; 83 return true; 51 return false; 84 52 } 85 53
Note:
See TracChangeset
for help on using the changeset viewer.