aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/kernel/entry.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/i386/kernel/entry.S')
-rw-r--r--arch/i386/kernel/entry.S16
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S
index ffb236544270..32980b834935 100644
--- a/arch/i386/kernel/entry.S
+++ b/arch/i386/kernel/entry.S
@@ -1030,7 +1030,21 @@ ENTRY(xen_hypervisor_callback)
1030 CFI_ADJUST_CFA_OFFSET 4 1030 CFI_ADJUST_CFA_OFFSET 4
1031 SAVE_ALL 1031 SAVE_ALL
1032 TRACE_IRQS_OFF 1032 TRACE_IRQS_OFF
1033 mov %esp, %eax 1033
1034 /* Check to see if we got the event in the critical
1035 region in xen_iret_direct, after we've reenabled
1036 events and checked for pending events. This simulates
1037 iret instruction's behaviour where it delivers a
1038 pending interrupt when enabling interrupts. */
1039 movl PT_EIP(%esp),%eax
1040 cmpl $xen_iret_start_crit,%eax
1041 jb 1f
1042 cmpl $xen_iret_end_crit,%eax
1043 jae 1f
1044
1045 call xen_iret_crit_fixup
1046
10471: mov %esp, %eax
1034 call xen_evtchn_do_upcall 1048 call xen_evtchn_do_upcall
1035 jmp ret_from_intr 1049 jmp ret_from_intr
1036 CFI_ENDPROC 1050 CFI_ENDPROC