qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 3/4] target/mips: Fix copy_u.<b|h|w> for MIPS big en


From: Mateja Marjanovic
Subject: [Qemu-devel] [PATCH 3/4] target/mips: Fix copy_u.<b|h|w> for MIPS big endian host
Date: Fri, 22 Mar 2019 16:54:39 +0100

From: Mateja Marjanovic <address@hidden>

Unsigned element copy from MSA registers to GPR when
executed on a MIPS big endian CPU, didn't pick the
right element, and was behaving like on little endian.

Signed-off-by: Mateja Marjanovic <address@hidden>
---
 target/mips/msa_helper.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/target/mips/msa_helper.c b/target/mips/msa_helper.c
index 012f373..8caf186 100644
--- a/target/mips/msa_helper.c
+++ b/target/mips/msa_helper.c
@@ -1467,6 +1467,13 @@ void helper_msa_copy_u_df(CPUMIPSState *env, uint32_t 
df, uint32_t rd,
                           uint32_t ws, uint32_t n)
 {
     n %= DF_ELEMENTS(df);
+#if defined(HOST_WORDS_BIGENDIAN)
+    if (n < DF_ELEMENTS(df) / 2) {
+        n = DF_ELEMENTS(df) / 2 - n - 1;
+    } else {
+        n = 3 * DF_ELEMENTS(df) / 2 - n - 1;
+    }
+#endif
 
     switch (df) {
     case DF_BYTE:
-- 
2.7.4




reply via email to

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