[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 26/74] target-i386: Pass X86CPU to do_cpu_{init, sip
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PATCH 26/74] target-i386: Pass X86CPU to do_cpu_{init, sipi}() |
Date: |
Tue, 5 Jun 2012 03:21:58 +0200 |
Allows to use cpu_reset() in place of cpu_state_reset().
Signed-off-by: Andreas Färber <address@hidden>
Reviewed-by: Igor Mammedov <address@hidden>
---
cpu-exec.c | 4 ++--
target-i386/cpu.h | 4 ++--
target-i386/helper.c | 13 ++++++++-----
target-i386/kvm.c | 6 ++++--
4 files changed, 16 insertions(+), 11 deletions(-)
diff --git a/cpu-exec.c b/cpu-exec.c
index 0344cd5..fbb39cb 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -287,11 +287,11 @@ int cpu_exec(CPUArchState *env)
#if defined(TARGET_I386)
if (interrupt_request & CPU_INTERRUPT_INIT) {
svm_check_intercept(env, SVM_EXIT_INIT);
- do_cpu_init(env);
+ do_cpu_init(x86_env_get_cpu(env));
env->exception_index = EXCP_HALTED;
cpu_loop_exit(env);
} else if (interrupt_request & CPU_INTERRUPT_SIPI) {
- do_cpu_sipi(env);
+ do_cpu_sipi(x86_env_get_cpu(env));
} else if (env->hflags2 & HF2_GIF_MASK) {
if ((interrupt_request & CPU_INTERRUPT_SMI) &&
!(env->hflags & HF_SMM_MASK)) {
diff --git a/target-i386/cpu.h b/target-i386/cpu.h
index 2460f63..aeff20b 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -1053,8 +1053,8 @@ static inline void cpu_get_tb_cpu_state(CPUX86State *env,
target_ulong *pc,
(env->eflags & (IOPL_MASK | TF_MASK | RF_MASK | VM_MASK));
}
-void do_cpu_init(CPUX86State *env);
-void do_cpu_sipi(CPUX86State *env);
+void do_cpu_init(X86CPU *cpu);
+void do_cpu_sipi(X86CPU *cpu);
#define MCE_INJECT_BROADCAST 1
#define MCE_INJECT_UNCOND_AO 2
diff --git a/target-i386/helper.c b/target-i386/helper.c
index 3421be2..e182025 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -1187,27 +1187,30 @@ CPUX86State *cpu_x86_init(const char *cpu_model)
}
#if !defined(CONFIG_USER_ONLY)
-void do_cpu_init(CPUX86State *env)
+void do_cpu_init(X86CPU *cpu)
{
+ CPUX86State *env = &cpu->env;
int sipi = env->interrupt_request & CPU_INTERRUPT_SIPI;
uint64_t pat = env->pat;
- cpu_state_reset(env);
+ cpu_reset(CPU(cpu));
env->interrupt_request = sipi;
env->pat = pat;
apic_init_reset(env->apic_state);
env->halted = !cpu_is_bsp(env);
}
-void do_cpu_sipi(CPUX86State *env)
+void do_cpu_sipi(X86CPU *cpu)
{
+ CPUX86State *env = &cpu->env;
+
apic_sipi(env->apic_state);
}
#else
-void do_cpu_init(CPUX86State *env)
+void do_cpu_init(X86CPU *cpu)
{
}
-void do_cpu_sipi(CPUX86State *env)
+void do_cpu_sipi(X86CPU *cpu)
{
}
#endif
diff --git a/target-i386/kvm.c b/target-i386/kvm.c
index e74a9e4..0d0d8f6 100644
--- a/target-i386/kvm.c
+++ b/target-i386/kvm.c
@@ -1698,6 +1698,8 @@ void kvm_arch_post_run(CPUX86State *env, struct kvm_run
*run)
int kvm_arch_process_async_events(CPUX86State *env)
{
+ X86CPU *cpu = x86_env_get_cpu(env);
+
if (env->interrupt_request & CPU_INTERRUPT_MCE) {
/* We must not raise CPU_INTERRUPT_MCE if it's not supported. */
assert(env->mcg_cap);
@@ -1732,11 +1734,11 @@ int kvm_arch_process_async_events(CPUX86State *env)
}
if (env->interrupt_request & CPU_INTERRUPT_INIT) {
kvm_cpu_synchronize_state(env);
- do_cpu_init(env);
+ do_cpu_init(cpu);
}
if (env->interrupt_request & CPU_INTERRUPT_SIPI) {
kvm_cpu_synchronize_state(env);
- do_cpu_sipi(env);
+ do_cpu_sipi(cpu);
}
if (env->interrupt_request & CPU_INTERRUPT_TPR) {
env->interrupt_request &= ~CPU_INTERRUPT_TPR;
--
1.7.7
- [Qemu-devel] [PATCH 13/74] xtensa_sim: Use cpu_xtensa_init() to obtain XtensaCPU, (continued)
- [Qemu-devel] [PATCH 13/74] xtensa_sim: Use cpu_xtensa_init() to obtain XtensaCPU, Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 16/74] xtensa_lx60: Pass XtensaCPU to lx60_reset(), Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 23/74] petalogix_ml605: Use cpu_mb_init() to obtain MicroBlazeCPU, Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 17/74] target-cris: Reindent cpu_cris_init(), Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 21/74] cris-boot: Pass CRISCPU to main_cpu_reset()., Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 20/74] cris-boot: Pass CRISCPU to cris_load_image(), Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 18/74] target-cris: Let cpu_cris_init() return CRISCPU, Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 22/74] target-microblaze: Let cpu_mb_init() return MicroBlazeCPU, Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 25/74] microblaze_boot: Pass MicroBlazeCPU to microblaze_load_kernel(), Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 24/74] petalogix_s3adsp1800_mmu: Use cpu_mb_init() to obtain MicroBlazeCPU, Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 26/74] target-i386: Pass X86CPU to do_cpu_{init, sipi}(),
Andreas Färber <=
- [Qemu-devel] [PATCH 30/74] target-sh4: Let cpu_sh4_init() return SuperHCPU, Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 28/74] pc: Use cpu_x86_init() to obtain X86CPU, Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 27/74] target-i386: Let cpu_x86_init() return X86CPU, Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 31/74] r2d: Use cpu_sh4_init() to obtain SuperHCPU, Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 41/74] mips_malta: Pass MIPSCPU to main_cpu_reset(), Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 32/74] r2d: Store SuperHCPU in ResetData, Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 29/74] pc: Pass X86CPU to pc_cpu_reset(), Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 33/74] target-mips: Use cpu_reset() in cpu_mips_init(), Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 43/74] mips_mipssim: Store MIPSCPU in ResetData, Andreas Färber, 2012/06/04
- [Qemu-devel] [PATCH 42/74] mips_mipssim: Use cpu_mips_init() to obtain MIPSCPU, Andreas Färber, 2012/06/04