diff --git a/qemu/target/arm/cpu64.c b/qemu/target/arm/cpu64.c index 52933554..a91dc6d4 100644 --- a/qemu/target/arm/cpu64.c +++ b/qemu/target/arm/cpu64.c @@ -320,8 +320,6 @@ static const ARMCPUInfo aarch64_cpus[] = { ARMCPU *cpu_aarch64_init(struct uc_struct *uc) { - int i; - char *cpu_model = "cortex-a72"; ARMCPU *cpu; CPUState *cs; CPUClass *cc; @@ -331,6 +329,13 @@ ARMCPU *cpu_aarch64_init(struct uc_struct *uc) return NULL; } + if (uc->cpu_model == INT_MAX) { + uc->cpu_model = UC_CPU_AARCH64_A72; + } else if (uc->cpu_model >= sizeof(aarch64_cpus)) { + free(cpu); + return NULL; + } + cs = (CPUState *)cpu; cc = (CPUClass *)&cpu->cc; cs->cc = cc; @@ -349,17 +354,8 @@ ARMCPU *cpu_aarch64_init(struct uc_struct *uc) /* init ARMCPU */ arm_cpu_initfn(uc, cs); - for (i = 0; i < ARRAY_SIZE(aarch64_cpus); i++) { - if (strcmp(cpu_model, aarch64_cpus[i].name) == 0) { - if (aarch64_cpus[i].initfn) { - aarch64_cpus[i].initfn(uc, cs); - } - break; - } - } - if (i == ARRAY_SIZE(aarch64_cpus)) { - free(cpu); - return NULL; + if (aarch64_cpus[uc->cpu_model].initfn) { + aarch64_cpus[uc->cpu_model].initfn(uc, cs); } /* postinit ARMCPU */