Ignore:
Timestamp:
2010-05-12T23:55:14Z (14 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
989d3c2
Parents:
9929742
Message:

sparc64 kernel hooks for stack tracing.

File:
1 edited

Legend:

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

    r9929742 r08c88b84  
    3737#include <typedefs.h>
    3838
     39#include <arch/stack.h>
     40
     41#define FRAME_OFFSET_FP_PREV    14
     42#define FRAME_OFFSET_RA         15
     43
     44extern void alloc_window_and_flush(void);
     45
    3946bool kernel_frame_pointer_validate(uintptr_t fp)
    4047{
    41         return false;
     48        return fp != 0;
    4249}
    4350
    4451bool kernel_frame_pointer_prev(uintptr_t fp, uintptr_t *prev)
    4552{
    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;
    4757}
    4858
    4959bool kernel_return_address_get(uintptr_t fp, uintptr_t *ra)
    5060{
    51         return false;
     61        uint64_t *stack = (void *) fp;
     62        alloc_window_and_flush();
     63        *ra = stack[FRAME_OFFSET_RA];
     64        return true;
    5265}
    5366
Note: See TracChangeset for help on using the changeset viewer.