summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2009-12-22 12:53:17 -0500
committerFrank Ch. Eigler <fche@elastic.org>2009-12-22 21:54:00 -0500
commit0ee3adb42f2f6d8bffe177e77a415b3a74f3a777 (patch)
treeeee5b153d29e3a16a2574a45e4f57a676229a0d3 /runtime
parent93c8419165a7c651989cc344364b86695e1f142c (diff)
downloadsystemtap-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.c18
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) {