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 b6bb69239296..fe4cc305d8da 100644
--- a/arch/x86/kernel/entry_32.S
+++ b/arch/x86/kernel/entry_32.S
@@ -618,6 +618,10 @@ work_notifysig: # deal with pending signals and
618 movl %esp, %eax 618 movl %esp, %eax
619 jne work_notifysig_v86 # returning to kernel-space or 619 jne work_notifysig_v86 # returning to kernel-space or
620 # vm86-space 620 # vm86-space
6211:
622#else
623 movl %esp, %eax
624#endif
621 TRACE_IRQS_ON 625 TRACE_IRQS_ON
622 ENABLE_INTERRUPTS(CLBR_NONE) 626 ENABLE_INTERRUPTS(CLBR_NONE)
623 movb PT_CS(%esp), %bl 627 movb PT_CS(%esp), %bl
@@ -628,24 +632,15 @@ work_notifysig: # deal with pending signals and
628 call do_notify_resume 632 call do_notify_resume
629 jmp resume_userspace 633 jmp resume_userspace
630 634
635#ifdef CONFIG_VM86
631 ALIGN 636 ALIGN
632work_notifysig_v86: 637work_notifysig_v86:
633 pushl_cfi %ecx # save ti_flags for do_notify_resume 638 pushl_cfi %ecx # save ti_flags for do_notify_resume
634 call save_v86_state # %eax contains pt_regs pointer 639 call save_v86_state # %eax contains pt_regs pointer
635 popl_cfi %ecx 640 popl_cfi %ecx
636 movl %eax, %esp 641 movl %eax, %esp
637#else 642 jmp 1b
638 movl %esp, %eax
639#endif 643#endif
640 TRACE_IRQS_ON
641 ENABLE_INTERRUPTS(CLBR_NONE)
642 movb PT_CS(%esp), %bl
643 andb $SEGMENT_RPL_MASK, %bl
644 cmpb $USER_RPL, %bl
645 jb resume_kernel
646 xorl %edx, %edx
647 call do_notify_resume
648 jmp resume_userspace
649END(work_pending) 644END(work_pending)
650 645
651 # perform syscall exit tracing 646 # perform syscall exit tracing