Commit 00909b58 authored by Julian Brown's avatar Julian Brown Committed by Peter Maydell
Browse files

hw/arm/integratorcp: Support specifying features via -cpu



Since the integratorcp board creates the CPU object directly
rather than via cpu_arm_init(), we have to call the CPU
class parse_features() method ourselves if we want to
support the user passing features via the -cpu command
line argument as well as just the cpu name. Do so.

Signed-off-by: default avatarJulian Brown <julian@codesourcery.com>
[PMM: split out into its own patch]
Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parent 42922105
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -577,27 +577,42 @@ static void integratorcp_init(MachineState *machine)
    const char *kernel_filename = machine->kernel_filename;
    const char *kernel_cmdline = machine->kernel_cmdline;
    const char *initrd_filename = machine->initrd_filename;
    char **cpustr;
    ObjectClass *cpu_oc;
    CPUClass *cc;
    Object *cpuobj;
    ARMCPU *cpu;
    const char *typename;
    MemoryRegion *address_space_mem = get_system_memory();
    MemoryRegion *ram = g_new(MemoryRegion, 1);
    MemoryRegion *ram_alias = g_new(MemoryRegion, 1);
    qemu_irq pic[32];
    DeviceState *dev, *sic, *icp;
    int i;
    Error *err = NULL;

    if (!cpu_model) {
        cpu_model = "arm926";
    }

    cpu_oc = cpu_class_by_name(TYPE_ARM_CPU, cpu_model);
    cpustr = g_strsplit(cpu_model, ",", 2);

    cpu_oc = cpu_class_by_name(TYPE_ARM_CPU, cpustr[0]);
    if (!cpu_oc) {
        fprintf(stderr, "Unable to find CPU definition\n");
        exit(1);
    }
    typename = object_class_get_name(cpu_oc);

    cc = CPU_CLASS(cpu_oc);
    cc->parse_features(typename, cpustr[1], &err);
    g_strfreev(cpustr);
    if (err) {
        error_report_err(err);
        exit(1);
    }

    cpuobj = object_new(object_class_get_name(cpu_oc));
    cpuobj = object_new(typename);

    /* By default ARM1176 CPUs have EL3 enabled.  This board does not
     * currently support EL3 so the CPU EL3 property is disabled before