diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-02-11 11:22:26 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-02-11 11:22:26 -0500 |
| commit | b3f2caaaa82440af06b39c2c92e4fa8122d75465 (patch) | |
| tree | 62338ae23ff00ec98773a1a9d768a303740a4dfa /arch/x86/kernel | |
| parent | 93431dd7afa908292753acccb68785efaa366f5b (diff) | |
| parent | f47a454db9129d2e61b224a40f4365cdd4f83042 (diff) | |
Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
tracing, x86: fix constraint for parent variable
tracing, x86: fix fixup section to return to original code
profiling: fix broken profiling regression
Diffstat (limited to 'arch/x86/kernel')
| -rw-r--r-- | arch/x86/kernel/ftrace.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c index 1b43086b097a..231bdd3c5b1c 100644 --- a/arch/x86/kernel/ftrace.c +++ b/arch/x86/kernel/ftrace.c | |||
| @@ -488,20 +488,21 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) | |||
| 488 | * ignore such a protection. | 488 | * ignore such a protection. |
| 489 | */ | 489 | */ |
| 490 | asm volatile( | 490 | asm volatile( |
| 491 | "1: " _ASM_MOV " (%[parent_old]), %[old]\n" | 491 | "1: " _ASM_MOV " (%[parent]), %[old]\n" |
| 492 | "2: " _ASM_MOV " %[return_hooker], (%[parent_replaced])\n" | 492 | "2: " _ASM_MOV " %[return_hooker], (%[parent])\n" |
| 493 | " movl $0, %[faulted]\n" | 493 | " movl $0, %[faulted]\n" |
| 494 | "3:\n" | ||
| 494 | 495 | ||
| 495 | ".section .fixup, \"ax\"\n" | 496 | ".section .fixup, \"ax\"\n" |
| 496 | "3: movl $1, %[faulted]\n" | 497 | "4: movl $1, %[faulted]\n" |
| 498 | " jmp 3b\n" | ||
| 497 | ".previous\n" | 499 | ".previous\n" |
| 498 | 500 | ||
| 499 | _ASM_EXTABLE(1b, 3b) | 501 | _ASM_EXTABLE(1b, 4b) |
| 500 | _ASM_EXTABLE(2b, 3b) | 502 | _ASM_EXTABLE(2b, 4b) |
| 501 | 503 | ||
| 502 | : [parent_replaced] "=r" (parent), [old] "=r" (old), | 504 | : [old] "=r" (old), [faulted] "=r" (faulted) |
| 503 | [faulted] "=r" (faulted) | 505 | : [parent] "r" (parent), [return_hooker] "r" (return_hooker) |
| 504 | : [parent_old] "0" (parent), [return_hooker] "r" (return_hooker) | ||
| 505 | : "memory" | 506 | : "memory" |
| 506 | ); | 507 | ); |
| 507 | 508 | ||
