66bc8c37ca
Split off qemu-testsuite.spec to decouple retriggering the sometimes-failing tests from the lengthy build of the binaries. Extend test coverage to include iotests for block backends. Drop the SUSE-only MAC address warning for now, to keep output-checking tests from failing. Re-enable glusterfs support for Factory (updated to v3.6.2). Re-enable libseccomp support for armv7l (submission of patched v2.2.0 pending). OBS-URL: https://build.opensuse.org/request/show/295465 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=248
49 lines
1.8 KiB
Diff
49 lines
1.8 KiB
Diff
From 32333d39aaa8044991140d4c1f255f14c1f79d73 Mon Sep 17 00:00:00 2001
|
|
From: Peter Maydell <peter.maydell@linaro.org>
|
|
Date: Wed, 8 Apr 2015 20:57:09 +0100
|
|
Subject: [PATCH] tcg/tcg-op.c: Fix ld/st of 64 bit values on 32-bit bigendian
|
|
hosts
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Commit 951c6300f7 out-of-lined the 32-bit-host versions of
|
|
tcg_gen_{ld,st}_i64, but in the process it inadvertently changed
|
|
an #ifdef HOST_WORDS_BIGENDIAN to #ifdef TCG_TARGET_WORDS_BIGENDIAN.
|
|
Since the latter doesn't get defined anywhere this meant we always
|
|
took the "LE host" codepath, and stored the two halves of the value
|
|
in the wrong order on BE hosts. This typically breaks any 64-bit
|
|
guest on a 32-bit BE host completely, and will have possibly more
|
|
subtle effects even for 32-bit guests.
|
|
|
|
Switch the ifdef back to HOST_WORDS_BIGENDIAN.
|
|
|
|
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
|
|
Signed-off-by: Andreas Färber <afaerber@suse.de>
|
|
---
|
|
tcg/tcg-op.c | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c
|
|
index f7a2767..2b6be75 100644
|
|
--- a/tcg/tcg-op.c
|
|
+++ b/tcg/tcg-op.c
|
|
@@ -808,7 +808,7 @@ void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset)
|
|
{
|
|
/* Since arg2 and ret have different types,
|
|
they cannot be the same temporary */
|
|
-#ifdef TCG_TARGET_WORDS_BIGENDIAN
|
|
+#ifdef HOST_WORDS_BIGENDIAN
|
|
tcg_gen_ld_i32(TCGV_HIGH(ret), arg2, offset);
|
|
tcg_gen_ld_i32(TCGV_LOW(ret), arg2, offset + 4);
|
|
#else
|
|
@@ -819,7 +819,7 @@ void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset)
|
|
|
|
void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset)
|
|
{
|
|
-#ifdef TCG_TARGET_WORDS_BIGENDIAN
|
|
+#ifdef HOST_WORDS_BIGENDIAN
|
|
tcg_gen_st_i32(TCGV_HIGH(arg1), arg2, offset);
|
|
tcg_gen_st_i32(TCGV_LOW(arg1), arg2, offset + 4);
|
|
#else
|