mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-18 15:09:53 +00:00
MIPS, Tracing: Speed up function graph tracer
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 comparison. Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com> Cc: Steven Rostedt <srostedt@redhat.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/2006/ Signed-off-by: Ralf Baechle <ralf@duck.linux-mips.net>
This commit is contained in:
parent
52bd080d5c
commit
9a620a559b
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user