diff options
author | 2018-02-13 13:13:20 +0800 | |
---|---|---|
committer | 2018-04-02 19:59:13 -0700 | |
commit | aea4c671fb985e6a9ffc365c43ea6f5e0d737fea (patch) | |
tree | 457b661c7f4967fe2e02a708975bacc8d48a311b /arch/riscv/kernel/ftrace.c | |
parent | riscv/ftrace: Add ARCH_SUPPORTS_FTRACE_OPS support (diff) | |
download | linux-aea4c671fb985e6a9ffc365c43ea6f5e0d737fea.tar.gz linux-aea4c671fb985e6a9ffc365c43ea6f5e0d737fea.tar.bz2 linux-aea4c671fb985e6a9ffc365c43ea6f5e0d737fea.zip |
riscv/ftrace: Add DYNAMIC_FTRACE_WITH_REGS support
Cc: Greentime Hu <greentime@andestech.com>
Signed-off-by: Alan Kao <alankao@andestech.com>
Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
Diffstat (limited to 'arch/riscv/kernel/ftrace.c')
-rw-r--r-- | arch/riscv/kernel/ftrace.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/riscv/kernel/ftrace.c b/arch/riscv/kernel/ftrace.c index 5bbe1afd9463..48b5353691c3 100644 --- a/arch/riscv/kernel/ftrace.c +++ b/arch/riscv/kernel/ftrace.c @@ -106,6 +106,23 @@ int __init ftrace_dyn_arch_init(void) } #endif +#ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS +int ftrace_modify_call(struct dyn_ftrace *rec, unsigned long old_addr, + unsigned long addr) +{ + unsigned int call[2]; + int ret; + + make_call(rec->ip, old_addr, call); + ret = ftrace_check_current_call(rec->ip, call); + + if (ret) + return ret; + + return __ftrace_modify_call(rec->ip, addr, true); +} +#endif + #ifdef CONFIG_FUNCTION_GRAPH_TRACER /* * Most of this function is copied from arm64. |