Re: [PATCH 5/5] IA64 dynamic ftrace support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Dec 24, 2008 at 09:00:24AM +0800, Steven Rostedt wrote:
> 
> On Wed, 2008-12-24 at 08:54 +0800, Shaohua Li wrote:
> 
> > 
> > > > +static unsigned char *ftrace_nop_replace(void)
> > > > +{
> > > > +     return ftrace_nop_code;
> > > > +}
> > > > +
> > > > +/* In IA64, each function will be added below two bundles with -pg option */
> > > > +static unsigned char __attribute__((aligned(8)))
> > > > +ftrace_call_code[MCOUNT_INSN_SIZE] = {
> > > > +     0x02, 0x40, 0x31, 0x10, 0x80, 0x05, /* alloc r40=ar.pfs,12,8,0 */
> > > > +     0xb0, 0x02, 0x00, 0x00, 0x42, 0x40, /* mov r43=r0;; */
> > > > +     0x05, 0x00, 0xc4, 0x00,             /* mov r42=b0 */
> > > > +     0x11, 0x48, 0x01, 0x02, 0x00, 0x21, /* mov r41=r1 */
> > > > +     0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* nop.i 0x0 */
> > > 
> > > If you made your own PLT stub, could you just change the one line to
> > > jump to that stub?
> > A simple jump to PLT stub doesn't work in IA64, as a lot of registers
> > should be saved. I'll do more investigation.
> 
> So the registers are different depending on what function is called?
> That is, you would have to change more than one of these lines if you
> were to change it from calling _mcount to calling ftrace_stub?
Yes, module has different gp register against kernel. Before jump to
kernel, the register must be saved.
We need insert trampoline code in each module. The code should do the
register save and jump to ftrace_caller. Add a weak function in module.h
seems ok for the trampoline code, but I don't know how to find the
function address.

Thanks,
Shaohua
--
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Sparc Linux]     [DCCP]     [Linux ARM]     [Yosemite News]     [Linux SCSI]     [Linux x86_64]     [Linux for Ham Radio]

  Powered by Linux