Sorry, please ignore this one. On Thu, Jan 20, 2011 at 3:28 AM, Wu Zhangjin <wuzhangjin@xxxxxxxxx> wrote: > This simply moves the "ip-=4" statement down to the end of the do { ... > } while (...); loop, which reduces one unneeded subtration and the > subsequent memory loading and comparation. as a result, speed up the > function a little. > > Signed-off-by: Wu Zhangjin <wuzhangjin@xxxxxxxxx> > --- > arch/mips/kernel/ftrace.c | 14 +++++++------- > 1 files changed, 7 insertions(+), 7 deletions(-) > > diff --git a/arch/mips/kernel/ftrace.c b/arch/mips/kernel/ftrace.c > index 5a84a1f..635c1dc 100644 > --- a/arch/mips/kernel/ftrace.c > +++ b/arch/mips/kernel/ftrace.c > @@ -200,19 +200,17 @@ unsigned long ftrace_get_parent_addr(unsigned long self_addr, > int faulted; > > /* > - * For module, move the ip from calling site of mcount to the > - * instruction "lui v1, hi_16bit_of_mcount"(offset is 20), but for > - * kernel, move to the instruction "move ra, at"(offset is 12) > + * For module, move the ip from calling site of mcount after the > + * instruction "lui v1, hi_16bit_of_mcount"(offset is 24), but for > + * kernel, move after the instruction "move ra, at"(offset is 16) > */ > - ip = self_addr - (in_module(self_addr) ? 20 : 12); > + ip = self_addr - (in_module(self_addr) ? 24 : 16); > > /* > * search the text until finding the non-store instruction or "s{d,w} > * ra, offset(sp)" instruction > */ > do { > - ip -= 4; > - > /* get the code at "ip": code = *(unsigned int *)ip; */ > safe_load_code(code, ip, faulted); > > @@ -226,7 +224,9 @@ unsigned long ftrace_get_parent_addr(unsigned long self_addr, > if ((code & S_R_SP) != S_R_SP) > return parent_addr; > > - } while (((code & S_RA_SP) != S_RA_SP)); > + /* Move to the next instruction */ > + ip -= 4; > + } while ((code & S_RA_SP) != S_RA_SP); > > sp = fp + (code & OFFSET_MASK); > > -- > 1.7.1 > >