diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2009-12-22 12:53:17 -0500 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2009-12-22 21:54:00 -0500 |
commit | 0ee3adb42f2f6d8bffe177e77a415b3a74f3a777 (patch) | |
tree | eee5b153d29e3a16a2574a45e4f57a676229a0d3 /runtime | |
parent | 93c8419165a7c651989cc344364b86695e1f142c (diff) | |
download | systemtap-steved-0ee3adb42f2f6d8bffe177e77a415b3a74f3a777.tar.gz systemtap-steved-0ee3adb42f2f6d8bffe177e77a415b3a74f3a777.tar.xz systemtap-steved-0ee3adb42f2f6d8bffe177e77a415b3a74f3a777.zip |
ppc stack: transcribe portions of modern kernel ppc/.../asm/ptrace.h
* runtime/stack-ppc.c (__stp_stack_print): Define STACK_FRAME_LR_SAVE,
STACK_FRAME_REGS_MARKER,STACK_FRAME_MARKER, etc.
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) { |