From b5cfeac990cc164a3d3422aab88ac5b138fa822d Mon Sep 17 00:00:00 2001 From: Paul Mundt Date: Mon, 8 Dec 2008 12:02:28 +0900 Subject: sh: Provide ftrace_make_call()/ftrace_make_nop(). Signed-off-by: Paul Mundt --- arch/sh/kernel/ftrace.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'arch/sh/kernel/ftrace.c') diff --git a/arch/sh/kernel/ftrace.c b/arch/sh/kernel/ftrace.c index 6c193d56c2e..4c3247477aa 100644 --- a/arch/sh/kernel/ftrace.c +++ b/arch/sh/kernel/ftrace.c @@ -1,5 +1,6 @@ /* * Copyright (C) 2008 Matt Fleming + * Copyright (C) 2008 Paul Mundt * * Code for replacing ftrace calls with jumps. * @@ -100,6 +101,29 @@ int ftrace_update_ftrace_func(ftrace_func_t func) return ftrace_modify_code(ip + MCOUNT_INSN_OFFSET, old, new); } +int ftrace_make_nop(struct module *mod, + struct dyn_ftrace *rec, unsigned long addr) +{ + unsigned char *new, *old; + unsigned long ip = rec->ip; + + old = ftrace_call_replace(ip, addr); + new = ftrace_nop_replace(); + + return ftrace_modify_code(rec->ip, old, new); +} + +int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) +{ + unsigned char *new, *old; + unsigned long ip = rec->ip; + + old = ftrace_nop_replace(); + new = ftrace_call_replace(ip, addr); + + return ftrace_modify_code(rec->ip, old, new); +} + int __init ftrace_dyn_arch_init(void *data) { /* The return code is retured via data */ -- cgit v1.2.3