realview.c (ef475b5dd12684591e6264e517eaa5b3e90f7ffa) realview.c (ba1ba5cca3962a9cc400c713c736b4fb8db1f38e)
1/*
2 * ARM RealView Baseboard System emulation.
3 *
4 * Copyright (c) 2006-2007 CodeSourcery.
5 * Written by Paul Brook
6 *
7 * This code is licensed under the GPL.
8 */

--- 43 unchanged lines hidden (view full) ---

52 0x76d
53};
54
55static void realview_init(MachineState *machine,
56 enum realview_board_type board_type)
57{
58 ARMCPU *cpu = NULL;
59 CPUARMState *env;
1/*
2 * ARM RealView Baseboard System emulation.
3 *
4 * Copyright (c) 2006-2007 CodeSourcery.
5 * Written by Paul Brook
6 *
7 * This code is licensed under the GPL.
8 */

--- 43 unchanged lines hidden (view full) ---

52 0x76d
53};
54
55static void realview_init(MachineState *machine,
56 enum realview_board_type board_type)
57{
58 ARMCPU *cpu = NULL;
59 CPUARMState *env;
60 ObjectClass *cpu_oc;
61 MemoryRegion *sysmem = get_system_memory();
62 MemoryRegion *ram_lo;
63 MemoryRegion *ram_hi = g_new(MemoryRegion, 1);
64 MemoryRegion *ram_alias = g_new(MemoryRegion, 1);
65 MemoryRegion *ram_hack = g_new(MemoryRegion, 1);
66 DeviceState *dev, *sysctl, *gpio2, *pl041;
67 SysBusDevice *busdev;
68 qemu_irq pic[64];

--- 24 unchanged lines hidden (view full) ---

93 break;
94 case BOARD_PBX_A9:
95 is_mpcore = 1;
96 is_pb = 1;
97 periphbase = 0x1f000000;
98 break;
99 }
100
60 MemoryRegion *sysmem = get_system_memory();
61 MemoryRegion *ram_lo;
62 MemoryRegion *ram_hi = g_new(MemoryRegion, 1);
63 MemoryRegion *ram_alias = g_new(MemoryRegion, 1);
64 MemoryRegion *ram_hack = g_new(MemoryRegion, 1);
65 DeviceState *dev, *sysctl, *gpio2, *pl041;
66 SysBusDevice *busdev;
67 qemu_irq pic[64];

--- 24 unchanged lines hidden (view full) ---

92 break;
93 case BOARD_PBX_A9:
94 is_mpcore = 1;
95 is_pb = 1;
96 periphbase = 0x1f000000;
97 break;
98 }
99
101 cpu_oc = cpu_class_by_name(TYPE_ARM_CPU, machine->cpu_model);
102 if (!cpu_oc) {
103 fprintf(stderr, "Unable to find CPU definition\n");
104 exit(1);
105 }
106
107 for (n = 0; n < smp_cpus; n++) {
100 for (n = 0; n < smp_cpus; n++) {
108 Object *cpuobj = object_new(object_class_get_name(cpu_oc));
101 Object *cpuobj = object_new(machine->cpu_type);
109
110 /* By default A9,A15 and ARM1176 CPUs have EL3 enabled. This board
111 * does not currently support EL3 so the CPU EL3 property is disabled
112 * before realization.
113 */
114 if (object_property_find(cpuobj, "has_el3", NULL)) {
115 object_property_set_bool(cpuobj, false, "has_el3", &error_fatal);
116 }

--- 239 unchanged lines hidden (view full) ---

356 realview_binfo.nb_cpus = smp_cpus;
357 realview_binfo.board_id = realview_board_id[board_type];
358 realview_binfo.loader_start = (board_type == BOARD_PB_A8 ? 0x70000000 : 0);
359 arm_load_kernel(ARM_CPU(first_cpu), &realview_binfo);
360}
361
362static void realview_eb_init(MachineState *machine)
363{
102
103 /* By default A9,A15 and ARM1176 CPUs have EL3 enabled. This board
104 * does not currently support EL3 so the CPU EL3 property is disabled
105 * before realization.
106 */
107 if (object_property_find(cpuobj, "has_el3", NULL)) {
108 object_property_set_bool(cpuobj, false, "has_el3", &error_fatal);
109 }

--- 239 unchanged lines hidden (view full) ---

349 realview_binfo.nb_cpus = smp_cpus;
350 realview_binfo.board_id = realview_board_id[board_type];
351 realview_binfo.loader_start = (board_type == BOARD_PB_A8 ? 0x70000000 : 0);
352 arm_load_kernel(ARM_CPU(first_cpu), &realview_binfo);
353}
354
355static void realview_eb_init(MachineState *machine)
356{
364 if (!machine->cpu_model) {
365 machine->cpu_model = "arm926";
366 }
367 realview_init(machine, BOARD_EB);
368}
369
370static void realview_eb_mpcore_init(MachineState *machine)
371{
357 realview_init(machine, BOARD_EB);
358}
359
360static void realview_eb_mpcore_init(MachineState *machine)
361{
372 if (!machine->cpu_model) {
373 machine->cpu_model = "arm11mpcore";
374 }
375 realview_init(machine, BOARD_EB_MPCORE);
376}
377
378static void realview_pb_a8_init(MachineState *machine)
379{
362 realview_init(machine, BOARD_EB_MPCORE);
363}
364
365static void realview_pb_a8_init(MachineState *machine)
366{
380 if (!machine->cpu_model) {
381 machine->cpu_model = "cortex-a8";
382 }
383 realview_init(machine, BOARD_PB_A8);
384}
385
386static void realview_pbx_a9_init(MachineState *machine)
387{
367 realview_init(machine, BOARD_PB_A8);
368}
369
370static void realview_pbx_a9_init(MachineState *machine)
371{
388 if (!machine->cpu_model) {
389 machine->cpu_model = "cortex-a9";
390 }
391 realview_init(machine, BOARD_PBX_A9);
392}
393
394static void realview_eb_class_init(ObjectClass *oc, void *data)
395{
396 MachineClass *mc = MACHINE_CLASS(oc);
397
398 mc->desc = "ARM RealView Emulation Baseboard (ARM926EJ-S)";
399 mc->init = realview_eb_init;
400 mc->block_default_type = IF_SCSI;
401 mc->ignore_memory_transaction_failures = true;
372 realview_init(machine, BOARD_PBX_A9);
373}
374
375static void realview_eb_class_init(ObjectClass *oc, void *data)
376{
377 MachineClass *mc = MACHINE_CLASS(oc);
378
379 mc->desc = "ARM RealView Emulation Baseboard (ARM926EJ-S)";
380 mc->init = realview_eb_init;
381 mc->block_default_type = IF_SCSI;
382 mc->ignore_memory_transaction_failures = true;
383 mc->default_cpu_type = ARM_CPU_TYPE_NAME("arm926");
402}
403
404static const TypeInfo realview_eb_type = {
405 .name = MACHINE_TYPE_NAME("realview-eb"),
406 .parent = TYPE_MACHINE,
407 .class_init = realview_eb_class_init,
408};
409
410static void realview_eb_mpcore_class_init(ObjectClass *oc, void *data)
411{
412 MachineClass *mc = MACHINE_CLASS(oc);
413
414 mc->desc = "ARM RealView Emulation Baseboard (ARM11MPCore)";
415 mc->init = realview_eb_mpcore_init;
416 mc->block_default_type = IF_SCSI;
417 mc->max_cpus = 4;
418 mc->ignore_memory_transaction_failures = true;
384}
385
386static const TypeInfo realview_eb_type = {
387 .name = MACHINE_TYPE_NAME("realview-eb"),
388 .parent = TYPE_MACHINE,
389 .class_init = realview_eb_class_init,
390};
391
392static void realview_eb_mpcore_class_init(ObjectClass *oc, void *data)
393{
394 MachineClass *mc = MACHINE_CLASS(oc);
395
396 mc->desc = "ARM RealView Emulation Baseboard (ARM11MPCore)";
397 mc->init = realview_eb_mpcore_init;
398 mc->block_default_type = IF_SCSI;
399 mc->max_cpus = 4;
400 mc->ignore_memory_transaction_failures = true;
401 mc->default_cpu_type = ARM_CPU_TYPE_NAME("arm11mpcore");
419}
420
421static const TypeInfo realview_eb_mpcore_type = {
422 .name = MACHINE_TYPE_NAME("realview-eb-mpcore"),
423 .parent = TYPE_MACHINE,
424 .class_init = realview_eb_mpcore_class_init,
425};
426
427static void realview_pb_a8_class_init(ObjectClass *oc, void *data)
428{
429 MachineClass *mc = MACHINE_CLASS(oc);
430
431 mc->desc = "ARM RealView Platform Baseboard for Cortex-A8";
432 mc->init = realview_pb_a8_init;
433 mc->ignore_memory_transaction_failures = true;
402}
403
404static const TypeInfo realview_eb_mpcore_type = {
405 .name = MACHINE_TYPE_NAME("realview-eb-mpcore"),
406 .parent = TYPE_MACHINE,
407 .class_init = realview_eb_mpcore_class_init,
408};
409
410static void realview_pb_a8_class_init(ObjectClass *oc, void *data)
411{
412 MachineClass *mc = MACHINE_CLASS(oc);
413
414 mc->desc = "ARM RealView Platform Baseboard for Cortex-A8";
415 mc->init = realview_pb_a8_init;
416 mc->ignore_memory_transaction_failures = true;
417 mc->default_cpu_type = ARM_CPU_TYPE_NAME("cortex-a8");
434}
435
436static const TypeInfo realview_pb_a8_type = {
437 .name = MACHINE_TYPE_NAME("realview-pb-a8"),
438 .parent = TYPE_MACHINE,
439 .class_init = realview_pb_a8_class_init,
440};
441
442static void realview_pbx_a9_class_init(ObjectClass *oc, void *data)
443{
444 MachineClass *mc = MACHINE_CLASS(oc);
445
446 mc->desc = "ARM RealView Platform Baseboard Explore for Cortex-A9";
447 mc->init = realview_pbx_a9_init;
448 mc->max_cpus = 4;
449 mc->ignore_memory_transaction_failures = true;
418}
419
420static const TypeInfo realview_pb_a8_type = {
421 .name = MACHINE_TYPE_NAME("realview-pb-a8"),
422 .parent = TYPE_MACHINE,
423 .class_init = realview_pb_a8_class_init,
424};
425
426static void realview_pbx_a9_class_init(ObjectClass *oc, void *data)
427{
428 MachineClass *mc = MACHINE_CLASS(oc);
429
430 mc->desc = "ARM RealView Platform Baseboard Explore for Cortex-A9";
431 mc->init = realview_pbx_a9_init;
432 mc->max_cpus = 4;
433 mc->ignore_memory_transaction_failures = true;
434 mc->default_cpu_type = ARM_CPU_TYPE_NAME("cortex-a9");
450}
451
452static const TypeInfo realview_pbx_a9_type = {
453 .name = MACHINE_TYPE_NAME("realview-pbx-a9"),
454 .parent = TYPE_MACHINE,
455 .class_init = realview_pbx_a9_class_init,
456};
457
458static void realview_machine_init(void)
459{
460 type_register_static(&realview_eb_type);
461 type_register_static(&realview_eb_mpcore_type);
462 type_register_static(&realview_pb_a8_type);
463 type_register_static(&realview_pbx_a9_type);
464}
465
466type_init(realview_machine_init)
435}
436
437static const TypeInfo realview_pbx_a9_type = {
438 .name = MACHINE_TYPE_NAME("realview-pbx-a9"),
439 .parent = TYPE_MACHINE,
440 .class_init = realview_pbx_a9_class_init,
441};
442
443static void realview_machine_init(void)
444{
445 type_register_static(&realview_eb_type);
446 type_register_static(&realview_eb_mpcore_type);
447 type_register_static(&realview_pb_a8_type);
448 type_register_static(&realview_pbx_a9_type);
449}
450
451type_init(realview_machine_init)