Changes in kernel/arch/amd64/src/debug/stacktrace.c [65914ac:d99c1d2] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/amd64/src/debug/stacktrace.c
r65914ac rd99c1d2 37 37 #include <typedefs.h> 38 38 39 #define FRAME_OFFSET_FP_PREV 40 #define FRAME_OFFSET_RA 39 #define FRAME_OFFSET_FP_PREV 0 40 #define FRAME_OFFSET_RA 1 41 41 42 bool kernel_ stack_trace_context_validate(stack_trace_context_t *ctx)42 bool kernel_frame_pointer_validate(uintptr_t fp) 43 43 { 44 return ctx->fp != 0;44 return fp != 0; 45 45 } 46 46 47 bool kernel_frame_pointer_prev( stack_trace_context_t *ctx, uintptr_t *prev)47 bool kernel_frame_pointer_prev(uintptr_t fp, uintptr_t *prev) 48 48 { 49 uint64_t *stack = (void *) ctx->fp;49 uint64_t *stack = (void *) fp; 50 50 *prev = stack[FRAME_OFFSET_FP_PREV]; 51 52 51 return true; 53 52 } 54 53 55 bool kernel_return_address_get( stack_trace_context_t *ctx, uintptr_t *ra)54 bool kernel_return_address_get(uintptr_t fp, uintptr_t *ra) 56 55 { 57 uint64_t *stack = (void *) ctx->fp;56 uint64_t *stack = (void *) fp; 58 57 *ra = stack[FRAME_OFFSET_RA]; 59 60 58 return true; 61 59 } 62 60 63 bool uspace_ stack_trace_context_validate(stack_trace_context_t *ctx)61 bool uspace_frame_pointer_validate(uintptr_t fp) 64 62 { 65 return ctx->fp != 0;63 return fp != 0; 66 64 } 67 65 68 bool uspace_frame_pointer_prev( stack_trace_context_t *ctx, uintptr_t *prev)66 bool uspace_frame_pointer_prev(uintptr_t fp, uintptr_t *prev) 69 67 { 70 68 return !copy_from_uspace((void *) prev, 71 (uint64_t *) ctx->fp + FRAME_OFFSET_FP_PREV, sizeof(*prev));69 (uint64_t *) fp + FRAME_OFFSET_FP_PREV, sizeof(*prev)); 72 70 } 73 71 74 bool uspace_return_address_get( stack_trace_context_t *ctx, uintptr_t *ra)72 bool uspace_return_address_get(uintptr_t fp, uintptr_t *ra) 75 73 { 76 return !copy_from_uspace((void *) ra, 77 (uint64_t *) ctx->fp + FRAME_OFFSET_RA,sizeof(*ra));74 return !copy_from_uspace((void *) ra, (uint64_t *) fp + FRAME_OFFSET_RA, 75 sizeof(*ra)); 78 76 } 79 77
Note:
See TracChangeset
for help on using the changeset viewer.