[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>
This commit is contained in:
@@ -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)
|
|||||||
* 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
|
||||||
|
Reference in New Issue
Block a user