mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
cpu: make cpu_generic_init() abort QEMU on error
Almost every user of cpu_generic_init() checks for returned NULL and then reports failure in a custom way and aborts process. Some users assume that call can't fail and don't check for failure, though they should have checked for it. In either cases cpu_generic_init() failure is fatal, so instead of checking for failure and reporting it various ways, make cpu_generic_init() report errors in consistent way and terminate QEMU on failure. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <1505318697-77161-3-git-send-email-imammedo@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
parent
3c72234c98
commit
4482e05cbb
38 changed files with 7 additions and 176 deletions
|
@ -902,10 +902,6 @@ int main(int argc, char **argv)
|
|||
/* NOTE: we need to init the CPU at this stage to get
|
||||
qemu_host_page_size */
|
||||
cpu = cpu_init(cpu_model);
|
||||
if (!cpu) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
env = cpu->env_ptr;
|
||||
#if defined(TARGET_SPARC) || defined(TARGET_PPC)
|
||||
cpu_reset(cpu);
|
||||
|
|
|
@ -68,10 +68,6 @@ static void clipper_init(MachineState *machine)
|
|||
memset(cpus, 0, sizeof(cpus));
|
||||
for (i = 0; i < smp_cpus; ++i) {
|
||||
cpus[i] = ALPHA_CPU(cpu_generic_init(TYPE_ALPHA_CPU, cpu_model));
|
||||
if (!cpus[i]) {
|
||||
error_report("Unable to find CPU definition");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
cpus[0]->env.trap_arg0 = ram_size;
|
||||
|
|
|
@ -1594,10 +1594,6 @@ static void musicpal_init(MachineState *machine)
|
|||
cpu_model = "arm926";
|
||||
}
|
||||
cpu = ARM_CPU(cpu_generic_init(TYPE_ARM_CPU, cpu_model));
|
||||
if (!cpu) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* For now we use a fixed - the original - RAM size */
|
||||
memory_region_allocate_system_memory(ram, NULL, "musicpal.ram",
|
||||
|
|
|
@ -3864,10 +3864,6 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryRegion *system_memory,
|
|||
/* Core */
|
||||
s->mpu_model = omap310;
|
||||
s->cpu = ARM_CPU(cpu_generic_init(TYPE_ARM_CPU, core));
|
||||
if (s->cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
s->sdram_size = sdram_size;
|
||||
s->sram_size = OMAP15XX_SRAM_SIZE;
|
||||
|
||||
|
|
|
@ -2262,10 +2262,6 @@ struct omap_mpu_state_s *omap2420_mpu_init(MemoryRegion *sysmem,
|
|||
/* Core */
|
||||
s->mpu_model = omap2420;
|
||||
s->cpu = ARM_CPU(cpu_generic_init(TYPE_ARM_CPU, core ?: "arm1136-r2"));
|
||||
if (s->cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
s->sdram_size = sdram_size;
|
||||
s->sram_size = OMAP242X_SRAM_SIZE;
|
||||
|
||||
|
|
|
@ -2067,10 +2067,6 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space,
|
|||
revision = "pxa270";
|
||||
|
||||
s->cpu = ARM_CPU(cpu_generic_init(TYPE_ARM_CPU, revision));
|
||||
if (s->cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
s->reset = qemu_allocate_irq(pxa2xx_reset, s, 0);
|
||||
|
||||
/* SDRAM & Internal Memory Storage */
|
||||
|
@ -2197,10 +2193,6 @@ PXA2xxState *pxa255_init(MemoryRegion *address_space, unsigned int sdram_size)
|
|||
s = g_new0(PXA2xxState, 1);
|
||||
|
||||
s->cpu = ARM_CPU(cpu_generic_init(TYPE_ARM_CPU, "pxa255"));
|
||||
if (s->cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
s->reset = qemu_allocate_irq(pxa2xx_reset, s, 0);
|
||||
|
||||
/* SDRAM & Internal Memory Storage */
|
||||
|
|
|
@ -1599,11 +1599,6 @@ StrongARMState *sa1110_init(MemoryRegion *sysmem,
|
|||
|
||||
s->cpu = ARM_CPU(cpu_generic_init(TYPE_ARM_CPU, rev));
|
||||
|
||||
if (!s->cpu) {
|
||||
error_report("Unable to find CPU definition");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
memory_region_allocate_system_memory(&s->sdram, NULL, "strongarm.sdram",
|
||||
sdram_size);
|
||||
memory_region_add_subregion(sysmem, SA_SDCS0, &s->sdram);
|
||||
|
|
|
@ -105,10 +105,6 @@ static void lm32_evr_init(MachineState *machine)
|
|||
cpu_model = "lm32-full";
|
||||
}
|
||||
cpu = LM32_CPU(cpu_generic_init(TYPE_LM32_CPU, cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "qemu: unable to find CPU '%s'\n", cpu_model);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
env = &cpu->env;
|
||||
reset_info->cpu = cpu;
|
||||
|
@ -206,10 +202,6 @@ static void lm32_uclinux_init(MachineState *machine)
|
|||
cpu_model = "lm32-full";
|
||||
}
|
||||
cpu = LM32_CPU(cpu_generic_init(TYPE_LM32_CPU, cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "qemu: unable to find CPU '%s'\n", cpu_model);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
env = &cpu->env;
|
||||
reset_info->cpu = cpu;
|
||||
|
|
|
@ -112,10 +112,6 @@ milkymist_init(MachineState *machine)
|
|||
cpu_model = "lm32-full";
|
||||
}
|
||||
cpu = LM32_CPU(cpu_generic_init(TYPE_LM32_CPU, cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "qemu: unable to find CPU '%s'\n", cpu_model);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
env = &cpu->env;
|
||||
reset_info->cpu = cpu;
|
||||
|
|
|
@ -43,10 +43,6 @@ static void an5206_init(MachineState *machine)
|
|||
cpu_model = "m5206";
|
||||
}
|
||||
cpu = M68K_CPU(cpu_generic_init(TYPE_M68K_CPU, cpu_model));
|
||||
if (!cpu) {
|
||||
error_report("Unable to find m68k CPU definition");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
/* Initialize CPU registers. */
|
||||
|
|
|
@ -233,10 +233,6 @@ static void mcf5208evb_init(MachineState *machine)
|
|||
cpu_model = "m5208";
|
||||
}
|
||||
cpu = M68K_CPU(cpu_generic_init(TYPE_M68K_CPU, cpu_model));
|
||||
if (!cpu) {
|
||||
fprintf(stderr, "Unable to find m68k CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
/* Initialize CPU registers. */
|
||||
|
|
|
@ -72,10 +72,6 @@ static void mips_cps_realize(DeviceState *dev, Error **errp)
|
|||
|
||||
for (i = 0; i < s->num_vp; i++) {
|
||||
cpu = cpu_mips_init(s->cpu_model);
|
||||
if (cpu == NULL) {
|
||||
error_setg(errp, "%s: CPU initialization failed", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Init internal devices */
|
||||
cpu_mips_irq_init_cpu(cpu);
|
||||
|
|
|
@ -281,10 +281,6 @@ static void mips_fulong2e_init(MachineState *machine)
|
|||
cpu_model = "Loongson-2E";
|
||||
}
|
||||
cpu = cpu_mips_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
qemu_register_reset(main_cpu_reset, cpu);
|
||||
|
|
|
@ -152,10 +152,6 @@ static void mips_jazz_init(MachineState *machine,
|
|||
cpu_model = "R4000";
|
||||
}
|
||||
cpu = cpu_mips_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
qemu_register_reset(main_cpu_reset, cpu);
|
||||
|
||||
|
|
|
@ -932,10 +932,6 @@ static void create_cpu_without_cps(const char *cpu_model,
|
|||
|
||||
for (i = 0; i < smp_cpus; i++) {
|
||||
cpu = cpu_mips_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Init internal devices */
|
||||
cpu_mips_irq_init_cpu(cpu);
|
||||
|
|
|
@ -164,10 +164,6 @@ mips_mipssim_init(MachineState *machine)
|
|||
#endif
|
||||
}
|
||||
cpu = cpu_mips_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
reset_info = g_malloc0(sizeof(ResetData));
|
||||
|
|
|
@ -194,10 +194,6 @@ void mips_r4k_init(MachineState *machine)
|
|||
#endif
|
||||
}
|
||||
cpu = cpu_mips_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
reset_info = g_malloc0(sizeof(ResetData));
|
||||
|
|
|
@ -119,10 +119,6 @@ static void moxiesim_init(MachineState *machine)
|
|||
cpu_model = "MoxieLite-moxie-cpu";
|
||||
}
|
||||
cpu = MOXIE_CPU(cpu_generic_init(TYPE_MOXIE_CPU, cpu_model));
|
||||
if (!cpu) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
qemu_register_reset(main_cpu_reset, cpu);
|
||||
|
|
|
@ -110,10 +110,6 @@ static void openrisc_sim_init(MachineState *machine)
|
|||
|
||||
for (n = 0; n < smp_cpus; n++) {
|
||||
cpu = OPENRISC_CPU(cpu_generic_init(TYPE_OPENRISC_CPU, cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find CPU definition!\n");
|
||||
exit(1);
|
||||
}
|
||||
qemu_register_reset(main_cpu_reset, cpu);
|
||||
main_cpu_reset(cpu);
|
||||
}
|
||||
|
|
|
@ -817,10 +817,6 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
|
|||
|
||||
cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU,
|
||||
machine->cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to initialize CPU!\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
cs = CPU(cpu);
|
||||
|
||||
|
|
|
@ -189,10 +189,6 @@ static void ppc_core99_init(MachineState *machine)
|
|||
for (i = 0; i < smp_cpus; i++) {
|
||||
cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU,
|
||||
machine->cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find PowerPC CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
/* Set time-base frequency to 100 Mhz */
|
||||
|
|
|
@ -118,10 +118,6 @@ static void ppc_heathrow_init(MachineState *machine)
|
|||
for (i = 0; i < smp_cpus; i++) {
|
||||
cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU,
|
||||
machine->cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find PowerPC CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
/* Set time-base frequency to 16.6 Mhz */
|
||||
|
|
|
@ -187,10 +187,6 @@ static void bamboo_init(MachineState *machine)
|
|||
machine->cpu_model = "440EP";
|
||||
}
|
||||
cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU, machine->cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to initialize CPU!\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
if (env->mmu_model != POWERPC_MMU_BOOKE) {
|
||||
|
|
|
@ -57,11 +57,6 @@ PowerPCCPU *ppc4xx_init(const char *cpu_model,
|
|||
|
||||
/* init CPUs */
|
||||
cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU, cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find PowerPC %s CPU definition\n",
|
||||
cpu_model);
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
cpu_clk->cb = NULL; /* We don't care about CPU clock frequency changes */
|
||||
|
|
|
@ -522,10 +522,6 @@ static void ppc_prep_init(MachineState *machine)
|
|||
for (i = 0; i < smp_cpus; i++) {
|
||||
cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU,
|
||||
machine->cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find PowerPC CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
if (env->flags & POWERPC_FLAG_RTC_CLK) {
|
||||
|
@ -726,11 +722,6 @@ static void ibm_40p_init(MachineState *machine)
|
|||
machine->cpu_model = "604";
|
||||
}
|
||||
cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU, machine->cpu_model));
|
||||
if (!cpu) {
|
||||
error_report("could not initialize CPU '%s'",
|
||||
machine->cpu_model);
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
if (PPC_INPUT(env) != PPC_FLAGS_INPUT_6xx) {
|
||||
error_report("only 6xx bus is supported on this machine");
|
||||
|
|
|
@ -97,10 +97,6 @@ static PowerPCCPU *ppc440_init_xilinx(ram_addr_t *ram_size,
|
|||
qemu_irq *irqs;
|
||||
|
||||
cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU, cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to initialize CPU!\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
ppc_booke_timers_init(cpu, sysclk, 0/* no flags */);
|
||||
|
|
|
@ -247,10 +247,6 @@ static void r2d_init(MachineState *machine)
|
|||
}
|
||||
|
||||
cpu = SUPERH_CPU(cpu_generic_init(TYPE_SUPERH_CPU, cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
reset_info = g_malloc0(sizeof(ResetData));
|
||||
|
|
|
@ -57,10 +57,6 @@ static void shix_init(MachineState *machine)
|
|||
cpu_model = "any";
|
||||
|
||||
cpu = SUPERH_CPU(cpu_generic_init(TYPE_SUPERH_CPU, cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Allocate memory space */
|
||||
memory_region_init_ram(rom, NULL, "shix.rom", 0x4000, &error_fatal);
|
||||
|
|
|
@ -127,10 +127,6 @@ static void leon3_generic_hw_init(MachineState *machine)
|
|||
}
|
||||
|
||||
cpu = SPARC_CPU(cpu_generic_init(TYPE_SPARC_CPU, cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "qemu: Unable to find Sparc CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
cpu_sparc_set_id(env, 0);
|
||||
|
|
|
@ -798,10 +798,6 @@ static void cpu_devinit(const char *cpu_model, unsigned int id,
|
|||
CPUSPARCState *env;
|
||||
|
||||
cpu = SPARC_CPU(cpu_generic_init(TYPE_SPARC_CPU, cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "qemu: Unable to find Sparc CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
cpu_sparc_set_id(env, id);
|
||||
|
|
|
@ -354,10 +354,6 @@ SPARCCPU *sparc64_cpu_devinit(const char *cpu_model,
|
|||
cpu_model = default_cpu_model;
|
||||
}
|
||||
cpu = SPARC_CPU(cpu_generic_init(TYPE_SPARC_CPU, cpu_model));
|
||||
if (cpu == NULL) {
|
||||
fprintf(stderr, "Unable to find Sparc CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
env->tick = cpu_timer_create("tick", cpu, tick_irq,
|
||||
|
|
|
@ -75,10 +75,6 @@ static void tricore_testboard_init(MachineState *machine, int board_id)
|
|||
machine->cpu_model = "tc1796";
|
||||
}
|
||||
cpu = TRICORE_CPU(cpu_generic_init(TYPE_TRICORE_CPU, machine->cpu_model));
|
||||
if (!cpu) {
|
||||
error_report("Unable to find CPU definition");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
memory_region_init_ram(ext_cram, NULL, "powerlink_ext_c.ram",
|
||||
2 * 1024 * 1024, &error_fatal);
|
||||
|
|
|
@ -128,10 +128,6 @@ static void puv3_init(MachineState *machine)
|
|||
}
|
||||
|
||||
cpu = UNICORE32_CPU(cpu_generic_init(TYPE_UNICORE32_CPU, cpu_model));
|
||||
if (!cpu) {
|
||||
error_report("Unable to find CPU definition");
|
||||
exit(1);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
puv3_soc_init(env);
|
||||
|
|
|
@ -85,11 +85,6 @@ static void xtensa_sim_init(MachineState *machine)
|
|||
|
||||
for (n = 0; n < smp_cpus; n++) {
|
||||
cpu = XTENSA_CPU(cpu_generic_init(TYPE_XTENSA_CPU, cpu_model));
|
||||
if (cpu == NULL) {
|
||||
error_report("unable to find CPU definition '%s'",
|
||||
cpu_model);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
env->sregs[PRID] = n;
|
||||
|
|
|
@ -233,11 +233,6 @@ static void lx_init(const LxBoardDesc *board, MachineState *machine)
|
|||
|
||||
for (n = 0; n < smp_cpus; n++) {
|
||||
cpu = XTENSA_CPU(cpu_generic_init(TYPE_XTENSA_CPU, cpu_model));
|
||||
if (cpu == NULL) {
|
||||
error_report("unable to find CPU definition '%s'",
|
||||
cpu_model);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
env = &cpu->env;
|
||||
|
||||
env->sregs[PRID] = n;
|
||||
|
|
|
@ -661,7 +661,8 @@ CPUState *cpu_create(const char *typename);
|
|||
*
|
||||
* processes optional parameters and registers them as global properties
|
||||
*
|
||||
* Returns: type of CPU to create or %NULL if an error occurred.
|
||||
* Returns: type of CPU to create or prints error and terminates process
|
||||
* if an error occurred.
|
||||
*/
|
||||
const char *cpu_parse_cpu_model(const char *typename, const char *cpu_model);
|
||||
|
||||
|
|
|
@ -4323,10 +4323,6 @@ int main(int argc, char **argv, char **envp)
|
|||
/* NOTE: we need to init the CPU at this stage to get
|
||||
qemu_host_page_size */
|
||||
cpu = cpu_init(cpu_model);
|
||||
if (!cpu) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
env = cpu->env_ptr;
|
||||
cpu_reset(cpu);
|
||||
|
||||
|
|
19
qom/cpu.c
19
qom/cpu.c
|
@ -62,7 +62,7 @@ CPUState *cpu_create(const char *typename)
|
|||
if (err != NULL) {
|
||||
error_report_err(err);
|
||||
object_unref(OBJECT(cpu));
|
||||
return NULL;
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
return cpu;
|
||||
}
|
||||
|
@ -71,7 +71,6 @@ const char *cpu_parse_cpu_model(const char *typename, const char *cpu_model)
|
|||
{
|
||||
ObjectClass *oc;
|
||||
CPUClass *cc;
|
||||
Error *err = NULL;
|
||||
gchar **model_pieces;
|
||||
const char *cpu_type;
|
||||
|
||||
|
@ -79,18 +78,15 @@ const char *cpu_parse_cpu_model(const char *typename, const char *cpu_model)
|
|||
|
||||
oc = cpu_class_by_name(typename, model_pieces[0]);
|
||||
if (oc == NULL) {
|
||||
error_report("unable to find CPU model '%s'", model_pieces[0]);
|
||||
g_strfreev(model_pieces);
|
||||
return NULL;
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
cpu_type = object_class_get_name(oc);
|
||||
cc = CPU_CLASS(oc);
|
||||
cc->parse_features(cpu_type, model_pieces[1], &err);
|
||||
cc->parse_features(cpu_type, model_pieces[1], &error_fatal);
|
||||
g_strfreev(model_pieces);
|
||||
if (err != NULL) {
|
||||
error_report_err(err);
|
||||
return NULL;
|
||||
}
|
||||
return cpu_type;
|
||||
}
|
||||
|
||||
|
@ -99,12 +95,7 @@ CPUState *cpu_generic_init(const char *typename, const char *cpu_model)
|
|||
/* TODO: all callers of cpu_generic_init() need to be converted to
|
||||
* call cpu_parse_features() only once, before calling cpu_generic_init().
|
||||
*/
|
||||
const char *cpu_type = cpu_parse_cpu_model(typename, cpu_model);
|
||||
|
||||
if (cpu_type) {
|
||||
return cpu_create(cpu_type);
|
||||
}
|
||||
return NULL;
|
||||
return cpu_create(cpu_parse_cpu_model(typename, cpu_model));
|
||||
}
|
||||
|
||||
bool cpu_paging_enabled(const CPUState *cpu)
|
||||
|
|
Loading…
Reference in a new issue