On 9/20/19 7:15 AM, Bin Meng wrote: > 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>
Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com>