]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
hw/mips/bootloader: Fix write_ulong()
authorJiaxun Yang <jiaxun.yang@flygoat.com>
Tue, 30 Nov 2021 21:17:28 +0000 (21:17 +0000)
committerPhilippe Mathieu-Daudé <f4bug@amsat.org>
Mon, 6 Dec 2021 10:57:31 +0000 (11:57 +0100)
bl_gen_write_ulong uses sd for both 32 and 64 bit CPU,
while sd is illegal on 32 bit CPUs.

Replace sd with sw on 32bit CPUs.

Fixes: 3ebbf86128f ("hw/mips: Add a bootloader helper")
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211130211729.7116-2-jiaxun.yang@flygoat.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
hw/mips/bootloader.c

index 6ec8314490957c57f9d08f260a958edfe335cf78..99991f8b2b5cec56bcfa6eb9103d6154d5763b9a 100644 (file)
@@ -182,7 +182,11 @@ void bl_gen_write_ulong(uint32_t **p, target_ulong addr, target_ulong val)
 {
     bl_gen_load_ulong(p, BL_REG_K0, val);
     bl_gen_load_ulong(p, BL_REG_K1, addr);
-    bl_gen_sd(p, BL_REG_K0, BL_REG_K1, 0x0);
+    if (bootcpu_supports_isa(ISA_MIPS3)) {
+        bl_gen_sd(p, BL_REG_K0, BL_REG_K1, 0x0);
+    } else {
+        bl_gen_sw(p, BL_REG_K0, BL_REG_K1, 0x0);
+    }
 }
 
 void bl_gen_write_u32(uint32_t **p, target_ulong addr, uint32_t val)