Changeset 382fb4ba in mainline for kernel/arch/sparc32/src/debug/stacktrace.c
- Timestamp:
- 2013-12-10T22:33:33Z (11 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f7a33de
- Parents:
- 2955bb9
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc32/src/debug/stacktrace.c
r2955bb9 r382fb4ba 1 1 /* 2 2 * Copyright (c) 2010 Jakub Jermar 3 * Copyright (c) 2013 Jakub Klama 3 4 * All rights reserved. 4 5 * … … 27 28 */ 28 29 29 /** @addtogroup abs32le30 /** @addtogroup sparc32 30 31 * @{ 31 32 */ … … 37 38 #include <typedefs.h> 38 39 40 #include <arch.h> 41 #include <arch/stack.h> 42 43 #define FRAME_OFFSET_FP_PREV 14 44 #define FRAME_OFFSET_RA 15 45 46 extern void alloc_window_and_flush(void); 47 39 48 bool kernel_stack_trace_context_validate(stack_trace_context_t *ctx) 40 49 { 41 return true; 50 uintptr_t kstack; 51 uint32_t l1, l2; 52 53 read_from_invalid(&kstack, &l1, &l2); 54 kstack -= 128; 55 56 if (THREAD && (ctx->fp == kstack)) 57 return false; 58 return ctx->fp != 0; 42 59 } 43 60 44 61 bool kernel_frame_pointer_prev(stack_trace_context_t *ctx, uintptr_t *prev) 45 62 { 63 uint64_t *stack = (void *) ctx->fp; 64 alloc_window_and_flush(); 65 *prev = stack[FRAME_OFFSET_FP_PREV]; 46 66 return true; 47 67 } … … 49 69 bool kernel_return_address_get(stack_trace_context_t *ctx, uintptr_t *ra) 50 70 { 71 uint64_t *stack = (void *) ctx->fp; 72 alloc_window_and_flush(); 73 *ra = stack[FRAME_OFFSET_RA]; 51 74 return true; 52 75 } … … 54 77 bool uspace_stack_trace_context_validate(stack_trace_context_t *ctx) 55 78 { 56 return true;79 return false; 57 80 } 58 81 59 82 bool uspace_frame_pointer_prev(stack_trace_context_t *ctx, uintptr_t *prev) 60 83 { 61 return true;84 return false; 62 85 } 63 86 64 bool uspace_return_address_get(stack_trace_context_t *ctx , uintptr_t *ra)87 bool uspace_return_address_get(stack_trace_context_t *ctx , uintptr_t *ra) 65 88 { 66 return true; 67 } 68 69 uintptr_t frame_pointer_get(void) 70 { 71 return 0; 72 } 73 74 uintptr_t program_counter_get(void) 75 { 76 return 0; 89 return false; 77 90 } 78 91
Note:
See TracChangeset
for help on using the changeset viewer.