From: Richard Henderson Date: Mon, 13 Jun 2016 21:45:21 +0000 (-0700) Subject: linux-user: fix x86_64 safe_syscall X-Git-Tag: v2.7.0-rc0~78^2~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4eed9990a0d50d9c2bc7042fb3b68579985867ae;p=thirdparty%2Fqemu.git linux-user: fix x86_64 safe_syscall Do what the comment says, test for signal_pending non-zero, rather than the current code which tests for bit 0 non-zero. Signed-off-by: Richard Henderson Signed-off-by: Riku Voipio Reviewed-by: Peter Maydell --- diff --git a/linux-user/host/x86_64/safe-syscall.inc.S b/linux-user/host/x86_64/safe-syscall.inc.S index e09368d4501..f36992daa34 100644 --- a/linux-user/host/x86_64/safe-syscall.inc.S +++ b/linux-user/host/x86_64/safe-syscall.inc.S @@ -67,8 +67,8 @@ safe_syscall_base: */ safe_syscall_start: /* if signal_pending is non-zero, don't do the call */ - testl $1, (%rbp) - jnz return_ERESTARTSYS + cmpl $0, (%rbp) + jnz 1f syscall safe_syscall_end: /* code path for having successfully executed the syscall */ @@ -78,7 +78,7 @@ safe_syscall_end: .cfi_restore rbp ret -return_ERESTARTSYS: +1: /* code path when we didn't execute the syscall */ .cfi_restore_state mov $-TARGET_ERESTARTSYS, %rax