summaryrefslogtreecommitdiffstats
path: root/arch/i386/kernel/entry.S
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2006-09-26 10:52:35 +0200
committerAndi Kleen <andi@basil.nowhere.org>2006-09-26 10:52:35 +0200
commit02ba1a32dbd3d406530a17a2643a8f0f8cbf3acc (patch)
tree34264fe17596eb3c83e485c26094d246e8841dac /arch/i386/kernel/entry.S
parent3d08a256da8aed5300bd0752200ece426f49b050 (diff)
downloadop-kernel-dev-02ba1a32dbd3d406530a17a2643a8f0f8cbf3acc.zip
op-kernel-dev-02ba1a32dbd3d406530a17a2643a8f0f8cbf3acc.tar.gz
[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.S13
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S
index ba22ec8..dede506 100644
--- a/arch/i386/kernel/entry.S
+++ b/arch/i386/kernel/entry.S
@@ -950,6 +950,19 @@ ENTRY(arch_unwind_init_running)
ENDPROC(arch_unwind_init_running)
#endif
+ENTRY(kernel_thread_helper)
+ pushl $0 # fake return address for unwinder
+ CFI_STARTPROC
+ movl %edx,%eax
+ push %edx
+ CFI_ADJUST_CFA_OFFSET 4
+ call *%ebx
+ push %eax
+ CFI_ADJUST_CFA_OFFSET 4
+ call do_exit
+ CFI_ENDPROC
+ENDPROC(kernel_thread_helper)
+
.section .rodata,"a"
#include "syscall_table.S"
OpenPOWER on IntegriCloud