X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=target-alpha%2Fcpu.c;h=a0d5d5bd9399d391eea357aa0669d36d5adc57e1;hb=51fb256ab5ebc3e1879eb1df9c828866a2ef8141;hp=cad17166017ea913942b0b10776d23e4bf55801f;hpb=d4d7682484f339d70355b165a15f8f5e83638e40;p=qemu.git diff --git a/target-alpha/cpu.c b/target-alpha/cpu.c index cad171660..a0d5d5bd9 100644 --- a/target-alpha/cpu.c +++ b/target-alpha/cpu.c @@ -21,14 +21,22 @@ #include "cpu.h" #include "qemu-common.h" +#include "migration/vmstate.h" +static void alpha_cpu_set_pc(CPUState *cs, vaddr value) +{ + AlphaCPU *cpu = ALPHA_CPU(cs); + + cpu->env.pc = value; +} + static void alpha_cpu_realizefn(DeviceState *dev, Error **errp) { - AlphaCPU *cpu = ALPHA_CPU(dev); + CPUState *cs = CPU(dev); AlphaCPUClass *acc = ALPHA_CPU_GET_CLASS(dev); - qemu_init_vcpu(&cpu->env); + qemu_init_vcpu(cs); acc->parent_realize(dev, errp); } @@ -123,7 +131,6 @@ static ObjectClass *alpha_cpu_class_by_name(const char *cpu_model) AlphaCPU *cpu_alpha_init(const char *cpu_model) { AlphaCPU *cpu; - CPUAlphaState *env; ObjectClass *cpu_class; cpu_class = alpha_cpu_class_by_name(cpu_model); @@ -132,9 +139,6 @@ AlphaCPU *cpu_alpha_init(const char *cpu_model) cpu_class = object_class_by_name(TYPE("ev67")); } cpu = ALPHA_CPU(object_new(object_class_get_name(cpu_class))); - env = &cpu->env; - - env->cpu_model_str = cpu_model; object_property_set_bool(OBJECT(cpu), true, "realized", NULL); @@ -264,6 +268,16 @@ static void alpha_cpu_class_init(ObjectClass *oc, void *data) cc->class_by_name = alpha_cpu_class_by_name; cc->do_interrupt = alpha_cpu_do_interrupt; + cc->dump_state = alpha_cpu_dump_state; + cc->set_pc = alpha_cpu_set_pc; + cc->gdb_read_register = alpha_cpu_gdb_read_register; + cc->gdb_write_register = alpha_cpu_gdb_write_register; +#ifndef CONFIG_USER_ONLY + cc->do_unassigned_access = alpha_cpu_unassigned_access; + cc->get_phys_page_debug = alpha_cpu_get_phys_page_debug; + dc->vmsd = &vmstate_alpha_cpu; +#endif + cc->gdb_num_core_regs = 67; } static const TypeInfo alpha_cpu_type_info = {