Loading arch/sh/kernel/ftrace.c +24 −0 Original line number Diff line number Diff line /* * Copyright (C) 2008 Matt Fleming <mjf@gentoo.org> * Copyright (C) 2008 Paul Mundt <lethal@linux-sh.org> * * Code for replacing ftrace calls with jumps. * Loading Loading @@ -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 */ Loading Loading
arch/sh/kernel/ftrace.c +24 −0 Original line number Diff line number Diff line /* * Copyright (C) 2008 Matt Fleming <mjf@gentoo.org> * Copyright (C) 2008 Paul Mundt <lethal@linux-sh.org> * * Code for replacing ftrace calls with jumps. * Loading Loading @@ -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 */ Loading