Skip to content

Commit

Permalink
[PATCH] i386: move kernel_thread_helper into entry.S
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Andi Kleen authored and Andi Kleen committed Sep 26, 2006
1 parent 3d08a25 commit 02ba1a3
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 9 deletions.
13 changes: 13 additions & 0 deletions arch/i386/kernel/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down
9 changes: 0 additions & 9 deletions arch/i386/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -321,15 +321,6 @@ void show_regs(struct pt_regs * regs)
* the "args".
*/
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
Expand Down

0 comments on commit 02ba1a3

Please sign in to comment.