[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 3/5] Fix arm_semi_flen_cb for BE32 system mode.
From: |
Julian Brown |
Subject: |
[Qemu-devel] [PATCH 3/5] Fix arm_semi_flen_cb for BE32 system mode. |
Date: |
Thu, 3 Nov 2016 10:30:56 -0700 |
This patch fixes the arm_semi_flen_cb callback so that it doesn't return
a byte-swapped size in BE32 system mode.
Signed-off-by: Julian Brown <address@hidden>
---
target-arm/arm-semi.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/target-arm/arm-semi.c b/target-arm/arm-semi.c
index a9cf5f2..6c550d0 100644
--- a/target-arm/arm-semi.c
+++ b/target-arm/arm-semi.c
@@ -188,7 +188,17 @@ static void arm_semi_flen_cb(CPUState *cs, target_ulong
ret, target_ulong err)
the value. We assume the size always fit in 32 bits. */
uint32_t size;
cpu_memory_rw_debug(cs, arm_flen_buf(cpu) + 32, (uint8_t *)&size, 4, 0);
+#ifdef CONFIG_USER_ONLY
size = be32_to_cpu(size);
+#else
+ /* If we're running in BE32 system mode, we don't need to do an explicit
+ * byte swap, because (I think) target memory is already stored in
+ * byte-swapped format.
+ */
+ if (!arm_sctlr_b(env)) {
+ size = be32_to_cpu(size);
+ }
+#endif
if (is_a64(env)) {
env->xregs[0] = size;
} else {
--
1.9.1
[Qemu-devel] [PATCH 3/5] Fix arm_semi_flen_cb for BE32 system mode.,
Julian Brown <=
[Qemu-devel] [PATCH 4/5] ARM BE32 watchpoint fix., Julian Brown, 2016/11/03
[Qemu-devel] [PATCH 5/5] Fix typo in arm_cpu_do_interrupt_aarch32., Julian Brown, 2016/11/03
Re: [Qemu-devel] [PATCH 0/5] ARM BE8/BE32 big-endian system-mode fixes (semihosting, gdbstub), no-reply, 2016/11/03
Re: [Qemu-devel] [PATCH 0/5] ARM BE8/BE32 big-endian system-mode fixes (semihosting, gdbstub), no-reply, 2016/11/03