diff options
author | Andi Kleen <ak@suse.de> | 2006-09-26 04:52:35 -0400 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-09-26 04:52:35 -0400 |
commit | 02ba1a32dbd3d406530a17a2643a8f0f8cbf3acc (patch) | |
tree | 34264fe17596eb3c83e485c26094d246e8841dac /arch/i386/kernel/entry.S | |
parent | 3d08a256da8aed5300bd0752200ece426f49b050 (diff) |
[PATCH] i386: move kernel_thread_helper into entry.S
And add proper CFI annotation to it which was previously
impossible. This prevents "stuck" messages by the dwarf2 unwinder
when reaching the top of a kernel stack.
Includes feedback from Jan Beulich
Cc: jbeulich@novell.com
Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'arch/i386/kernel/entry.S')
-rw-r--r-- | arch/i386/kernel/entry.S | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S index ba22ec8fab54..dede506e5bd0 100644 --- a/arch/i386/kernel/entry.S +++ b/arch/i386/kernel/entry.S | |||
@@ -950,6 +950,19 @@ ENTRY(arch_unwind_init_running) | |||
950 | ENDPROC(arch_unwind_init_running) | 950 | ENDPROC(arch_unwind_init_running) |
951 | #endif | 951 | #endif |
952 | 952 | ||
953 | ENTRY(kernel_thread_helper) | ||
954 | pushl $0 # fake return address for unwinder | ||
955 | CFI_STARTPROC | ||
956 | movl %edx,%eax | ||
957 | push %edx | ||
958 | CFI_ADJUST_CFA_OFFSET 4 | ||
959 | call *%ebx | ||
960 | push %eax | ||
961 | CFI_ADJUST_CFA_OFFSET 4 | ||
962 | call do_exit | ||
963 | CFI_ENDPROC | ||
964 | ENDPROC(kernel_thread_helper) | ||
965 | |||
953 | .section .rodata,"a" | 966 | .section .rodata,"a" |
954 | #include "syscall_table.S" | 967 | #include "syscall_table.S" |
955 | 968 | ||