From 8d8dcee63c099301bc594012cf50368e95b103b2 Mon Sep 17 00:00:00 2001 From: Wu Zhangjin Date: Fri, 14 May 2010 19:08:30 +0800 Subject: [PATCH] --- yaml --- r: 200822 b: refs/heads/master c: 3a2af2dc1bcbfe86b1f39e9e5f9c2c5447943f16 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/mips/kernel/ftrace.c | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index f753733e4468..8c6278312853 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 56b49cd35fd56e29adb8f97ba051a1670d24d133 +refs/heads/master: 3a2af2dc1bcbfe86b1f39e9e5f9c2c5447943f16 diff --git a/trunk/arch/mips/kernel/ftrace.c b/trunk/arch/mips/kernel/ftrace.c index e9e64e0ff7aa..37aa7677e76d 100644 --- a/trunk/arch/mips/kernel/ftrace.c +++ b/trunk/arch/mips/kernel/ftrace.c @@ -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) {