diff options
author | Avi Kivity <avi@redhat.com> | 2010-06-21 18:18:18 +0300 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2010-06-21 18:18:18 +0300 |
commit | 303d1f34a55d36c60f1042a868638b19ae3d89f0 (patch) | |
tree | c5d43328e97031fe4a09a0631856d47eafac6c4a /target-i386 | |
parent | 6de75b40ade8b7eac6539c5d62cf14114268f667 (diff) | |
parent | 4a942ceac7e38c259116960e45ba9619611d1df9 (diff) |
Merge commit '4a942ceac7e38c259116960e45ba9619611d1df9' into upstream-merge
* commit '4a942ceac7e38c259116960e45ba9619611d1df9':
apic: avoid passing CPUState from CPU code
apic: avoid passing CPUState from devices
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'target-i386')
-rw-r--r-- | target-i386/cpu.h | 14 | ||||
-rw-r--r-- | target-i386/helper.c | 4 | ||||
-rw-r--r-- | target-i386/kvm.c | 14 | ||||
-rw-r--r-- | target-i386/op_helper.c | 8 |
4 files changed, 17 insertions, 23 deletions
diff --git a/target-i386/cpu.h b/target-i386/cpu.h index c32f854f2..49e59ccfc 100644 --- a/target-i386/cpu.h +++ b/target-i386/cpu.h @@ -882,14 +882,6 @@ void cpu_x86_update_cr0(CPUX86State *env, uint32_t new_cr0); void cpu_x86_update_cr3(CPUX86State *env, target_ulong new_cr3); void cpu_x86_update_cr4(CPUX86State *env, uint32_t new_cr4); -/* hw/apic.c */ -void cpu_set_apic_base(CPUX86State *env, uint64_t val); -uint64_t cpu_get_apic_base(CPUX86State *env); -void cpu_set_apic_tpr(CPUX86State *env, uint8_t val); -#ifndef NO_CPU_IO_DEFS -uint8_t cpu_get_apic_tpr(CPUX86State *env); -#endif - /* hw/pc.c */ void cpu_smm_update(CPUX86State *env); uint64_t cpu_get_tsc(CPUX86State *env); @@ -952,6 +944,10 @@ static inline void cpu_clone_regs(CPUState *env, target_ulong newsp) #include "svm.h" +#if !defined(CONFIG_USER_ONLY) +#include "hw/apic.h" +#endif + static inline void cpu_pc_from_tb(CPUState *env, TranslationBlock *tb) { env->eip = tb->pc - tb->cs_base; @@ -966,8 +962,6 @@ static inline void cpu_get_tb_cpu_state(CPUState *env, target_ulong *pc, (env->eflags & (IOPL_MASK | TF_MASK | RF_MASK | VM_MASK)); } -void apic_init_reset(CPUState *env); -void apic_sipi(CPUState *env); void do_cpu_init(CPUState *env); void do_cpu_sipi(CPUState *env); #endif /* CPU_I386_H */ diff --git a/target-i386/helper.c b/target-i386/helper.c index ae7fbf1fe..9072a3495 100644 --- a/target-i386/helper.c +++ b/target-i386/helper.c @@ -1157,12 +1157,12 @@ void do_cpu_init(CPUState *env) int sipi = env->interrupt_request & CPU_INTERRUPT_SIPI; cpu_reset(env); env->interrupt_request = sipi; - apic_init_reset(env); + apic_init_reset(env->apic_state); } void do_cpu_sipi(CPUState *env) { - apic_sipi(env); + apic_sipi(env->apic_state); } #else void do_cpu_init(CPUState *env) diff --git a/target-i386/kvm.c b/target-i386/kvm.c index 57327f586..791fedaba 100644 --- a/target-i386/kvm.c +++ b/target-i386/kvm.c @@ -558,8 +558,8 @@ static int kvm_put_sregs(CPUState *env) sregs.cr3 = env->cr[3]; sregs.cr4 = env->cr[4]; - sregs.cr8 = cpu_get_apic_tpr(env); - sregs.apic_base = cpu_get_apic_base(env); + sregs.cr8 = cpu_get_apic_tpr(env->apic_state); + sregs.apic_base = cpu_get_apic_base(env->apic_state); sregs.efer = env->efer; @@ -674,10 +674,10 @@ static int kvm_get_sregs(CPUState *env) env->cr[3] = sregs.cr3; env->cr[4] = sregs.cr4; - cpu_set_apic_base(env, sregs.apic_base); + cpu_set_apic_base(env->apic_state, sregs.apic_base); env->efer = sregs.efer; - //cpu_set_apic_tpr(env, sregs.cr8); + //cpu_set_apic_tpr(env->apic_state, sregs.cr8); #define HFLAG_COPY_MASK ~( \ HF_CPL_MASK | HF_PE_MASK | HF_MP_MASK | HF_EM_MASK | \ @@ -1083,7 +1083,7 @@ int kvm_arch_pre_run(CPUState *env, struct kvm_run *run) run->request_interrupt_window = 0; DPRINTF("setting tpr\n"); - run->cr8 = cpu_get_apic_tpr(env); + run->cr8 = cpu_get_apic_tpr(env->apic_state); return 0; } @@ -1096,8 +1096,8 @@ int kvm_arch_post_run(CPUState *env, struct kvm_run *run) else env->eflags &= ~IF_MASK; - cpu_set_apic_tpr(env, run->cr8); - cpu_set_apic_base(env, run->apic_base); + cpu_set_apic_tpr(env->apic_state, run->cr8); + cpu_set_apic_base(env->apic_state, run->apic_base); return 0; } diff --git a/target-i386/op_helper.c b/target-i386/op_helper.c index dcbdfe7e0..c1256f4ab 100644 --- a/target-i386/op_helper.c +++ b/target-i386/op_helper.c @@ -2888,7 +2888,7 @@ target_ulong helper_read_crN(int reg) break; case 8: if (!(env->hflags2 & HF2_VINTR_MASK)) { - val = cpu_get_apic_tpr(env); + val = cpu_get_apic_tpr(env->apic_state); } else { val = env->v_tpr; } @@ -2912,7 +2912,7 @@ void helper_write_crN(int reg, target_ulong t0) break; case 8: if (!(env->hflags2 & HF2_VINTR_MASK)) { - cpu_set_apic_tpr(env, t0); + cpu_set_apic_tpr(env->apic_state, t0); } env->v_tpr = t0 & 0x0f; break; @@ -3020,7 +3020,7 @@ void helper_wrmsr(void) env->sysenter_eip = val; break; case MSR_IA32_APICBASE: - cpu_set_apic_base(env, val); + cpu_set_apic_base(env->apic_state, val); break; case MSR_EFER: { @@ -3153,7 +3153,7 @@ void helper_rdmsr(void) val = env->sysenter_eip; break; case MSR_IA32_APICBASE: - val = cpu_get_apic_base(env); + val = cpu_get_apic_base(env->apic_state); break; case MSR_EFER: val = env->efer; |