diff options
Diffstat (limited to 'target-i386')
| -rw-r--r-- | target-i386/cpu-qom.h | 3 | ||||
| -rw-r--r-- | target-i386/cpu.c | 2 | ||||
| -rw-r--r-- | target-i386/helper.c | 11 | ||||
| -rw-r--r-- | target-i386/kvm.c | 12 |
4 files changed, 16 insertions, 12 deletions
diff --git a/target-i386/cpu-qom.h b/target-i386/cpu-qom.h index e0ac072c5f..b7c70d6ddc 100644 --- a/target-i386/cpu-qom.h +++ b/target-i386/cpu-qom.h @@ -101,4 +101,7 @@ int x86_cpu_write_elf32_qemunote(WriteCoreDumpFunction f, CPUState *cpu, void x86_cpu_get_memory_mapping(CPUState *cpu, MemoryMappingList *list, Error **errp); +void x86_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf, + int flags); + #endif diff --git a/target-i386/cpu.c b/target-i386/cpu.c index a7154af11d..b7416fea35 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -2392,7 +2392,6 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp) #endif mce_init(cpu); - qemu_init_vcpu(&cpu->env); x86_cpu_apic_realize(cpu, &local_err); if (local_err != NULL) { @@ -2526,6 +2525,7 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data) cc->reset = x86_cpu_reset; cc->do_interrupt = x86_cpu_do_interrupt; + cc->dump_state = x86_cpu_dump_state; cc->get_arch_id = x86_cpu_get_arch_id; cc->get_paging_enabled = x86_cpu_get_paging_enabled; #ifndef CONFIG_USER_ONLY diff --git a/target-i386/helper.c b/target-i386/helper.c index 158710a89c..5e5abe3b86 100644 --- a/target-i386/helper.c +++ b/target-i386/helper.c @@ -179,15 +179,16 @@ done: #define DUMP_CODE_BYTES_TOTAL 50 #define DUMP_CODE_BYTES_BACKWARD 20 -void cpu_dump_state(CPUX86State *env, FILE *f, fprintf_function cpu_fprintf, - int flags) +void x86_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf, + int flags) { - CPUState *cs = CPU(x86_env_get_cpu(env)); + X86CPU *cpu = X86_CPU(cs); + CPUX86State *env = &cpu->env; int eflags, i, nb; char cc_op_name[32]; static const char *seg_name[6] = { "ES", "CS", "SS", "DS", "FS", "GS" }; - cpu_synchronize_state(env); + cpu_synchronize_state(cs); eflags = cpu_compute_eflags(env); #ifdef TARGET_X86_64 @@ -1116,7 +1117,7 @@ static void do_inject_x86_mce(void *data) CPUState *cpu = CPU(params->cpu); uint64_t *banks = cenv->mce_banks + 4 * params->bank; - cpu_synchronize_state(cenv); + cpu_synchronize_state(cpu); /* * If there is an MCE exception being processed, ignore this SRAO MCE diff --git a/target-i386/kvm.c b/target-i386/kvm.c index 9ffb6ca018..39f4fbb3cf 100644 --- a/target-i386/kvm.c +++ b/target-i386/kvm.c @@ -1857,7 +1857,7 @@ int kvm_arch_process_async_events(CPUState *cs) cs->interrupt_request &= ~CPU_INTERRUPT_MCE; - kvm_cpu_synchronize_state(env); + kvm_cpu_synchronize_state(cs); if (env->exception_injected == EXCP08_DBLE) { /* this means triple fault */ @@ -1888,16 +1888,16 @@ int kvm_arch_process_async_events(CPUState *cs) cs->halted = 0; } if (cs->interrupt_request & CPU_INTERRUPT_INIT) { - kvm_cpu_synchronize_state(env); + kvm_cpu_synchronize_state(cs); do_cpu_init(cpu); } if (cs->interrupt_request & CPU_INTERRUPT_SIPI) { - kvm_cpu_synchronize_state(env); + kvm_cpu_synchronize_state(cs); do_cpu_sipi(cpu); } if (cs->interrupt_request & CPU_INTERRUPT_TPR) { cs->interrupt_request &= ~CPU_INTERRUPT_TPR; - kvm_cpu_synchronize_state(env); + kvm_cpu_synchronize_state(cs); apic_handle_tpr_access_report(env->apic_state, env->eip, env->tpr_access_type); } @@ -2079,7 +2079,7 @@ static int kvm_handle_debug(X86CPU *cpu, ret = EXCP_DEBUG; } if (ret == 0) { - cpu_synchronize_state(env); + cpu_synchronize_state(CPU(cpu)); assert(env->exception_injected == -1); /* pass to guest */ @@ -2184,7 +2184,7 @@ bool kvm_arch_stop_on_emulation_error(CPUState *cs) X86CPU *cpu = X86_CPU(cs); CPUX86State *env = &cpu->env; - kvm_cpu_synchronize_state(env); + kvm_cpu_synchronize_state(cs); return !(env->cr[0] & CR0_PE_MASK) || ((env->segs[R_CS].selector & 3) != 3); } |