Messages in this thread | | | Date | Wed, 25 Mar 2009 08:36:02 +0000 | From | Russell King - ARM Linux <> | Subject | Re: Anyone working on ftrace function graph support on ARM? |
| |
On Tue, Mar 24, 2009 at 11:14:39PM +0100, Ingo Molnar wrote: > So the rule is: mcount must not destroy _any_ register state. > (beyond flags)
As has already been discussed on the ARM lists, we have a problem with using mcount along with EABI, or OABI without frame pointers. We can not avoid destroying 'lr' - the return address for the function.
OABI works around this by assuming that the parent function saved a stack frame, which means it's at a known offset from the frame pointer (provided frame pointers are enabled.) mcount reloads 'lr' before returning:
ENTRY(mcount) stmdb sp!, {r0-r3, lr} mov r0, lr sub r0, r0, #MCOUNT_INSN_SIZE
.globl mcount_call mcount_call: bl ftrace_stub ldr lr, [fp, #-4] @ restore lr ldmia sp!, {r0-r3, pc}
So I think if Tim is expecting to be able to use this feature on EABI kernels, he's going to struggle.
| |