mirror of
https://github.com/torvalds/linux.git
synced 2024-11-02 18:21:49 +00:00
MIPS: Tracing: Fix 32-bit support with -mmcount-ra-address
For 32-bit kernel the -mmcount-ra-address option of gcc 4.5 emits one extra instruction before calling to _mcount so we need to use a different "b 1f" for it. Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com> Cc: linux-mips <linux-mips@linux-mips.org> Cc: David Daney <david.s.daney@gmail.com> Patchwork: http://patchwork.linux-mips.org/patch/1228/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
56b49cd35f
commit
3a2af2dc1b
@ -62,14 +62,26 @@ int ftrace_make_nop(struct module *mod,
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
#if defined(KBUILD_MCOUNT_RA_ADDRESS) && defined(CONFIG_32BIT)
|
||||
/* lui v1, hi_16bit_of_mcount --> b 1f (0x10000005)
|
||||
* addiu v1, v1, low_16bit_of_mcount
|
||||
* move at, ra
|
||||
* move $12, ra_address
|
||||
* jalr v1
|
||||
* sub sp, sp, 8
|
||||
* 1: offset = 5 instructions
|
||||
*/
|
||||
new = 0x10000005;
|
||||
#else
|
||||
/* lui v1, hi_16bit_of_mcount --> b 1f (0x10000004)
|
||||
* addiu v1, v1, low_16bit_of_mcount
|
||||
* move at, ra
|
||||
* jalr v1
|
||||
* nop
|
||||
* 1f: (ip + 12)
|
||||
* nop | move $12, ra_address | sub sp, sp, 8
|
||||
* 1: offset = 4 instructions
|
||||
*/
|
||||
new = 0x10000004;
|
||||
#endif
|
||||
} else {
|
||||
/* record/calculate it for ftrace_make_call */
|
||||
if (jal_mcount == 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user