aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/entry_32.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/entry_32.S')
-rw-r--r--arch/x86/kernel/entry_32.S17
1 files changed, 6 insertions, 11 deletions
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
index 8f9ed1afde8f..2c6340796fe9 100644
--- a/arch/x86/kernel/entry_32.S
+++ b/arch/x86/kernel/entry_32.S
@@ -622,6 +622,10 @@ work_notifysig: # deal with pending signals and
622 movl %esp, %eax 622 movl %esp, %eax
623 jne work_notifysig_v86 # returning to kernel-space or 623 jne work_notifysig_v86 # returning to kernel-space or
624 # vm86-space 624 # vm86-space
6251:
626#else
627 movl %esp, %eax
628#endif
625 TRACE_IRQS_ON 629 TRACE_IRQS_ON
626 ENABLE_INTERRUPTS(CLBR_NONE) 630 ENABLE_INTERRUPTS(CLBR_NONE)
627 movb PT_CS(%esp), %bl 631 movb PT_CS(%esp), %bl
@@ -632,24 +636,15 @@ work_notifysig: # deal with pending signals and
632 call do_notify_resume 636 call do_notify_resume
633 jmp resume_userspace 637 jmp resume_userspace
634 638
639#ifdef CONFIG_VM86
635 ALIGN 640 ALIGN
636work_notifysig_v86: 641work_notifysig_v86:
637 pushl_cfi %ecx # save ti_flags for do_notify_resume 642 pushl_cfi %ecx # save ti_flags for do_notify_resume
638 call save_v86_state # %eax contains pt_regs pointer 643 call save_v86_state # %eax contains pt_regs pointer
639 popl_cfi %ecx 644 popl_cfi %ecx
640 movl %eax, %esp 645 movl %eax, %esp
641#else 646 jmp 1b
642 movl %esp, %eax
643#endif 647#endif
644 TRACE_IRQS_ON
645 ENABLE_INTERRUPTS(CLBR_NONE)
646 movb PT_CS(%esp), %bl
647 andb $SEGMENT_RPL_MASK, %bl
648 cmpb $USER_RPL, %bl
649 jb resume_kernel
650 xorl %edx, %edx
651 call do_notify_resume
652 jmp resume_userspace
653END(work_pending) 648END(work_pending)
654 649
655 # perform syscall exit tracing 650 # perform syscall exit tracing