diff options
author | Thomas Huth <thuth@redhat.com> | 2022-03-01 10:39:11 +0100 |
---|---|---|
committer | Thomas Huth <thuth@redhat.com> | 2022-03-07 09:04:42 +0100 |
commit | f530ba8f8d69738b7516432ab2eacd727b79c3ed (patch) | |
tree | 3c8fe409105c50f78d9698758ceb6e5ef41d2be0 /tests | |
parent | 9d662a6b22a0838a85c5432385f35db2488a33a5 (diff) | |
download | qemu-f530ba8f8d69738b7516432ab2eacd727b79c3ed.zip qemu-f530ba8f8d69738b7516432ab2eacd727b79c3ed.tar.gz qemu-f530ba8f8d69738b7516432ab2eacd727b79c3ed.tar.bz2 |
tests/tcg/s390x: Fix mvc, mvo and pack tests with Clang
These instructions use addressing with a "base address", meaning
that if register r0 is used, it is always treated as zero, no matter
what value is stored in the register. So we have to make sure not
to use register r0 for these instructions in our tests. There was
no problem with GCC so far since it seems to always pick other
registers by default, but Clang likes to chose register r0, too,
so we have to use the "a" constraint to make sure that it does
not pick r0 here.
Message-Id: <20220301093911.1450719-1-thuth@redhat.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/tcg/s390x/mvc.c | 4 | ||||
-rw-r--r-- | tests/tcg/s390x/mvo.c | 4 | ||||
-rw-r--r-- | tests/tcg/s390x/pack.c | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/tests/tcg/s390x/mvc.c b/tests/tcg/s390x/mvc.c index aa552d5..7ae4c44 100644 --- a/tests/tcg/s390x/mvc.c +++ b/tests/tcg/s390x/mvc.c @@ -20,8 +20,8 @@ static inline void mvc_256(const char *dst, const char *src) asm volatile ( " mvc 0(256,%[dst]),0(%[src])\n" : - : [dst] "d" (dst), - [src] "d" (src) + : [dst] "a" (dst), + [src] "a" (src) : "memory"); } diff --git a/tests/tcg/s390x/mvo.c b/tests/tcg/s390x/mvo.c index 5546fe2..0c3ecdd 100644 --- a/tests/tcg/s390x/mvo.c +++ b/tests/tcg/s390x/mvo.c @@ -11,8 +11,8 @@ int main(void) asm volatile ( " mvo 0(4,%[dest]),0(3,%[src])\n" : - : [dest] "d" (dest + 1), - [src] "d" (src + 1) + : [dest] "a" (dest + 1), + [src] "a" (src + 1) : "memory"); for (i = 0; i < sizeof(expected); i++) { diff --git a/tests/tcg/s390x/pack.c b/tests/tcg/s390x/pack.c index 4be36f2..55e7e21 100644 --- a/tests/tcg/s390x/pack.c +++ b/tests/tcg/s390x/pack.c @@ -9,7 +9,7 @@ int main(void) asm volatile( " pack 2(4,%[data]),2(4,%[data])\n" : - : [data] "r" (&data[0]) + : [data] "a" (&data[0]) : "memory"); for (i = 0; i < 8; i++) { if (data[i] != exp[i]) { |