[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH for-next 03/74] target-i386: Pass X86CPU to do_cpu_{
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PATCH for-next 03/74] target-i386: Pass X86CPU to do_cpu_{init, sipi}() |
Date: |
Sun, 6 May 2012 17:34:03 +0200 |
Allows to use cpu_reset() in place of cpu_state_reset().
Signed-off-by: Andreas Färber <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 b5b9a50..4bff61d 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -1051,8 +1051,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 0b22582..fe181be 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 for-next 00/74] QOM CPUState, part 3: CPU reset, Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 01/74] target-arm: Use cpu_reset() in cpu_arm_init(), Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 04/74] target-i386: Let cpu_x86_init() return X86CPU, Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 05/74] pc: Use cpu_x86_init() to obtain X86CPU, Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 02/74] target-mips: Use cpu_reset() in cpu_mips_init(), Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 08/74] sun4m: Use cpu_sparc_init() to obtain SPARCCPU, Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 06/74] pc: Pass X86CPU to pc_cpu_reset(), Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 03/74] target-i386: Pass X86CPU to do_cpu_{init, sipi}(),
Andreas Färber <=
- [Qemu-devel] [PATCH for-next 07/74] target-sparc: Let cpu_sparc_init() return SPARCCPU, Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 10/74] sun4u: Use cpu_sparc_init() to obtain SPARCCPU, Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 16/74] ppce500_mpc8544ds: Pass PowerPCCPU to mpc8544ds_cpu_reset[_sec], Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 19/74] ppc440_bamboo: Use cpu_ppc_init() to obtain PowerPCCPU, Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 12/74] sun4u: Store SPARCCPU in ResetData, Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 14/74] leon3: Store SPARCCPU in ResetData, Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 11/74] sun4u: Let cpu_devinit() return SPARCCPU, Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 13/74] leon3: Use cpu_sparc_init() to obtain SPARCCPU, Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 21/74] ppc4xx_devs: Use cpu_ppc_init() to obtain PowerPCCPU, Andreas Färber, 2012/05/06
- [Qemu-devel] [PATCH for-next 09/74] sun4m: Pass SPARCCPU to {main, secondary}_cpu_reset(), Andreas Färber, 2012/05/06