mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
[LINUX][ Fix x86/64 entry.S to use paravirtualized sti/cli properly.
This fixes - one instance of using XEN_BLOCK_EVENTS where XEN_UNBLOCK_EVENTS was meant - four instances of left-over cli-s that should have been replaced with XEN_BLOCK_EVENTS - one instance of slightly wrong placement (without resulting in ill behavior, but needlessly making the diff to native more complex) Signed-off-by: Jan Beulich <jbeulich@novell.com>
This commit is contained in:
1 parent
775d564bde
commit
3ef9a82056
1 file changed
+6
-6
@@ -271,7 +271,7 @@ sysret_careful:
|
||||
CFI_RESTORE_STATE
|
||||
bt $TIF_NEED_RESCHED,%edx
|
||||
jnc sysret_signal
|
||||
XEN_BLOCK_EVENTS(%rsi)
|
||||
XEN_UNBLOCK_EVENTS(%rsi)
|
||||
pushq %rdi
|
||||
CFI_ADJUST_CFA_OFFSET 8
|
||||
call schedule
|
||||
@@ -295,7 +295,7 @@ sysret_signal:
|
||||
1: movl $_TIF_NEED_RESCHED,%edi
|
||||
/* Use IRET because user could have changed frame. This
|
||||
works because ptregscall_common has called FIXUP_TOP_OF_STACK. */
|
||||
cli
|
||||
XEN_BLOCK_EVENTS(%rsi)
|
||||
jmp int_with_check
|
||||
|
||||
badsys:
|
||||
@@ -377,7 +377,7 @@ int_careful:
|
||||
call schedule
|
||||
popq %rdi
|
||||
CFI_ADJUST_CFA_OFFSET -8
|
||||
cli
|
||||
XEN_BLOCK_EVENTS(%rsi)
|
||||
jmp int_with_check
|
||||
|
||||
/* handle signals and tracing -- both require a full stack frame */
|
||||
@@ -395,7 +395,7 @@ int_very_careful:
|
||||
popq %rdi
|
||||
CFI_ADJUST_CFA_OFFSET -8
|
||||
andl $~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP),%edi
|
||||
cli
|
||||
XEN_BLOCK_EVENTS(%rsi)
|
||||
jmp int_restore_rest
|
||||
|
||||
int_signal:
|
||||
@@ -407,7 +407,7 @@ int_signal:
|
||||
1: movl $_TIF_NEED_RESCHED,%edi
|
||||
int_restore_rest:
|
||||
RESTORE_REST
|
||||
cli
|
||||
XEN_BLOCK_EVENTS(%rsi)
|
||||
jmp int_with_check
|
||||
CFI_ENDPROC
|
||||
|
||||
@@ -535,8 +535,8 @@ retint_careful:
|
||||
call schedule
|
||||
popq %rdi
|
||||
CFI_ADJUST_CFA_OFFSET -8
|
||||
XEN_BLOCK_EVENTS(%rsi)
|
||||
GET_THREAD_INFO(%rcx)
|
||||
XEN_BLOCK_EVENTS(%rsi)
|
||||
/* cli */
|
||||
jmp retint_check
|
||||
|
||||
|
||||