diff options
Diffstat (limited to 'hw/leon3.c')
-rw-r--r-- | hw/leon3.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/hw/leon3.c b/hw/leon3.c index 0a5ff165a1..878d3aa557 100644 --- a/hw/leon3.c +++ b/hw/leon3.c @@ -42,16 +42,16 @@ #define MAX_PILS 16 typedef struct ResetData { - CPUSPARCState *env; + SPARCCPU *cpu; uint32_t entry; /* save kernel entry in case of reset */ } ResetData; static void main_cpu_reset(void *opaque) { ResetData *s = (ResetData *)opaque; - CPUSPARCState *env = s->env; + CPUSPARCState *env = &s->cpu->env; - cpu_state_reset(env); + cpu_reset(CPU(s->cpu)); env->halted = 0; env->pc = s->entry; @@ -101,6 +101,7 @@ static void leon3_generic_hw_init(ram_addr_t ram_size, const char *initrd_filename, const char *cpu_model) { + SPARCCPU *cpu; CPUSPARCState *env; MemoryRegion *address_space_mem = get_system_memory(); MemoryRegion *ram = g_new(MemoryRegion, 1); @@ -117,17 +118,18 @@ static void leon3_generic_hw_init(ram_addr_t ram_size, cpu_model = "LEON3"; } - env = cpu_init(cpu_model); - if (!env) { + cpu = cpu_sparc_init(cpu_model); + if (cpu == NULL) { fprintf(stderr, "qemu: Unable to find Sparc CPU definition\n"); exit(1); } + env = &cpu->env; cpu_sparc_set_id(env, 0); /* Reset data */ reset_info = g_malloc0(sizeof(ResetData)); - reset_info->env = env; + reset_info->cpu = cpu; qemu_register_reset(main_cpu_reset, reset_info); /* Allocate IRQ manager */ |