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 |