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