diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-04-02 13:54:11 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-04-24 17:57:33 -0400 |
commit | b77797fb2bf31bf076e6b69736119bc6a077525b (patch) | |
tree | 4d0bfcb5bcc96988ef421c807837d7236fdb0e07 /arch/x86/kernel | |
parent | 2bd50036b5dfc929390ddc48be7f6314447b2be3 (diff) |
xen: fold xen_sysexit into xen_iret
xen_sysexit and xen_iret were doing essentially the same thing. Rather
than having a separate implementation for xen_sysexit, we can just strip
the stack back to an iret frame and jump into xen_iret. This removes
a lot of code and complexity - specifically, another critical region.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r-- | arch/x86/kernel/entry_32.S | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index 209c334bb920..2a609dc3271c 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S | |||
@@ -1044,15 +1044,8 @@ ENTRY(xen_hypervisor_callback) | |||
1044 | 1044 | ||
1045 | jmp xen_iret_crit_fixup | 1045 | jmp xen_iret_crit_fixup |
1046 | 1046 | ||
1047 | 1: cmpl $xen_sysexit_start_crit,%eax | ||
1048 | jb 2f | ||
1049 | cmpl $xen_sysexit_end_crit,%eax | ||
1050 | jae 2f | ||
1051 | |||
1052 | jmp xen_sysexit_crit_fixup | ||
1053 | |||
1054 | ENTRY(xen_do_upcall) | 1047 | ENTRY(xen_do_upcall) |
1055 | 2: mov %esp, %eax | 1048 | 1: mov %esp, %eax |
1056 | call xen_evtchn_do_upcall | 1049 | call xen_evtchn_do_upcall |
1057 | jmp ret_from_intr | 1050 | jmp ret_from_intr |
1058 | CFI_ENDPROC | 1051 | CFI_ENDPROC |