aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Kaseorg <andersk@MIT.EDU>2008-10-09 22:19:08 -0400
committerIngo Molnar <mingo@elte.hu>2008-10-14 04:39:29 -0400
commit8b27386a9ce9c7f0f8702cff7565a46802ad57d1 (patch)
treee66efb36314fcb9051881d73aca8c08a80ccafb7
parentbfadadfccc19e36f7d600c5ce7b3e5ba5197fbf0 (diff)
ftrace: make ftrace_test_p6nop disassembler-friendly
Commit 4c3dc21b136f8cb4b72afee16c3ba7e961656c0b in tip introduced the 5-byte NOP ftrace_test_p6nop: jmp . + 5 .byte 0x00, 0x00, 0x00 This is not friendly to disassemblers because an odd number of 0x00s ends in the middle of an instruction boundary. This changes the 0x00s to 1-byte NOPs (0x90). Signed-off-by: Anders Kaseorg <andersk@mit.edu> Acked-by: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--arch/x86/kernel/ftrace.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
index 222507e8157b..d073d981a730 100644
--- a/arch/x86/kernel/ftrace.c
+++ b/arch/x86/kernel/ftrace.c
@@ -132,7 +132,9 @@ int __init ftrace_dyn_arch_init(void *data)
132 ".section .text, \"ax\"\n" 132 ".section .text, \"ax\"\n"
133 "ftrace_test_jmp:" 133 "ftrace_test_jmp:"
134 "jmp ftrace_test_p6nop\n" 134 "jmp ftrace_test_p6nop\n"
135 ".byte 0x00,0x00,0x00\n" /* 2 byte jmp + 3 bytes */ 135 "nop\n"
136 "nop\n"
137 "nop\n" /* 2 byte jmp + 3 bytes */
136 "ftrace_test_p6nop:" 138 "ftrace_test_p6nop:"
137 P6_NOP5 139 P6_NOP5
138 "jmp 1f\n" 140 "jmp 1f\n"
@@ -161,7 +163,7 @@ int __init ftrace_dyn_arch_init(void *data)
161 ftrace_nop = (unsigned long *)ftrace_test_nop5; 163 ftrace_nop = (unsigned long *)ftrace_test_nop5;
162 break; 164 break;
163 case 2: 165 case 2:
164 pr_info("ftrace: converting mcount calls to jmp 1f\n"); 166 pr_info("ftrace: converting mcount calls to jmp . + 5\n");
165 ftrace_nop = (unsigned long *)ftrace_test_jmp; 167 ftrace_nop = (unsigned long *)ftrace_test_jmp;
166 break; 168 break;
167 } 169 }