On 18/11/22 10:47, Richard Henderson wrote:
Notice when the host has additional atomic instructions.
The new variables will also be used in generated code.
Signed-off-by: Richard Henderson <richard.hender...@linaro.org>
---
tcg/aarch64/tcg-target.h | 3 +++
tcg/aarch64/tcg-target.c.inc | 10 ++++++++++
2 files changed, 13 insertions(+)
diff --git a/tcg/aarch64/tcg-target.c.inc b/tcg/aarch64/tcg-target.c.inc
index 001a71bbc0..cf5ee6f742 100644
--- a/tcg/aarch64/tcg-target.c.inc
+++ b/tcg/aarch64/tcg-target.c.inc
@@ -13,6 +13,8 @@
#include "../tcg-ldst.c.inc"
#include "../tcg-pool.c.inc"
#include "qemu/bitops.h"
+#include <asm/hwcap.h>
This doesn't build on Darwin:
In file included from ../../tcg/tcg.c:426:
tcg/aarch64/tcg-target.c.inc:16:10: fatal error: 'asm/hwcap.h' file not
found
#include <asm/hwcap.h>
^~~~~~~~~~~~~
In file included from ../../accel/tcg/cputlb.c:1656:
../../accel/tcg/ldst_atomicity.c.inc:269:21: warning: value size does
not match register size specified by the constraint and modifier
[-Wasm-operand-widths]
: "=&r"(r.u), "=&r"(fail) : "Q"(*p));
^
../../accel/tcg/ldst_atomicity.c.inc:266:22: note: use constraint
modifier "w"
asm("0: ldxp %0, %R0, %2\n\t"
^~
%w0
../../accel/tcg/ldst_atomicity.c.inc:902:9: error: invalid operand in
inline asm: '0: ldxp $2, ${2:R}, $0 bic $2, $2, $4 bic ${2:R}, ${2:R},
${4:R} orr $2, $2, $3 orr ${2:R}, ${2:R}, ${3:R} stxp ${1:w}, $2,
${2:R}, $0 cbnz ${1:w}, 0b'
asm("0: ldxp %[t], %R[t], %[mem]\n\t"
^
../../accel/tcg/ldst_atomicity.c.inc:902:9: error: invalid operand in
inline asm: '0: ldxp $2, ${2:R}, $0 bic $2, $2, $4 bic ${2:R}, ${2:R},
${4:R} orr $2, $2, $3 orr ${2:R}, ${2:R}, ${3:R} stxp ${1:w}, $2,
${2:R}, $0 cbnz ${1:w}, 0b'
../../accel/tcg/ldst_atomicity.c.inc:902:9: error: invalid operand in
inline asm: '0: ldxp $2, ${2:R}, $0 bic $2, $2, $4 bic ${2:R}, ${2:R},
${4:R} orr $2, $2, $3 orr ${2:R}, ${2:R}, ${3:R} stxp ${1:w}, $2,
${2:R}, $0 cbnz ${1:w}, 0b'
../../accel/tcg/ldst_atomicity.c.inc:902:9: error: invalid operand in
inline asm: '0: ldxp $2, ${2:R}, $0 bic $2, $2, $4 bic ${2:R}, ${2:R},
${4:R} orr $2, $2, $3 orr ${2:R}, ${2:R}, ${3:R} stxp ${1:w}, $2,
${2:R}, $0 cbnz ${1:w}, 0b'
../../accel/tcg/ldst_atomicity.c.inc:902:9: error: invalid operand in
inline asm: '0: ldxp $2, ${2:R}, $0 bic $2, $2, $4 bic ${2:R}, ${2:R},
${4:R} orr $2, $2, $3 orr ${2:R}, ${2:R}, ${3:R} stxp ${1:w}, $2,
${2:R}, $0 cbnz ${1:w}, 0b'
../../accel/tcg/ldst_atomicity.c.inc:902:9: error: invalid operand in
inline asm: '0: ldxp $2, ${2:R}, $0 bic $2, $2, $4 bic ${2:R}, ${2:R},
${4:R} orr $2, $2, $3 orr ${2:R}, ${2:R}, ${3:R} stxp ${1:w}, $2,
${2:R}, $0 cbnz ${1:w}, 0b'
../../accel/tcg/ldst_atomicity.c.inc:902:9: error: invalid operand in
inline asm: '0: ldxp $2, ${2:R}, $0 bic $2, $2, $4 bic ${2:R}, ${2:R},
${4:R} orr $2, $2, $3 orr ${2:R}, ${2:R}, ${3:R} stxp ${1:w}, $2,
${2:R}, $0 cbnz ${1:w}, 0b'
../../accel/tcg/ldst_atomicity.c.inc:902:9: error: invalid operand in
inline asm: '0: ldxp $2, ${2:R}, $0 bic $2, $2, $4 bic ${2:R}, ${2:R},
${4:R} orr $2, $2, $3 orr ${2:R}, ${2:R}, ${3:R} stxp ${1:w}, $2,
${2:R}, $0 cbnz ${1:w}, 0b'
../../accel/tcg/ldst_atomicity.c.inc:902:9: error: unknown token in
expression
<inline asm>:1:15: note: instantiated into assembly here
0: ldxp x13, , [x9]
^
In file included from ../../accel/tcg/cputlb.c:1656:
../../accel/tcg/ldst_atomicity.c.inc:902:9: error: invalid operand
asm("0: ldxp %[t], %R[t], %[mem]\n\t"
^
<inline asm>:1:15: note: instantiated into assembly here
0: ldxp x13, , [x9]
^
In file included from ../../accel/tcg/cputlb.c:1656:
../../accel/tcg/ldst_atomicity.c.inc:903:32: error: unknown token in
expression
"bic %[t], %[t], %[m]\n\t"
^
<inline asm>:3:6: note: instantiated into assembly here
bic , ,
^
In file included from ../../accel/tcg/cputlb.c:1656:
../../accel/tcg/ldst_atomicity.c.inc:902:9: error: invalid operand in
inline asm: '0: ldxp $2, ${2:R}, $0 bic $2, $2, $4 bic ${2:R}, ${2:R},
${4:R} orr $2, $2, $3 orr ${2:R}, ${2:R}, ${3:R} stxp ${1:w}, $2,
${2:R}, $0 cbnz ${1:w}, 0b'
asm("0: ldxp %[t], %R[t], %[mem]\n\t"
^
../../accel/tcg/ldst_atomicity.c.inc:902:9: error: invalid operand in
inline asm: '0: ldxp $2, ${2:R}, $0 bic $2, $2, $4 bic ${2:R}, ${2:R},
${4:R} orr $2, $2, $3 orr ${2:R}, ${2:R}, ${3:R} stxp ${1:w}, $2,
${2:R}, $0 cbnz ${1:w}, 0b'
../../accel/tcg/ldst_atomicity.c.inc:902:9: error: invalid operand in
inline asm: '0: ldxp $2, ${2:R}, $0 bic $2, $2, $4 bic ${2:R}, ${2:R},
${4:R} orr $2, $2, $3 orr ${2:R}, ${2:R}, ${3:R} stxp ${1:w}, $2,
${2:R}, $0 cbnz ${1:w}, 0b'
fatal error: too many errors emitted, stopping now [-ferror-limit=]