[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:
kfraser@localhost.localdomain committed 2006-08-14 15:24:59 +01:00
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
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.