diff options
author | Anders Kaseorg <andersk@MIT.EDU> | 2008-10-09 22:19:08 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-10-14 04:39:29 -0400 |
commit | 8b27386a9ce9c7f0f8702cff7565a46802ad57d1 (patch) | |
tree | e66efb36314fcb9051881d73aca8c08a80ccafb7 /arch | |
parent | bfadadfccc19e36f7d600c5ce7b3e5ba5197fbf0 (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>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/ftrace.c | 6 |
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 | } |