On 11/30/21 22:17, Jiaxun Yang wrote: > 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: 3ebbf86 ("hw/mips: Add a bootloader helper") > Signed-off-by: Jiaxun Yang <jiaxun.y...@flygoat.com> > --- > Should be backported to 6.0 onwards. > --- > hw/mips/bootloader.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/hw/mips/bootloader.c b/hw/mips/bootloader.c > index 6ec8314490..99991f8b2b 100644 > --- a/hw/mips/bootloader.c > +++ b/hw/mips/bootloader.c > @@ -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); > + }
We have bl_gen_load_ulong(); having bl_gen_store_ulong() would make the API even. Mind sending a patch? Otherwise: Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org> > } > > void bl_gen_write_u32(uint32_t **p, target_ulong addr, uint32_t val) >