Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ppc32/src/debug/stacktrace.c

    rd99c1d2 rda1bafb  
    3737#include <typedefs.h>
    3838
     39#define FRAME_OFFSET_FP_PREV  0
     40#define FRAME_OFFSET_RA       1
     41
    3942bool kernel_frame_pointer_validate(uintptr_t fp)
    4043{
    41         return false;
     44        return fp != 0;
    4245}
    4346
    4447bool kernel_frame_pointer_prev(uintptr_t fp, uintptr_t *prev)
    4548{
    46         return false;
     49        uint32_t *stack = (void *) fp;
     50        *prev = stack[FRAME_OFFSET_FP_PREV];
     51        return true;
    4752}
    4853
    4954bool kernel_return_address_get(uintptr_t fp, uintptr_t *ra)
    5055{
    51         return false;
     56        uint32_t *stack = (void *) fp;
     57        *ra = stack[FRAME_OFFSET_RA];
     58        return true;
    5259}
    5360
    5461bool uspace_frame_pointer_validate(uintptr_t fp)
    5562{
    56         return false;
     63        return fp != 0;
    5764}
    5865
    5966bool uspace_frame_pointer_prev(uintptr_t fp, uintptr_t *prev)
    6067{
    61         return false;
     68        return !copy_from_uspace((void *) prev,
     69            (uint32_t *) fp + FRAME_OFFSET_FP_PREV, sizeof(*prev));
    6270}
    6371
    6472bool uspace_return_address_get(uintptr_t fp, uintptr_t *ra)
    6573{
    66         return false;
     74        return !copy_from_uspace((void *) ra, (uint32_t *) fp + FRAME_OFFSET_RA,
     75            sizeof(*ra));
    6776}
    6877
Note: See TracChangeset for help on using the changeset viewer.