Commit 02ba1a32 authored by Andi Kleen's avatar Andi Kleen Committed by Andi Kleen

[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: default avatarAndi Kleen <ak@suse.de>
parent 3d08a256
...@@ -950,6 +950,19 @@ ENTRY(arch_unwind_init_running) ...@@ -950,6 +950,19 @@ ENTRY(arch_unwind_init_running)
ENDPROC(arch_unwind_init_running) ENDPROC(arch_unwind_init_running)
#endif #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" .section .rodata,"a"
#include "syscall_table.S" #include "syscall_table.S"
......
...@@ -321,15 +321,6 @@ void show_regs(struct pt_regs * regs) ...@@ -321,15 +321,6 @@ void show_regs(struct pt_regs * regs)
* the "args". * the "args".
*/ */
extern void kernel_thread_helper(void); extern void kernel_thread_helper(void);
__asm__(".section .text\n"
".align 4\n"
"kernel_thread_helper:\n\t"
"movl %edx,%eax\n\t"
"pushl %edx\n\t"
"call *%ebx\n\t"
"pushl %eax\n\t"
"call do_exit\n"
".previous");
/* /*
* Create a kernel thread * Create a kernel thread
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment