Changeset 08c88b84 in mainline
- Timestamp:
- 2010-05-12T23:55:14Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 989d3c2
- Parents:
- 9929742
- Location:
- kernel/arch/sparc64/src/debug
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/src/debug/stacktrace.c
r9929742 r08c88b84 37 37 #include <typedefs.h> 38 38 39 #include <arch/stack.h> 40 41 #define FRAME_OFFSET_FP_PREV 14 42 #define FRAME_OFFSET_RA 15 43 44 extern void alloc_window_and_flush(void); 45 39 46 bool kernel_frame_pointer_validate(uintptr_t fp) 40 47 { 41 return f alse;48 return fp != 0; 42 49 } 43 50 44 51 bool kernel_frame_pointer_prev(uintptr_t fp, uintptr_t *prev) 45 52 { 46 return false; 53 uint64_t *stack = (void *) fp; 54 alloc_window_and_flush(); 55 *prev = stack[FRAME_OFFSET_FP_PREV] + STACK_BIAS; 56 return true; 47 57 } 48 58 49 59 bool kernel_return_address_get(uintptr_t fp, uintptr_t *ra) 50 60 { 51 return false; 61 uint64_t *stack = (void *) fp; 62 alloc_window_and_flush(); 63 *ra = stack[FRAME_OFFSET_RA]; 64 return true; 52 65 } 53 66 -
kernel/arch/sparc64/src/debug/stacktrace_asm.S
r9929742 r08c88b84 27 27 # 28 28 29 #include <arch/stack.h> 30 29 31 .text 30 32 31 33 .global frame_pointer_get 32 34 .global program_counter_get 35 .global alloc_window_and_flush 33 36 34 37 frame_pointer_get: 38 # Add the stack bias to %sp to get the actual address. 35 39 retl 36 nop40 add %sp, STACK_BIAS, %o0 37 41 38 42 program_counter_get: 39 43 retl 40 nop44 mov %o7, %o0 41 45 46 alloc_window_and_flush: 47 save %sp, -(STACK_WINDOW_SAVE_AREA_SIZE+STACK_ARG_SAVE_AREA_SIZE), %sp 48 # Flush all other windows to memory so that we can read their contents. 49 flushw 50 ret 51 restore 52
Note:
See TracChangeset
for help on using the changeset viewer.