|
@@ -1176,59 +1176,22 @@ _GLOBAL(_mcount)
|
|
|
bctr
|
|
|
|
|
|
_GLOBAL(ftrace_caller)
|
|
|
- /* Based off of objdump optput from glibc */
|
|
|
- stwu r1,-48(r1)
|
|
|
- stw r3, 12(r1)
|
|
|
- stw r4, 16(r1)
|
|
|
- stw r5, 20(r1)
|
|
|
- stw r6, 24(r1)
|
|
|
- mflr r3
|
|
|
- lwz r4, 52(r1)
|
|
|
- mfcr r5
|
|
|
- stw r7, 28(r1)
|
|
|
- stw r8, 32(r1)
|
|
|
- stw r9, 36(r1)
|
|
|
- stw r10,40(r1)
|
|
|
- stw r3, 44(r1)
|
|
|
- stw r5, 8(r1)
|
|
|
+ MCOUNT_SAVE_FRAME
|
|
|
+ /* r3 ends up with link register */
|
|
|
subi r3, r3, MCOUNT_INSN_SIZE
|
|
|
.globl ftrace_call
|
|
|
ftrace_call:
|
|
|
bl ftrace_stub
|
|
|
nop
|
|
|
- lwz r6, 8(r1)
|
|
|
- lwz r0, 44(r1)
|
|
|
- lwz r3, 12(r1)
|
|
|
- mtctr r0
|
|
|
- lwz r4, 16(r1)
|
|
|
- mtcr r6
|
|
|
- lwz r5, 20(r1)
|
|
|
- lwz r6, 24(r1)
|
|
|
- lwz r0, 52(r1)
|
|
|
- lwz r7, 28(r1)
|
|
|
- lwz r8, 32(r1)
|
|
|
- mtlr r0
|
|
|
- lwz r9, 36(r1)
|
|
|
- lwz r10,40(r1)
|
|
|
- addi r1, r1, 48
|
|
|
+
|
|
|
+ MCOUNT_RESTORE_FRAME
|
|
|
+ /* old link register ends up in ctr reg */
|
|
|
bctr
|
|
|
#else
|
|
|
_GLOBAL(mcount)
|
|
|
_GLOBAL(_mcount)
|
|
|
- stwu r1,-48(r1)
|
|
|
- stw r3, 12(r1)
|
|
|
- stw r4, 16(r1)
|
|
|
- stw r5, 20(r1)
|
|
|
- stw r6, 24(r1)
|
|
|
- mflr r3
|
|
|
- lwz r4, 52(r1)
|
|
|
- mfcr r5
|
|
|
- stw r7, 28(r1)
|
|
|
- stw r8, 32(r1)
|
|
|
- stw r9, 36(r1)
|
|
|
- stw r10,40(r1)
|
|
|
- stw r3, 44(r1)
|
|
|
- stw r5, 8(r1)
|
|
|
+
|
|
|
+ MCOUNT_SAVE_FRAME
|
|
|
|
|
|
subi r3, r3, MCOUNT_INSN_SIZE
|
|
|
LOAD_REG_ADDR(r5, ftrace_trace_function)
|
|
@@ -1239,21 +1202,8 @@ _GLOBAL(_mcount)
|
|
|
|
|
|
nop
|
|
|
|
|
|
- lwz r6, 8(r1)
|
|
|
- lwz r0, 44(r1)
|
|
|
- lwz r3, 12(r1)
|
|
|
- mtctr r0
|
|
|
- lwz r4, 16(r1)
|
|
|
- mtcr r6
|
|
|
- lwz r5, 20(r1)
|
|
|
- lwz r6, 24(r1)
|
|
|
- lwz r0, 52(r1)
|
|
|
- lwz r7, 28(r1)
|
|
|
- lwz r8, 32(r1)
|
|
|
- mtlr r0
|
|
|
- lwz r9, 36(r1)
|
|
|
- lwz r10,40(r1)
|
|
|
- addi r1, r1, 48
|
|
|
+ MCOUNT_RESTORE_FRAME
|
|
|
+
|
|
|
bctr
|
|
|
#endif
|
|
|
|