|
@@ -14,6 +14,7 @@
|
|
|
|
|
|
#include <linux/ftrace.h>
|
|
|
#include <linux/uaccess.h>
|
|
|
+#include <linux/module.h>
|
|
|
|
|
|
#include <asm/cacheflush.h>
|
|
|
#include <asm/opcodes.h>
|
|
@@ -63,6 +64,18 @@ static unsigned long adjust_address(struct dyn_ftrace *rec, unsigned long addr)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+int ftrace_arch_code_modify_prepare(void)
|
|
|
+{
|
|
|
+ set_all_modules_text_rw();
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+int ftrace_arch_code_modify_post_process(void)
|
|
|
+{
|
|
|
+ set_all_modules_text_ro();
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static unsigned long ftrace_call_replace(unsigned long pc, unsigned long addr)
|
|
|
{
|
|
|
return arm_gen_branch_link(pc, addr);
|