From e0416bb8b1154ef0b51af4b3648f219b79e94914 Mon Sep 17 00:00:00 2001 From: Paul Mundt Date: Mon, 8 Dec 2008 12:02:28 +0900 Subject: [PATCH] --- yaml --- r: 120099 b: refs/heads/master c: b5cfeac990cc164a3d3422aab88ac5b138fa822d h: refs/heads/master i: 120097: 3919170fe2cf7ce124b2d891c59266ee08785c78 120095: 64bc05008327b9f596c6401dcc448c6bea8ac8c3 v: v3 --- [refs] | 2 +- trunk/arch/sh/kernel/ftrace.c | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 24b12467905e..06880f563155 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4bc3e7192cf9a47d9864c4e8259859be55a480b3 +refs/heads/master: b5cfeac990cc164a3d3422aab88ac5b138fa822d diff --git a/trunk/arch/sh/kernel/ftrace.c b/trunk/arch/sh/kernel/ftrace.c index 6c193d56c2e7..4c3247477aa3 100644 --- a/trunk/arch/sh/kernel/ftrace.c +++ b/trunk/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 */