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) |