This patch updates ARM-based machines to allow starting them without ROM. In this case CPU starts to execute instructions from the empty memory, but QEMU allows introspecting the machine configuration.
Signed-off-by: Pavel Dovgalyuk <pavel.dovgal...@ispras.ru> -- v2: - useless error reports were dropped (suggested by Peter Maydell) --- hw/arm/digic_boards.c | 8 ++++++-- hw/arm/gumstix.c | 12 ------------ hw/arm/omap_sx1.c | 5 ----- hw/arm/palm.c | 8 +------- 4 files changed, 7 insertions(+), 26 deletions(-) diff --git a/hw/arm/digic_boards.c b/hw/arm/digic_boards.c index d5524d3e72..4f39a001bb 100644 --- a/hw/arm/digic_boards.c +++ b/hw/arm/digic_boards.c @@ -101,8 +101,12 @@ static void digic_load_rom(DigicState *s, hwaddr addr, char *fn = qemu_find_file(QEMU_FILE_TYPE_BIOS, filename); if (!fn) { - error_report("Couldn't find rom image '%s'.", filename); - exit(1); + if (bios_name) { + error_report("Couldn't find rom image '%s'.", filename); + exit(1); + } else { + return; + } } rom_size = load_image_targphys(fn, addr, max_size); diff --git a/hw/arm/gumstix.c b/hw/arm/gumstix.c index 3a4bc332c4..fb9fd6ab9c 100644 --- a/hw/arm/gumstix.c +++ b/hw/arm/gumstix.c @@ -59,12 +59,6 @@ static void connex_init(MachineState *machine) cpu = pxa255_init(address_space_mem, connex_ram); dinfo = drive_get(IF_PFLASH, 0, 0); - if (!dinfo && !qtest_enabled()) { - error_report("A flash image must be given with the " - "'pflash' parameter"); - exit(1); - } - if (!pflash_cfi01_register(0x00000000, "connext.rom", connex_rom, dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, sector_len, 2, 0, 0, 0, 0, 0)) { @@ -89,12 +83,6 @@ static void verdex_init(MachineState *machine) cpu = pxa270_init(address_space_mem, verdex_ram, machine->cpu_type); dinfo = drive_get(IF_PFLASH, 0, 0); - if (!dinfo && !qtest_enabled()) { - error_report("A flash image must be given with the " - "'pflash' parameter"); - exit(1); - } - if (!pflash_cfi01_register(0x00000000, "verdex.rom", verdex_rom, dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, sector_len, 2, 0, 0, 0, 0, 0)) { diff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c index 57829b3744..ea3236cfb7 100644 --- a/hw/arm/omap_sx1.c +++ b/hw/arm/omap_sx1.c @@ -190,11 +190,6 @@ static void sx1_init(MachineState *machine, const int version) OMAP_CS1_BASE, &cs[1]); } - if (!machine->kernel_filename && !fl_idx && !qtest_enabled()) { - error_report("Kernel or Flash image must be specified"); - exit(1); - } - /* Load the kernel. */ arm_load_kernel(mpu->cpu, machine, &sx1_binfo); diff --git a/hw/arm/palm.c b/hw/arm/palm.c index e7bc9ea4c6..8225c252c4 100644 --- a/hw/arm/palm.c +++ b/hw/arm/palm.c @@ -231,7 +231,7 @@ static void palmte_init(MachineState *machine) static uint32_t cs1val = 0x0000e1a0; static uint32_t cs2val = 0x0000e1a0; static uint32_t cs3val = 0xe1a0e1a0; - int rom_size, rom_loaded = 0; + int rom_size; MachineClass *mc = MACHINE_GET_CLASS(machine); MemoryRegion *flash = g_new(MemoryRegion, 1); MemoryRegion *cs = g_new(MemoryRegion, 4); @@ -284,7 +284,6 @@ static void palmte_init(MachineState *machine) if (rom_size > 0) { rom_size = load_image_targphys(option_rom[0].name, OMAP_CS0_BASE, flash_size); - rom_loaded = 1; } if (rom_size < 0) { fprintf(stderr, "%s: error loading '%s'\n", @@ -292,11 +291,6 @@ static void palmte_init(MachineState *machine) } } - if (!rom_loaded && !machine->kernel_filename && !qtest_enabled()) { - fprintf(stderr, "Kernel or ROM image must be specified\n"); - exit(1); - } - /* Load the kernel. */ arm_load_kernel(mpu->cpu, machine, &palmte_binfo); }