On Fri, Sep 20, 2019 at 6:35 AM Alistair Francis <alistair.fran...@wdc.com> wrote: > > If the user supplied pflash to QEMU then change the reset code to jump > to the pflash base address instead of the DRAM base address. > > Signed-off-by: Alistair Francis <alistair.fran...@wdc.com> > --- > hw/riscv/virt.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c > index ca002ecea7..ed25cc6761 100644 > --- a/hw/riscv/virt.c > +++ b/hw/riscv/virt.c > @@ -441,6 +441,7 @@ static void riscv_virt_board_init(MachineState *machine) > MemoryRegion *mask_rom = g_new(MemoryRegion, 1); > char *plic_hart_config; > size_t plic_hart_config_len; > + target_ulong start_addr = memmap[VIRT_DRAM].base; > int i; > unsigned int smp_cpus = machine->smp.cpus; > > @@ -487,6 +488,13 @@ static void riscv_virt_board_init(MachineState *machine) > } > } > > + if (drive_get(IF_PFLASH, 0, 0)) { > + /* Pflash was supplied, let's overwrite the address we jump to after
nits: wrong multi-line comment format > + * reset to the base of the flash. > + */ > + start_addr = virt_memmap[VIRT_FLASH].base; > + } > + > /* reset vector */ > uint32_t reset_vec[8] = { > 0x00000297, /* 1: auipc t0, %pcrel_hi(dtb) */ > @@ -499,7 +507,7 @@ static void riscv_virt_board_init(MachineState *machine) > #endif > 0x00028067, /* jr t0 */ > 0x00000000, > - memmap[VIRT_DRAM].base, /* start: .dword memmap[VIRT_DRAM].base > */ > + start_addr, /* start: .dword */ > 0x00000000, > /* dtb: */ > }; > -- Otherwise, Reviewed-by: Bin Meng <bmeng...@gmail.com>