~jakub/helenos/ia64-revival

« back to all changes in this revision

Viewing changes to kernel/arch/amd64/src/debug/stacktrace.c

  • Committer: Jakub Jermar
  • Date: 2011-04-13 14:45:41 UTC
  • mfrom: (527.1.397 main-clone)
  • Revision ID: jakub@jermar.eu-20110413144541-x0j3r1zxqhsljx1o
MergeĀ mainlineĀ changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
#define FRAME_OFFSET_FP_PREV  0
40
40
#define FRAME_OFFSET_RA       1
41
41
 
42
 
bool kernel_frame_pointer_validate(uintptr_t fp)
 
42
bool kernel_stack_trace_context_validate(stack_trace_context_t *ctx)
43
43
{
44
 
        return fp != 0;
 
44
        return ctx->fp != 0;
45
45
}
46
46
 
47
 
bool kernel_frame_pointer_prev(uintptr_t fp, uintptr_t *prev)
 
47
bool kernel_frame_pointer_prev(stack_trace_context_t *ctx, uintptr_t *prev)
48
48
{
49
 
        uint64_t *stack = (void *) fp;
 
49
        uint64_t *stack = (void *) ctx->fp;
50
50
        *prev = stack[FRAME_OFFSET_FP_PREV];
51
51
        
52
52
        return true;
53
53
}
54
54
 
55
 
bool kernel_return_address_get(uintptr_t fp, uintptr_t *ra)
 
55
bool kernel_return_address_get(stack_trace_context_t *ctx, uintptr_t *ra)
56
56
{
57
 
        uint64_t *stack = (void *) fp;
 
57
        uint64_t *stack = (void *) ctx->fp;
58
58
        *ra = stack[FRAME_OFFSET_RA];
59
59
        
60
60
        return true;
61
61
}
62
62
 
63
 
bool uspace_frame_pointer_validate(uintptr_t fp)
 
63
bool uspace_stack_trace_context_validate(stack_trace_context_t *ctx)
64
64
{
65
 
        return fp != 0;
 
65
        return ctx->fp != 0;
66
66
}
67
67
 
68
 
bool uspace_frame_pointer_prev(uintptr_t fp, uintptr_t *prev)
 
68
bool uspace_frame_pointer_prev(stack_trace_context_t *ctx, uintptr_t *prev)
69
69
{
70
70
        return !copy_from_uspace((void *) prev,
71
 
            (uint64_t *) fp + FRAME_OFFSET_FP_PREV, sizeof(*prev));
 
71
            (uint64_t *) ctx->fp + FRAME_OFFSET_FP_PREV, sizeof(*prev));
72
72
}
73
73
 
74
 
bool uspace_return_address_get(uintptr_t fp, uintptr_t *ra)
 
74
bool uspace_return_address_get(stack_trace_context_t *ctx, uintptr_t *ra)
75
75
{
76
 
        return !copy_from_uspace((void *) ra, (uint64_t *) fp + FRAME_OFFSET_RA,
77
 
            sizeof(*ra));
 
76
        return !copy_from_uspace((void *) ra,
 
77
            (uint64_t *) ctx->fp + FRAME_OFFSET_RA, sizeof(*ra));
78
78
}
79
79
 
80
80
/** @}