qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 10/27] tcg: Add atomic128 helpers


From: Richard Henderson
Subject: Re: [Qemu-devel] [PATCH v2 10/27] tcg: Add atomic128 helpers
Date: Thu, 7 Jul 2016 22:26:14 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1

On 07/07/2016 08:00 PM, Emilio G. Cota wrote:
On Fri, Jul 01, 2016 at 10:04:36 -0700, Richard Henderson wrote:
Force the use of cmpxchg16b on x86_64.

Wikipedia suggests that only very old AMD64 (circa 2004) did not have
this instruction.  Further, it's required by Windows 8 so no new cpus
will ever omit it.

If we truely care about these, then we could check this at startup time
and then avoid executing paths that use it.

Signed-off-by: Richard Henderson <address@hidden>
---
 configure             |  29 ++++++++++++-
 cputlb.c              |   6 +++
 include/qemu/int128.h |   6 +++
 softmmu_template.h    | 110 +++++++++++++++++++++++++++++++++++++-------------
 tcg/tcg.h             |  22 ++++++++++
 5 files changed, 144 insertions(+), 29 deletions(-)

diff --git a/configure b/configure
index 59ea124..586abd6 100755
--- a/configure
+++ b/configure
@@ -1201,7 +1201,10 @@ case "$cpu" in
            cc_i386='$(CC) -m32'
            ;;
     x86_64)
-           CPU_CFLAGS="-m64"
+           # ??? Only extremely old AMD cpus do not have cmpxchg16b.
+           # If we truly care, we should simply detect this case at
+           # runtime and generate the fallback to serial emulation.
+           CPU_CFLAGS="-m64 -mcx16"
...
   if compile_prog "" "" ; then
     atomic128=yes
+  elif compile_prog "-mcx16" "" ; then
+    QEMU_CFLAGS="$QEMU_CFLAGS -mcx16"
+    EXTRA_CFLAGS="$EXTRA_CFLAGS -mcx16"
+    atomic128=yes

Your change doesn't change anything. If the user gave -march=haswell, then cx16 is enabled and the first test succeeds. If the user gave -march=k8, the initial test would fail, but the second test would explicitly add cx16, and the second test would succeed.

In all cases, cx16 gets enabled.


r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]