On Mon, Apr 16, 2012 at 20:47, Anthony Liguori <anth...@codemonkey.ws> wrote: > On 04/15/2012 11:32 AM, Blue Swirl wrote: >> >> Skip ROM or kernel loading and TCG init for qtest. >> >> For Xtensa there is no default board and the >> default board (g3beige) for PPCEMB seems to be wrong. >> >> Signed-off-by: Blue Swirl<blauwir...@gmail.com> > > > Why tcg_enabled() vs. !qtest_enabled()?
I picked that up from the earlier qtest patches. I'll use qtest_enabled(), that should not add confusion with later cases like KVM/ARM. Maybe I should also split the patch according to architectures. > > Regards, > > Anthony Liguori > >> --- >> hw/an5206.c | 4 +- >> hw/axis_dev88.c | 4 ++ >> hw/collie.c | 3 ++ >> hw/exynos4_boards.c | 8 +++- >> hw/highbank.c | 3 ++ >> hw/integratorcp.c | 3 ++ >> hw/mainstone.c | 3 ++ >> hw/mcf5208.c | 3 ++ >> hw/mips_fulong2e.c | 49 ++++++++++++----------- >> hw/mips_jazz.c | 31 ++++++++------- >> hw/mips_malta.c | 88 >> +++++++++++++++++++++-------------------- >> hw/mips_mipssim.c | 39 +++++++++--------- >> hw/musicpal.c | 3 ++ >> hw/omap_sx1.c | 2 +- >> hw/palm.c | 2 +- >> hw/realview.c | 3 ++ >> hw/s390-virtio.c | 68 +++++++++++++++---------------- >> hw/shix.c | 28 +++++++------ >> hw/spitz.c | 3 ++ >> hw/tosa.c | 3 ++ >> hw/versatilepb.c | 3 ++ >> hw/vexpress.c | 4 +- >> hw/xilinx_zynq.c | 3 ++ >> target-alpha/translate.c | 4 +- >> target-cris/translate.c | 5 ++- >> target-m68k/helper.c | 2 +- >> target-microblaze/translate.c | 3 +- >> target-mips/translate.c | 4 +- >> target-sh4/translate.c | 4 +- >> target-sparc/cpu.c | 4 +- >> 30 files changed, 228 insertions(+), 158 deletions(-) >> >> diff --git a/hw/an5206.c b/hw/an5206.c >> index 25407c0..355fccb 100644 >> --- a/hw/an5206.c >> +++ b/hw/an5206.c >> @@ -58,7 +58,7 @@ static void an5206_init(ram_addr_t ram_size, >> mcf5206_init(address_space_mem, AN5206_MBAR_ADDR, env); >> >> /* Load kernel. */ >> - if (!kernel_filename) { >> + if (tcg_enabled()&& !kernel_filename) { >> >> fprintf(stderr, "Kernel image must be specified\n"); >> exit(1); >> } >> @@ -74,7 +74,7 @@ static void an5206_init(ram_addr_t ram_size, >> ram_size - KERNEL_LOAD_ADDR); >> entry = KERNEL_LOAD_ADDR; >> } >> - if (kernel_size< 0) { >> + if (tcg_enabled()&& kernel_size< 0) { >> >> fprintf(stderr, "qemu: could not load kernel '%s'\n", >> kernel_filename); >> exit(1); >> } >> diff --git a/hw/axis_dev88.c b/hw/axis_dev88.c >> index 2304e35..b888dae 100644 >> --- a/hw/axis_dev88.c >> +++ b/hw/axis_dev88.c >> @@ -337,6 +337,10 @@ void axisdev88_init (ram_addr_t ram_size, >> irq[0x14 + i]); >> } >> >> + if (!tcg_enabled()) { >> + return; >> + } >> + >> if (!kernel_filename) { >> fprintf(stderr, "Kernel image must be specified\n"); >> exit(1); >> diff --git a/hw/collie.c b/hw/collie.c >> index 42f4310..4474d2a 100644 >> --- a/hw/collie.c >> +++ b/hw/collie.c >> @@ -49,6 +49,9 @@ static void collie_init(ram_addr_t ram_size, >> 512, 4, 0x00, 0x00, 0x00, 0x00, 0); >> >> sysbus_create_simple("scoop", 0x40800000, NULL); >> + if (!tcg_enabled()) { >> + return; >> + } >> >> collie_binfo.kernel_filename = kernel_filename; >> collie_binfo.kernel_cmdline = kernel_cmdline; >> diff --git a/hw/exynos4_boards.c b/hw/exynos4_boards.c >> index ea32c51..ae8070c 100644 >> --- a/hw/exynos4_boards.c >> +++ b/hw/exynos4_boards.c >> @@ -138,7 +138,9 @@ static void nuri_init(ram_addr_t ram_size, >> exynos4_boards_init_common(kernel_filename, kernel_cmdline, >> initrd_filename, EXYNOS4_BOARD_NURI); >> >> - arm_load_kernel(first_cpu,&exynos4_board_binfo); >> + if (tcg_enabled()) { >> + arm_load_kernel(first_cpu,&exynos4_board_binfo); >> + } >> } >> >> static void smdkc210_init(ram_addr_t ram_size, >> @@ -151,7 +153,9 @@ static void smdkc210_init(ram_addr_t ram_size, >> >> lan9215_init(SMDK_LAN9118_BASE_ADDR, >> qemu_irq_invert(s->irq_table[exynos4210_get_irq(37, 1)])); >> - arm_load_kernel(first_cpu,&exynos4_board_binfo); >> + if (tcg_enabled()) { >> + arm_load_kernel(first_cpu,&exynos4_board_binfo); >> + } >> } >> >> static QEMUMachine exynos4_machines[EXYNOS4_NUM_OF_BOARDS] = { >> diff --git a/hw/highbank.c b/hw/highbank.c >> index 906eed5..6b44580 100644 >> --- a/hw/highbank.c >> +++ b/hw/highbank.c >> @@ -305,6 +305,9 @@ static void highbank_init(ram_addr_t ram_size, >> sysbus_connect_irq(sysbus_from_qdev(dev), 1, pic[81]); >> sysbus_connect_irq(sysbus_from_qdev(dev), 2, pic[82]); >> } >> + if (!tcg_enabled()) { >> + return; >> + } >> >> highbank_binfo.ram_size = ram_size; >> highbank_binfo.kernel_filename = kernel_filename; >> diff --git a/hw/integratorcp.c b/hw/integratorcp.c >> index 9bdb9e6..8e84fbe 100644 >> --- a/hw/integratorcp.c >> +++ b/hw/integratorcp.c >> @@ -495,6 +495,9 @@ static void integratorcp_init(ram_addr_t ram_size, >> smc91c111_init(&nd_table[0], 0xc8000000, pic[27]); >> >> sysbus_create_simple("pl110", 0xc0000000, pic[22]); >> + if (!tcg_enabled()) { >> + return; >> + } >> >> integrator_binfo.ram_size = ram_size; >> integrator_binfo.kernel_filename = kernel_filename; >> diff --git a/hw/mainstone.c b/hw/mainstone.c >> index 27f5900..87d941d 100644 >> --- a/hw/mainstone.c >> +++ b/hw/mainstone.c >> @@ -164,6 +164,9 @@ static void mainstone_common_init(MemoryRegion >> *address_space_mem, >> smc91c111_init(&nd_table[0], MST_ETH_PHYS, >> qdev_get_gpio_in(mst_irq, ETHERNET_IRQ)); >> >> + if (!tcg_enabled()) { >> + return; >> + } >> mainstone_binfo.kernel_filename = kernel_filename; >> mainstone_binfo.kernel_cmdline = kernel_cmdline; >> mainstone_binfo.initrd_filename = initrd_filename; >> diff --git a/hw/mcf5208.c b/hw/mcf5208.c >> index d3ebe8d..1b8a424 100644 >> --- a/hw/mcf5208.c >> +++ b/hw/mcf5208.c >> @@ -262,6 +262,9 @@ static void mcf5208evb_init(ram_addr_t ram_size, >> /* 0xfc0a4000 GPIO. */ >> /* 0xfc0a8000 SDRAM controller. */ >> >> + if (!tcg_enabled()) { >> + return; >> + } >> /* Load kernel. */ >> if (!kernel_filename) { >> fprintf(stderr, "Kernel image must be specified\n"); >> diff --git a/hw/mips_fulong2e.c b/hw/mips_fulong2e.c >> index 37dc711..36bfb90 100644 >> --- a/hw/mips_fulong2e.c >> +++ b/hw/mips_fulong2e.c >> @@ -303,32 +303,33 @@ static void mips_fulong2e_init(ram_addr_t >> ram_size, const char *boot_device, >> memory_region_add_subregion(address_space_mem, 0, ram); >> memory_region_add_subregion(address_space_mem, 0x1fc00000LL, bios); >> >> - /* We do not support flash operation, just loading pmon.bin as raw >> BIOS. >> - * Please use -L to set the BIOS path and -bios to set bios name. */ >> - >> - if (kernel_filename) { >> - loaderparams.ram_size = ram_size; >> - loaderparams.kernel_filename = kernel_filename; >> - loaderparams.kernel_cmdline = kernel_cmdline; >> - loaderparams.initrd_filename = initrd_filename; >> - kernel_entry = load_kernel (env); >> - write_bootloader(env, memory_region_get_ram_ptr(bios), >> kernel_entry); >> - } else { >> - if (bios_name == NULL) { >> - bios_name = FULONG_BIOSNAME; >> - } >> - filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); >> - if (filename) { >> - bios_size = load_image_targphys(filename, 0x1fc00000LL, >> - BIOS_SIZE); >> - g_free(filename); >> + if (tcg_enabled()) { >> + /* We do not support flash operation, just loading pmon.bin >> as raw BIOS. >> + * Please use -L to set the BIOS path and -bios to set bios name. >> */ >> + if (kernel_filename) { >> + loaderparams.ram_size = ram_size; >> + loaderparams.kernel_filename = kernel_filename; >> + loaderparams.kernel_cmdline = kernel_cmdline; >> + loaderparams.initrd_filename = initrd_filename; >> + kernel_entry = load_kernel (env); >> + write_bootloader(env, memory_region_get_ram_ptr(bios), >> kernel_entry); >> } else { >> - bios_size = -1; >> - } >> + if (bios_name == NULL) { >> + bios_name = FULONG_BIOSNAME; >> + } >> + filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); >> + if (filename) { >> + bios_size = load_image_targphys(filename, 0x1fc00000LL, >> + BIOS_SIZE); >> + g_free(filename); >> + } else { >> + bios_size = -1; >> + } >> >> - if ((bios_size< 0 || bios_size> BIOS_SIZE)&& !kernel_filename) >> { >> >> - fprintf(stderr, "qemu: Could not load MIPS bios '%s'\n", >> bios_name); >> - exit(1); >> + if ((bios_size< 0 || bios_size> BIOS_SIZE)&& >> !kernel_filename) { >> >> + fprintf(stderr, "qemu: Could not load MIPS bios >> '%s'\n", bios_name); >> + exit(1); >> + } >> } >> } >> >> diff --git a/hw/mips_jazz.c b/hw/mips_jazz.c >> index a6bc7ba..b0f42ec 100644 >> --- a/hw/mips_jazz.c >> +++ b/hw/mips_jazz.c >> @@ -161,20 +161,23 @@ static void mips_jazz_init(MemoryRegion >> *address_space, >> memory_region_add_subregion(address_space, 0xfff00000LL, bios2); >> >> /* load the BIOS image. */ >> - if (bios_name == NULL) >> - bios_name = BIOS_FILENAME; >> - filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); >> - if (filename) { >> - bios_size = load_image_targphys(filename, 0xfff00000LL, >> - MAGNUM_BIOS_SIZE); >> - g_free(filename); >> - } else { >> - bios_size = -1; >> - } >> - if (bios_size< 0 || bios_size> MAGNUM_BIOS_SIZE) { >> - fprintf(stderr, "qemu: Could not load MIPS bios '%s'\n", >> - bios_name); >> - exit(1); >> + if (tcg_enabled()) { >> + if (bios_name == NULL) { >> + bios_name = BIOS_FILENAME; >> + } >> + filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); >> + if (filename) { >> + bios_size = load_image_targphys(filename, 0xfff00000LL, >> + MAGNUM_BIOS_SIZE); >> + g_free(filename); >> + } else { >> + bios_size = -1; >> + } >> + if (bios_size< 0 || bios_size> MAGNUM_BIOS_SIZE) { >> + fprintf(stderr, "qemu: Could not load MIPS bios '%s'\n", >> + bios_name); >> + exit(1); >> + } >> } >> >> /* Init CPU internal devices */ >> diff --git a/hw/mips_malta.c b/hw/mips_malta.c >> index 4752bb2..ebbe06a 100644 >> --- a/hw/mips_malta.c >> +++ b/hw/mips_malta.c >> @@ -872,58 +872,62 @@ void mips_malta_init (ram_addr_t ram_size, >> 4, 0x0000, 0x0000, 0x0000, 0x0000, be); >> bios = pflash_cfi01_get_memory(fl); >> fl_idx++; >> - if (kernel_filename) { >> - /* Write a small bootloader to the flash location. */ >> - loaderparams.ram_size = ram_size; >> - loaderparams.kernel_filename = kernel_filename; >> - loaderparams.kernel_cmdline = kernel_cmdline; >> - loaderparams.initrd_filename = initrd_filename; >> - kernel_entry = load_kernel(); >> - write_bootloader(env, memory_region_get_ram_ptr(bios), >> kernel_entry); >> - } else { >> - /* Load firmware from flash. */ >> - if (!dinfo) { >> - /* Load a BIOS image. */ >> - if (bios_name == NULL) { >> - bios_name = BIOS_FILENAME; >> - } >> - filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); >> - if (filename) { >> - bios_size = load_image_targphys(filename, FLASH_ADDRESS, >> - BIOS_SIZE); >> - g_free(filename); >> - } else { >> - bios_size = -1; >> - } >> - if ((bios_size< 0 || bios_size> BIOS_SIZE)&& >> !kernel_filename) { >> >> - fprintf(stderr, >> - "qemu: Could not load MIPS bios '%s', and no >> -kernel argument was specified\n", >> - bios_name); >> - exit(1); >> + if (tcg_enabled()) { >> + if (kernel_filename) { >> + /* Write a small bootloader to the flash location. */ >> + loaderparams.ram_size = ram_size; >> + loaderparams.kernel_filename = kernel_filename; >> + loaderparams.kernel_cmdline = kernel_cmdline; >> + loaderparams.initrd_filename = initrd_filename; >> + kernel_entry = load_kernel(); >> + write_bootloader(env, memory_region_get_ram_ptr(bios), >> kernel_entry); >> + } else { >> + /* Load firmware from flash. */ >> + if (!dinfo) { >> + /* Load a BIOS image. */ >> + if (bios_name == NULL) { >> + bios_name = BIOS_FILENAME; >> + } >> + filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, >> bios_name); >> + if (filename) { >> + bios_size = load_image_targphys(filename, >> FLASH_ADDRESS, >> + BIOS_SIZE); >> + g_free(filename); >> + } else { >> + bios_size = -1; >> + } >> + if ((bios_size< 0 || bios_size> BIOS_SIZE)&& >> !kernel_filename) { >> + fprintf(stderr, >> + "qemu: Could not load MIPS bios '%s', and >> no -kernel argument was specified\n", >> + bios_name); >> + exit(1); >> + } >> } >> - } >> - /* In little endian mode the 32bit words in the bios are swapped, >> - a neat trick which allows bi-endian firmware. */ >> + /* In little endian mode the 32bit words in the bios are >> swapped, >> + a neat trick which allows bi-endian firmware. */ >> #ifndef TARGET_WORDS_BIGENDIAN >> - { >> - uint32_t *addr = memory_region_get_ram_ptr(bios); >> - uint32_t *end = addr + bios_size; >> - while (addr< end) { >> - bswap32s(addr); >> - addr++; >> + { >> + uint32_t *addr = memory_region_get_ram_ptr(bios); >> + uint32_t *end = addr + bios_size; >> + while (addr< end) { >> + bswap32s(addr); >> + addr++; >> + } >> } >> - } >> #endif >> + } >> } >> >> /* Map the BIOS at a 2nd physical location, as on the real board. */ >> memory_region_init_alias(bios_alias, "bios.1fc", bios, 0, BIOS_SIZE); >> memory_region_add_subregion(system_memory, RESET_ADDRESS, >> bios_alias); >> >> - /* Board ID = 0x420 (Malta Board with CoreLV) >> - XXX: theoretically 0x1e000010 should map to flash and 0x1fc00010 >> should >> - map to the board ID. */ >> - stl_p(memory_region_get_ram_ptr(bios) + 0x10, 0x00000420); >> + if (tcg_enabled()) { >> + /* Board ID = 0x420 (Malta Board with CoreLV) >> + XXX: theoretically 0x1e000010 should map to flash and >> 0x1fc00010 should >> + map to the board ID. */ >> + stl_p(memory_region_get_ram_ptr(bios) + 0x10, 0x00000420); >> + } >> >> /* Init internal devices */ >> cpu_mips_irq_init_cpu(env); >> diff --git a/hw/mips_mipssim.c b/hw/mips_mipssim.c >> index 1ea7b58..a248619 100644 >> --- a/hw/mips_mipssim.c >> +++ b/hw/mips_mipssim.c >> @@ -174,24 +174,27 @@ mips_mipssim_init (ram_addr_t ram_size, >> /* Map the BIOS / boot exception handler. */ >> memory_region_add_subregion(address_space_mem, 0x1fc00000LL, bios); >> /* Load a BIOS / boot exception handler image. */ >> - if (bios_name == NULL) >> - bios_name = BIOS_FILENAME; >> - filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); >> - if (filename) { >> - bios_size = load_image_targphys(filename, 0x1fc00000LL, >> BIOS_SIZE); >> - g_free(filename); >> - } else { >> - bios_size = -1; >> - } >> - if ((bios_size< 0 || bios_size> BIOS_SIZE)&& !kernel_filename) { >> >> - /* Bail out if we have neither a kernel image nor boot vector >> code. */ >> - fprintf(stderr, >> - "qemu: Could not load MIPS bios '%s', and no -kernel >> argument was specified\n", >> - filename); >> - exit(1); >> - } else { >> - /* We have a boot vector start address. */ >> - env->active_tc.PC = (target_long)(int32_t)0xbfc00000; >> + if (tcg_enabled()) { >> + if (bios_name == NULL) { >> + bios_name = BIOS_FILENAME; >> + } >> + filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); >> + if (filename) { >> + bios_size = load_image_targphys(filename, 0x1fc00000LL, >> BIOS_SIZE); >> + g_free(filename); >> + } else { >> + bios_size = -1; >> + } >> + if ((bios_size< 0 || bios_size> BIOS_SIZE)&& !kernel_filename) >> { >> >> + /* Bail out if we have neither a kernel image nor boot >> vector code. */ >> + fprintf(stderr, >> + "qemu: Could not load MIPS bios '%s', and no >> -kernel argument was specified\n", >> + filename); >> + exit(1); >> + } else { >> + /* We have a boot vector start address. */ >> + env->active_tc.PC = (target_long)(int32_t)0xbfc00000; >> + } >> } >> >> if (kernel_filename) { >> diff --git a/hw/musicpal.c b/hw/musicpal.c >> index c9f845a..cdc71b0 100644 >> --- a/hw/musicpal.c >> +++ b/hw/musicpal.c >> @@ -1646,6 +1646,9 @@ static void musicpal_init(ram_addr_t ram_size, >> qdev_init_nofail(dev); >> sysbus_mmio_map(s, 0, MP_AUDIO_BASE); >> sysbus_connect_irq(s, 0, pic[MP_AUDIO_IRQ]); >> + if (!tcg_enabled()) { >> + return; >> + } >> >> musicpal_binfo.ram_size = MP_RAM_DEFAULT_SIZE; >> musicpal_binfo.kernel_filename = kernel_filename; >> diff --git a/hw/omap_sx1.c b/hw/omap_sx1.c >> index 4e8ec4a..162462a 100644 >> --- a/hw/omap_sx1.c >> +++ b/hw/omap_sx1.c >> @@ -192,7 +192,7 @@ static void sx1_init(ram_addr_t ram_size, >> OMAP_CS1_BASE,&cs[1]); >> } >> >> - if (!kernel_filename&& !fl_idx) { >> + if (tcg_enabled()&& !kernel_filename&& !fl_idx) { >> >> fprintf(stderr, "Kernel or Flash image must be specified\n"); >> exit(1); >> } >> diff --git a/hw/palm.c b/hw/palm.c >> index b1252ab..c293db5 100644 >> --- a/hw/palm.c >> +++ b/hw/palm.c >> @@ -255,7 +255,7 @@ static void palmte_init(ram_addr_t ram_size, >> } >> } >> >> - if (!rom_loaded&& !kernel_filename) { >> + if (tcg_enabled()&& !rom_loaded&& !kernel_filename) { >> >> fprintf(stderr, "Kernel or ROM image must be specified\n"); >> exit(1); >> } >> diff --git a/hw/realview.c b/hw/realview.c >> index cf55204..40f2b8b 100644 >> --- a/hw/realview.c >> +++ b/hw/realview.c >> @@ -395,6 +395,9 @@ static void realview_init(ram_addr_t ram_size, >> memory_region_init_ram(ram_hack, "realview.hack", 0x1000); >> vmstate_register_ram_global(ram_hack); >> memory_region_add_subregion(sysmem, SMP_BOOT_ADDR, ram_hack); >> + if (!tcg_enabled()) { >> + return; >> + } >> >> realview_binfo.ram_size = ram_size; >> realview_binfo.kernel_filename = kernel_filename; >> diff --git a/hw/s390-virtio.c b/hw/s390-virtio.c >> index 1ebe70d..7f7b5c8 100644 >> --- a/hw/s390-virtio.c >> +++ b/hw/s390-virtio.c >> @@ -223,43 +223,45 @@ static void s390_init(ram_addr_t my_ram_size, >> /* One CPU has to run */ >> s390_add_running_cpu(env); >> >> - if (kernel_filename) { >> + if (tcg_enabled()) { >> + if (kernel_filename) { >> >> - kernel_size = load_elf(kernel_filename, NULL, NULL, NULL, NULL, >> - NULL, 1, ELF_MACHINE, 0); >> - if (kernel_size == -1UL) { >> - kernel_size = load_image_targphys(kernel_filename, 0, >> ram_size); >> - } >> - /* >> - * we can not rely on the ELF entry point, since up to 3.2 this >> - * value was 0x800 (the SALIPL loader) and it wont work. For >> - * all (Linux) cases 0x10000 (KERN_IMAGE_START) should be fine. >> - */ >> - env->psw.addr = KERN_IMAGE_START; >> - env->psw.mask = 0x0000000180000000ULL; >> - } else { >> - ram_addr_t bios_size = 0; >> - char *bios_filename; >> - >> - /* Load zipl bootloader */ >> - if (bios_name == NULL) { >> - bios_name = ZIPL_FILENAME; >> - } >> + kernel_size = load_elf(kernel_filename, NULL, NULL, NULL, >> NULL, >> + NULL, 1, ELF_MACHINE, 0); >> + if (kernel_size == -1UL) { >> + kernel_size = load_image_targphys(kernel_filename, 0, >> ram_size); >> + } >> + /* >> + * we can not rely on the ELF entry point, since up to 3.2 >> this >> + * value was 0x800 (the SALIPL loader) and it wont work. For >> + * all (Linux) cases 0x10000 (KERN_IMAGE_START) should be >> fine. >> + */ >> + env->psw.addr = KERN_IMAGE_START; >> + env->psw.mask = 0x0000000180000000ULL; >> + } else { >> + ram_addr_t bios_size = 0; >> + char *bios_filename; >> >> - bios_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); >> - bios_size = load_image_targphys(bios_filename, ZIPL_LOAD_ADDR, >> 4096); >> - g_free(bios_filename); >> + /* Load zipl bootloader */ >> + if (bios_name == NULL) { >> + bios_name = ZIPL_FILENAME; >> + } >> >> - if ((long)bios_size< 0) { >> - hw_error("could not load bootloader '%s'\n", bios_name); >> - } >> + bios_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, >> bios_name); >> + bios_size = load_image_targphys(bios_filename, >> ZIPL_LOAD_ADDR, 4096); >> + g_free(bios_filename); >> >> - if (bios_size> 4096) { >> - hw_error("stage1 bootloader is> 4k\n"); >> - } >> + if ((long)bios_size< 0) { >> + hw_error("could not load bootloader '%s'\n", bios_name); >> + } >> >> - env->psw.addr = ZIPL_START; >> - env->psw.mask = 0x0000000180000000ULL; >> + if (bios_size> 4096) { >> + hw_error("stage1 bootloader is> 4k\n"); >> + } >> + >> + env->psw.addr = ZIPL_START; >> + env->psw.mask = 0x0000000180000000ULL; >> + } >> } >> >> if (initrd_filename) { >> @@ -274,7 +276,7 @@ static void s390_init(ram_addr_t my_ram_size, >> memcpy(rom_ptr(INITRD_PARM_SIZE),&initrd_size, 8); >> } >> >> - if (kernel_cmdline) { >> + if (tcg_enabled()&& kernel_cmdline) { >> >> /* we have to overwrite values in the kernel image, which are >> "rom" */ >> memcpy(rom_ptr(KERN_PARM_AREA), kernel_cmdline, >> strlen(kernel_cmdline) + 1); >> diff --git a/hw/shix.c b/hw/shix.c >> index dd9ce17..3d1ab05 100644 >> --- a/hw/shix.c >> +++ b/hw/shix.c >> @@ -70,22 +70,26 @@ static void shix_init(ram_addr_t ram_size, >> vmstate_register_ram_global(&sdram[1]); >> memory_region_add_subregion(sysmem, 0x0c000000,&sdram[1]); >> >> >> - /* Load BIOS in 0 (and access it through P2, 0xA0000000) */ >> - if (bios_name == NULL) >> - bios_name = BIOS_FILENAME; >> - printf("%s: load BIOS '%s'\n", __func__, bios_name); >> - ret = load_image_targphys(bios_name, 0, 0x4000); >> - if (ret< 0) { /* Check bios size */ >> - fprintf(stderr, "ret=%d\n", ret); >> - fprintf(stderr, "qemu: could not load SHIX bios '%s'\n", >> - bios_name); >> - exit(1); >> + if (tcg_enabled()) { >> + /* Load BIOS in 0 (and access it through P2, 0xA0000000) */ >> + if (bios_name == NULL) { >> + bios_name = BIOS_FILENAME; >> + } >> + printf("%s: load BIOS '%s'\n", __func__, bios_name); >> + ret = load_image_targphys(bios_name, 0, 0x4000); >> + if (ret< 0) { /* Check bios size */ >> + fprintf(stderr, "ret=%d\n", ret); >> + fprintf(stderr, "qemu: could not load SHIX bios '%s'\n", >> + bios_name); >> + exit(1); >> + } >> } >> - >> /* Register peripherals */ >> s = sh7750_init(env, sysmem); >> /* XXXXX Check success */ >> - tc58128_init(s, "shix_linux_nand.bin", NULL); >> + if (tcg_enabled()) { >> + tc58128_init(s, "shix_linux_nand.bin", NULL); >> + } >> fprintf(stderr, "initialization terminated\n"); >> } >> >> diff --git a/hw/spitz.c b/hw/spitz.c >> index 1d6d2b0..284cf78 100644 >> --- a/hw/spitz.c >> +++ b/hw/spitz.c >> @@ -928,6 +928,9 @@ static void spitz_common_init(ram_addr_t ram_size, >> /* A 4.0 GB microdrive is permanently sitting in CF slot 0. */ >> spitz_microdrive_attach(cpu, 0); >> >> + if (!tcg_enabled()) { >> + return; >> + } >> spitz_binfo.kernel_filename = kernel_filename; >> spitz_binfo.kernel_cmdline = kernel_cmdline; >> spitz_binfo.initrd_filename = initrd_filename; >> diff --git a/hw/tosa.c b/hw/tosa.c >> index 6baa17d..a66385e 100644 >> --- a/hw/tosa.c >> +++ b/hw/tosa.c >> @@ -237,6 +237,9 @@ static void tosa_init(ram_addr_t ram_size, >> tosa_microdrive_attach(cpu); >> >> tosa_tg_init(cpu); >> + if (!tcg_enabled()) { >> + return; >> + } >> >> tosa_binfo.kernel_filename = kernel_filename; >> tosa_binfo.kernel_cmdline = kernel_cmdline; >> diff --git a/hw/versatilepb.c b/hw/versatilepb.c >> index 25afb1e..0f91148 100644 >> --- a/hw/versatilepb.c >> +++ b/hw/versatilepb.c >> @@ -311,6 +311,9 @@ static void versatile_init(ram_addr_t ram_size, >> /* 0x101f3000 UART2. */ >> /* 0x101f4000 SSPI. */ >> >> + if (!tcg_enabled()) { >> + return; >> + } >> versatile_binfo.ram_size = ram_size; >> versatile_binfo.kernel_filename = kernel_filename; >> versatile_binfo.kernel_cmdline = kernel_cmdline; >> diff --git a/hw/vexpress.c b/hw/vexpress.c >> index 18d87ac..c7cee81 100644 >> --- a/hw/vexpress.c >> +++ b/hw/vexpress.c >> @@ -427,7 +427,9 @@ static void vexpress_common_init(const >> VEDBoardInfo *daughterboard, >> /* VE_USB: not modelled */ >> >> /* VE_DAPROM: not modelled */ >> - >> + if (!tcg_enabled()) { >> + return; >> + } >> vexpress_binfo.ram_size = ram_size; >> vexpress_binfo.kernel_filename = kernel_filename; >> vexpress_binfo.kernel_cmdline = kernel_cmdline; >> diff --git a/hw/xilinx_zynq.c b/hw/xilinx_zynq.c >> index 7290c64..813d0d7 100644 >> --- a/hw/xilinx_zynq.c >> +++ b/hw/xilinx_zynq.c >> @@ -130,6 +130,9 @@ static void zynq_init(ram_addr_t ram_size, const >> char *boot_device, >> } >> } >> >> + if (!tcg_enabled()) { >> + return; >> + } >> zynq_binfo.ram_size = ram_size; >> zynq_binfo.kernel_filename = kernel_filename; >> zynq_binfo.kernel_cmdline = kernel_cmdline; >> diff --git a/target-alpha/translate.c b/target-alpha/translate.c >> index 1f4565d..254c927 100644 >> --- a/target-alpha/translate.c >> +++ b/target-alpha/translate.c >> @@ -3530,7 +3530,9 @@ CPUAlphaState * cpu_alpha_init (const char >> *cpu_model) >> >> env = g_malloc0(sizeof(CPUAlphaState)); >> cpu_exec_init(env); >> - alpha_translate_init(); >> + if (tcg_enabled()) { >> + alpha_translate_init(); >> + } >> tlb_flush(env, 1); >> >> /* Default to ev67; no reason not to emulate insns by default. */ >> diff --git a/target-cris/translate.c b/target-cris/translate.c >> index 7224f46..fd9e563 100644 >> --- a/target-cris/translate.c >> +++ b/target-cris/translate.c >> @@ -3516,8 +3516,9 @@ CPUCRISState *cpu_cris_init (const char *cpu_model) >> cpu_state_reset(env); >> qemu_init_vcpu(env); >> >> - if (tcg_initialized) >> - return env; >> + if (!tcg_enabled() || tcg_initialized) { >> + return env; >> + } >> >> tcg_initialized = 1; >> >> diff --git a/target-m68k/helper.c b/target-m68k/helper.c >> index 1feed9b..358499e 100644 >> --- a/target-m68k/helper.c >> +++ b/target-m68k/helper.c >> @@ -169,7 +169,7 @@ CPUM68KState *cpu_m68k_init(const char *cpu_model) >> >> env = g_malloc0(sizeof(CPUM68KState)); >> cpu_exec_init(env); >> - if (!inited) { >> + if (tcg_enabled()&& !inited) { >> >> inited = 1; >> m68k_tcg_init(); >> } >> diff --git a/target-microblaze/translate.c b/target-microblaze/translate.c >> index b602820..5346580 100644 >> --- a/target-microblaze/translate.c >> +++ b/target-microblaze/translate.c >> @@ -1902,8 +1902,9 @@ CPUMBState *cpu_mb_init (const char *cpu_model) >> qemu_init_vcpu(env); >> set_float_rounding_mode(float_round_nearest_even,&env->fp_status); >> >> >> - if (tcg_initialized) >> + if (!tcg_enabled() || tcg_initialized) { >> return env; >> + } >> >> tcg_initialized = 1; >> >> diff --git a/target-mips/translate.c b/target-mips/translate.c >> index a663b74..edffae2 100644 >> --- a/target-mips/translate.c >> +++ b/target-mips/translate.c >> @@ -12707,7 +12707,9 @@ CPUMIPSState *cpu_mips_init (const char >> *cpu_model) >> #endif >> fpu_init(env, def); >> mvp_init(env, def); >> - mips_tcg_init(); >> + if (tcg_enabled()) { >> + mips_tcg_init(); >> + } >> cpu_state_reset(env); >> qemu_init_vcpu(env); >> return env; >> diff --git a/target-sh4/translate.c b/target-sh4/translate.c >> index a337beb..4ec32ab 100644 >> --- a/target-sh4/translate.c >> +++ b/target-sh4/translate.c >> @@ -277,7 +277,9 @@ CPUSH4State *cpu_sh4_init(const char *cpu_model) >> env->features = def->features; >> cpu_exec_init(env); >> env->movcal_backup_tail =&(env->movcal_backup); >> >> - sh4_translate_init(); >> + if (tcg_enabled()) { >> + sh4_translate_init(); >> + } >> env->cpu_model_str = cpu_model; >> cpu_state_reset(env); >> cpu_register(env, def); >> diff --git a/target-sparc/cpu.c b/target-sparc/cpu.c >> index 24f90f1..7ac6bdb 100644 >> --- a/target-sparc/cpu.c >> +++ b/target-sparc/cpu.c >> @@ -119,7 +119,9 @@ CPUSPARCState *cpu_sparc_init(const char *cpu_model) >> cpu = SPARC_CPU(object_new(TYPE_SPARC_CPU)); >> env =&cpu->env; >> >> >> - gen_intermediate_code_init(env); >> + if (tcg_enabled()) { >> + gen_intermediate_code_init(env); >> + } >> >> if (cpu_sparc_register(env, cpu_model)< 0) { >> object_delete(OBJECT(cpu)); > >