diff options
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/stack-ppc.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/runtime/stack-ppc.c b/runtime/stack-ppc.c index 9670d06f..a9ff26ac 100644 --- a/runtime/stack-ppc.c +++ b/runtime/stack-ppc.c @@ -21,6 +21,24 @@ static void __stp_stack_print (struct pt_regs *regs, int verbose, int levels, return; _sp = (unsigned long *) sp; newsp = _sp[0]; +#ifndef STACK_FRAME_LR_SAVE /* from arch/powerpc/include/asm/ptrace.h */ +#ifdef __powerpc64__ +#define STACK_FRAME_OVERHEAD 112 /* size of minimum stack frame */ +#define STACK_FRAME_LR_SAVE 2 /* Location of LR in stack frame */ +#define STACK_FRAME_REGS_MARKER ASM_CONST(0x7265677368657265) +#define STACK_INT_FRAME_SIZE (sizeof(struct pt_regs) + STACK_FRAME_OVERHEAD + 288) +#define STACK_FRAME_MARKER 12 +#define __SIGNAL_FRAMESIZE 128 +#define __SIGNAL_FRAMESIZE32 64 +#else /* __powerpc64__ */ +#define STACK_FRAME_OVERHEAD 16 /* size of minimum stack frame */ +#define STACK_FRAME_LR_SAVE 1 /* Location of LR in stack frame */ +#define STACK_FRAME_REGS_MARKER ASM_CONST(0x72656773) +#define STACK_INT_FRAME_SIZE (sizeof(struct pt_regs) + STACK_FRAME_OVERHEAD) +#define STACK_FRAME_MARKER 2 +#define __SIGNAL_FRAMESIZE 64 +#endif +#endif ip = _sp[STACK_FRAME_LR_SAVE]; if (!firstframe || ip != lr) { if (verbose) { |