diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2010-04-13 14:12:17 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2010-04-13 14:12:17 +0200 |
commit | 7c7145f6acc68100dbdc5d3c5c64fe3af1c99c89 (patch) | |
tree | 5e93e3eb4787229032f1df222fa490112f4b0c32 /arch/microblaze/kernel/ftrace.c | |
parent | 92d6b71ab906be706f3679353b30a8d2c3831144 (diff) | |
parent | 0d0fb0f9c5fddef4a10242fe3337f00f528a3099 (diff) | |
download | op-kernel-dev-7c7145f6acc68100dbdc5d3c5c64fe3af1c99c89.zip op-kernel-dev-7c7145f6acc68100dbdc5d3c5c64fe3af1c99c89.tar.gz |
Merge branch 'linus' into irq/core
Reason: Get the upstream IRQF_DISABLED related changes.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/microblaze/kernel/ftrace.c')
-rw-r--r-- | arch/microblaze/kernel/ftrace.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/arch/microblaze/kernel/ftrace.c b/arch/microblaze/kernel/ftrace.c index 388b31c..515feb4 100644 --- a/arch/microblaze/kernel/ftrace.c +++ b/arch/microblaze/kernel/ftrace.c @@ -151,13 +151,10 @@ int ftrace_make_nop(struct module *mod, return ret; } -static int ret_addr; /* initialized as 0 by default */ - /* I believe that first is called ftrace_make_nop before this function */ int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) { int ret; - ret_addr = addr; /* saving where the barrier jump is */ pr_debug("%s: addr:0x%x, rec->ip: 0x%x, imm:0x%x\n", __func__, (unsigned int)addr, (unsigned int)rec->ip, imm); ret = ftrace_modify_code(rec->ip, imm); @@ -194,12 +191,9 @@ int ftrace_update_ftrace_func(ftrace_func_t func) ret = ftrace_modify_code(ip, upper); ret += ftrace_modify_code(ip + 4, lower); - /* We just need to remove the rtsd r15, 8 by NOP */ - BUG_ON(!ret_addr); - if (ret_addr) - ret += ftrace_modify_code(ret_addr, MICROBLAZE_NOP); - else - ret = 1; /* fault */ + /* We just need to replace the rtsd r15, 8 with NOP */ + ret += ftrace_modify_code((unsigned long)&ftrace_caller, + MICROBLAZE_NOP); /* All changes are done - lets do caches consistent */ flush_icache(); |