diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-12-03 08:49:21 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-12-03 08:49:21 +0100 |
commit | f0461d0146ee30927bc7efa2ae24ea8c6693b725 (patch) | |
tree | 6a6b416c76c0e1a569af5531454fb45fe06e07ba /arch/x86/kernel/ftrace.c | |
parent | 66eafebc1086014709dc38f52ddcb3d67d9b346c (diff) | |
parent | 48d68b20d00865035b8b65e69af343d0f53fac9d (diff) |
Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core
Diffstat (limited to 'arch/x86/kernel/ftrace.c')
-rw-r--r-- | arch/x86/kernel/ftrace.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c index 7ef914e6a2f..58832478b94 100644 --- a/arch/x86/kernel/ftrace.c +++ b/arch/x86/kernel/ftrace.c @@ -467,8 +467,13 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) * ignore such a protection. */ asm volatile( +#ifdef CONFIG_X86_64 + "1: movq (%[parent_old]), %[old]\n" + "2: movq %[return_hooker], (%[parent_replaced])\n" +#else "1: movl (%[parent_old]), %[old]\n" "2: movl %[return_hooker], (%[parent_replaced])\n" +#endif " movl $0, %[faulted]\n" ".section .fixup, \"ax\"\n" @@ -476,8 +481,13 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) ".previous\n" ".section __ex_table, \"a\"\n" +#ifdef CONFIG_X86_64 + " .quad 1b, 3b\n" + " .quad 2b, 3b\n" +#else " .long 1b, 3b\n" " .long 2b, 3b\n" +#endif ".previous\n" : [parent_replaced] "=r" (parent), [old] "=r" (old), @@ -509,5 +519,4 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) ftrace_graph_entry(&trace); } - #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ |