Messages in this thread | | | Date | Thu, 12 Feb 2009 23:20:25 -0500 (EST) | From | Steven Rostedt <> | Subject | Re: [PATCH 3/7][RFC] powerpc64, tracing: add function graph tracer with dynamic tracing |
| |
On Fri, 13 Feb 2009, Benjamin Herrenschmidt wrote:
> > > @@ -55,8 +56,9 @@ static unsigned char *ftrace_call_replace(unsigned > > long ip, unsigned long addr) > > */ > > addr = GET_ADDR(addr); > > > > - /* Set to "bl addr" */ > > - op = 0x48000001 | (ftrace_calc_offset(ip, addr) & 0x03fffffc); > > + /* if (link) set op to 'bl' else 'b' */ > > + op = 0x48000000 | (link ? 1 : 0); > > + op |= (ftrace_calc_offset(ip, addr) & 0x03fffffc); > > Any reason why you aren't using the code in > arch/powerpc/lib/code-patching.c here ? > > > new = ftrace_call_replace(ip, stub, 0); > > + memcpy(old, new, MCOUNT_INSN_SIZE); > > + new = ftrace_call_replace(ip, addr, 0); > > + > > + return ftrace_modify_code(ip, old, new); > > +} > > Heh, memcpy of 4 bytes :-) I hope gcc is smart enough to turn that into > a simple load/store ..
hehe, I hated writing that. I just did not want to touch the (already working code) of the dynamic ftrace. I guess I could still use longs and then typecast them to char pointers for the ftrace_modify_code.
Thanks,
-- Steve
| |