aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/entry_64.S
diff options
context:
space:
mode:
authorAlexander van Heukelum <heukelum@mailshack.com>2008-11-21 16:59:52 -0500
committerIngo Molnar <mingo@elte.hu>2008-11-22 03:45:50 -0500
commitc81084114f6ff957bc6b5a0048350479c1c1f7b3 (patch)
tree5c831620d403a353d2f092e6b612390045533d3d /arch/x86/kernel/entry_64.S
parentb8b1d08bf6fe7c09e6cb2294bc0e5e964b361241 (diff)
x86: split out some macro's and move common code to paranoid_exit, fix
Impact: fix bootup crash Even though it tested fine for me, there was still a bug in the first patch: I have overlooked a call to ptregscall_common. This patch fixes that, I think, but the code is never executed for me while running a debian install... (I tested this by putting an "1:jmp 1b" in there.) Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/entry_64.S')
-rw-r--r--arch/x86/kernel/entry_64.S7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index 692c1da61905..e5ddf573ded2 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -529,10 +529,13 @@ sysret_signal:
529 jc sysret_audit 529 jc sysret_audit
530#endif 530#endif
531 /* edx: work flags (arg3) */ 531 /* edx: work flags (arg3) */
532 leaq do_notify_resume(%rip),%rax
533 leaq -ARGOFFSET(%rsp),%rdi # &pt_regs -> arg1 532 leaq -ARGOFFSET(%rsp),%rdi # &pt_regs -> arg1
534 xorl %esi,%esi # oldset -> arg2 533 xorl %esi,%esi # oldset -> arg2
535 call ptregscall_common 534 SAVE_REST
535 FIXUP_TOP_OF_STACK %r11
536 call do_notify_resume
537 RESTORE_TOP_OF_STACK %r11
538 RESTORE_REST
536 movl $_TIF_WORK_MASK,%edi 539 movl $_TIF_WORK_MASK,%edi
537 /* Use IRET because user could have changed frame. This 540 /* Use IRET because user could have changed frame. This
538 works because ptregscall_common has called FIXUP_TOP_OF_STACK. */ 541 works because ptregscall_common has called FIXUP_TOP_OF_STACK. */