git-svn-id: svn://svn.valgrind.org/vex/trunk@950
// save LR
" mflr %r0\n"
-" stw %r0, 4(%r1)\n"
+" stw %r0,260(%r1)\n"
+
+// leave hole @ 4(%r1) for a caller to save it's LR
+// no params
+// no local vars
+// no need to save non-volatile CR fields
// store registers to stack: just the callee-saved regs
" stw %r13, 8(%r1)\n"
" lis %r5,res@ha\n"
" stw %r3,res@l(%r5)\n"
-// restore LR
-" lwz %r0, 4(%r1)\n"
-" mtlr %r0\n"
-
// reload registers from stack
" lwz %r13, 8(%r1)\n"
" lwz %r14, 12(%r1)\n"
" lwz %r30, 76(%r1)\n"
" lwz %r31, 80(%r1)\n"
-// restore stack pointer
-" lwz %r1,0(%r1)\n"
+// restore LR
+" lwz %r0,260(%r1)\n"
+" mtlr %r0\n"
+
+// restore previous stack pointer
+" addi %r1,%r1,256\n"
-// return in usual way
+// return
" blr"
);