On 2/21/21 3:33 PM, Philippe Mathieu-Daudé wrote: > From: Jiaxun Yang <jiaxun.y...@flygoat.com> > > Add a bootloader helper to generate simple bootloaders for kernel. > It can help us reduce inline hex hack and also keep MIPS release 6 > compatibility easier. > > Signed-off-by: Jiaxun Yang <jiaxun.y...@flygoat.com> > Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org> > Message-Id: <20210127065424.114125-2-jiaxun.y...@flygoat.com> > [PMD: Restricted bl_reg enum to C source, inverted bl_gen_write() args] > Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> > --- > include/hw/mips/bootloader.h | 14 +++ > hw/mips/bootloader.c | 200 +++++++++++++++++++++++++++++++++++ > hw/mips/meson.build | 2 +- > 3 files changed, 215 insertions(+), 1 deletion(-) > create mode 100644 include/hw/mips/bootloader.h > create mode 100644 hw/mips/bootloader.c > > diff --git a/include/hw/mips/bootloader.h b/include/hw/mips/bootloader.h > new file mode 100644 > index 00000000000..88eb9f49180 > --- /dev/null > +++ b/include/hw/mips/bootloader.h > @@ -0,0 +1,14 @@ > +#ifndef HW_MIPS_BOOTLOADER_H > +#define HW_MIPS_BOOTLOADER_H
Missing license... > + > +#include "exec/cpu-defs.h" > + > +void bl_gen_jump_to(uint32_t **p, target_ulong jump_addr); > +void bl_gen_jump_kernel(uint32_t **p, target_ulong sp, target_ulong a0, > + target_ulong a1, target_ulong a2, target_ulong a3, > + target_ulong kernel_addr); > +void bl_gen_write_ulong(uint32_t **p, target_ulong addr, target_ulong val); > +void bl_gen_write_u32(uint32_t **p, target_ulong addr, uint32_t val); > +void bl_gen_write_u64(uint32_t **p, target_ulong addr, uint64_t val); > + > +#endif > diff --git a/hw/mips/bootloader.c b/hw/mips/bootloader.c > new file mode 100644 > index 00000000000..6ec83144909 > --- /dev/null > +++ b/hw/mips/bootloader.c > @@ -0,0 +1,200 @@ > +/* > + * Utility for QEMU MIPS to generate it's simple bootloader > + * > + * Instructions used here are carefully selected to keep compatibility with > + * MIPS Release 6. > + * > + * Copyright (C) 2020 Jiaxun Yang <jiaxun.y...@flygoat.com> > + * > + * SPDX-License-Identifier: GPL-2.0-or-later > + */