Commit 7b833f5b2188b354e5f03ebf24a8ed1fa06dbfdd
1 parent
bda42033
Sparc64: refactor CPU init
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Showing
1 changed file
with
27 additions
and
19 deletions
hw/sun4u.c
| @@ -458,32 +458,14 @@ static void ram_register_devices(void) | @@ -458,32 +458,14 @@ static void ram_register_devices(void) | ||
| 458 | 458 | ||
| 459 | device_init(ram_register_devices); | 459 | device_init(ram_register_devices); |
| 460 | 460 | ||
| 461 | -static void sun4uv_init(ram_addr_t RAM_size, | ||
| 462 | - const char *boot_devices, | ||
| 463 | - const char *kernel_filename, const char *kernel_cmdline, | ||
| 464 | - const char *initrd_filename, const char *cpu_model, | ||
| 465 | - const struct hwdef *hwdef) | 461 | +static CPUState *cpu_devinit(const char *cpu_model, const struct hwdef *hwdef) |
| 466 | { | 462 | { |
| 467 | CPUState *env; | 463 | CPUState *env; |
| 468 | - m48t59_t *nvram; | ||
| 469 | - int linux_boot; | ||
| 470 | - unsigned int i; | ||
| 471 | - long initrd_size, kernel_size; | ||
| 472 | - PCIBus *pci_bus, *pci_bus2, *pci_bus3; | ||
| 473 | QEMUBH *bh; | 464 | QEMUBH *bh; |
| 474 | - qemu_irq *irq; | ||
| 475 | - int drive_index; | ||
| 476 | - BlockDriverState *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; | ||
| 477 | - BlockDriverState *fd[MAX_FD]; | ||
| 478 | - void *fw_cfg; | ||
| 479 | ResetData *reset_info; | 465 | ResetData *reset_info; |
| 480 | 466 | ||
| 481 | - linux_boot = (kernel_filename != NULL); | ||
| 482 | - | ||
| 483 | - /* init CPUs */ | ||
| 484 | if (!cpu_model) | 467 | if (!cpu_model) |
| 485 | cpu_model = hwdef->default_cpu_model; | 468 | cpu_model = hwdef->default_cpu_model; |
| 486 | - | ||
| 487 | env = cpu_init(cpu_model); | 469 | env = cpu_init(cpu_model); |
| 488 | if (!env) { | 470 | if (!env) { |
| 489 | fprintf(stderr, "Unable to find Sparc CPU definition\n"); | 471 | fprintf(stderr, "Unable to find Sparc CPU definition\n"); |
| @@ -510,6 +492,32 @@ static void sun4uv_init(ram_addr_t RAM_size, | @@ -510,6 +492,32 @@ static void sun4uv_init(ram_addr_t RAM_size, | ||
| 510 | env->pc = hwdef->prom_addr + 0x20ULL; | 492 | env->pc = hwdef->prom_addr + 0x20ULL; |
| 511 | env->npc = env->pc + 4; | 493 | env->npc = env->pc + 4; |
| 512 | 494 | ||
| 495 | + return env; | ||
| 496 | +} | ||
| 497 | + | ||
| 498 | +static void sun4uv_init(ram_addr_t RAM_size, | ||
| 499 | + const char *boot_devices, | ||
| 500 | + const char *kernel_filename, const char *kernel_cmdline, | ||
| 501 | + const char *initrd_filename, const char *cpu_model, | ||
| 502 | + const struct hwdef *hwdef) | ||
| 503 | +{ | ||
| 504 | + CPUState *env; | ||
| 505 | + m48t59_t *nvram; | ||
| 506 | + int linux_boot; | ||
| 507 | + unsigned int i; | ||
| 508 | + long initrd_size, kernel_size; | ||
| 509 | + PCIBus *pci_bus, *pci_bus2, *pci_bus3; | ||
| 510 | + qemu_irq *irq; | ||
| 511 | + int drive_index; | ||
| 512 | + BlockDriverState *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; | ||
| 513 | + BlockDriverState *fd[MAX_FD]; | ||
| 514 | + void *fw_cfg; | ||
| 515 | + | ||
| 516 | + linux_boot = (kernel_filename != NULL); | ||
| 517 | + | ||
| 518 | + /* init CPUs */ | ||
| 519 | + env = cpu_devinit(cpu_model, hwdef); | ||
| 520 | + | ||
| 513 | /* set up devices */ | 521 | /* set up devices */ |
| 514 | ram_init(0, RAM_size); | 522 | ram_init(0, RAM_size); |
| 515 | 523 |