On Wed, May 14, 2008 at 10:28:57PM -0700, David Miller wrote: > From: Steven Rostedt <[EMAIL PROTECTED]> > Date: Wed, 14 May 2008 23:49:44 -0400 > > > +#ifdef CONFIG_FTRACE > > +#ifdef CONFIG_DYNAMIC_FTRACE > > +_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 > > + stw r7, 28(r1) > > + mfcr r5 > > + stw r8, 32(r1) > > + stw r9, 36(r1) > > + stw r10,40(r1) > > + stw r3, 44(r1) > > + stw r5, 8(r1) > > Yikes, that's really expensive. > > Can't you do a tail call and let the function you end > up calling do all the callee-saved register pops onto > the stack?
The PPC32 ABI seems to (unfortunately) suggest that, with mcount, all registers are callee-saved (except for the modifiable-during-function-linkage registers like r0, r11, and r12) -- so mcount has to save the registers that the callee won't (because they're normally volatile). -Scott _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev