PPC: fix sregs usage on booke
When compiling qemu with kvm support on BookE PPC machines, I get the following error: cc1: warnings being treated as errors /tmp/qemu/target-ppc/kvm.c: In function 'kvm_arch_get_registers': /tmp/qemu/target-ppc/kvm.c:188: error: unused variable 'sregs' This is due to overly ambitious #ifdef'ery introduced in 90dc88. Fix it by keeping code that doesn't depend on new headers alive for the compiler, but never executed due to failing capability checks. CC: Scott Wood <scottwood@freescale.com> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
1ff7854e88
commit
fafc0b6afe
@ -45,9 +45,7 @@ const KVMCapabilityInfo kvm_arch_required_capabilities[] = {
|
|||||||
static int cap_interrupt_unset = false;
|
static int cap_interrupt_unset = false;
|
||||||
static int cap_interrupt_level = false;
|
static int cap_interrupt_level = false;
|
||||||
static int cap_segstate;
|
static int cap_segstate;
|
||||||
#ifdef KVM_CAP_PPC_BOOKE_SREGS
|
|
||||||
static int cap_booke_sregs;
|
static int cap_booke_sregs;
|
||||||
#endif
|
|
||||||
|
|
||||||
/* XXX We have a race condition where we actually have a level triggered
|
/* XXX We have a race condition where we actually have a level triggered
|
||||||
* interrupt, but the infrastructure can't expose that yet, so the guest
|
* interrupt, but the infrastructure can't expose that yet, so the guest
|
||||||
@ -222,13 +220,13 @@ int kvm_arch_get_registers(CPUState *env)
|
|||||||
for (i = 0;i < 32; i++)
|
for (i = 0;i < 32; i++)
|
||||||
env->gpr[i] = regs.gpr[i];
|
env->gpr[i] = regs.gpr[i];
|
||||||
|
|
||||||
#ifdef KVM_CAP_PPC_BOOKE_SREGS
|
|
||||||
if (cap_booke_sregs) {
|
if (cap_booke_sregs) {
|
||||||
ret = kvm_vcpu_ioctl(env, KVM_GET_SREGS, &sregs);
|
ret = kvm_vcpu_ioctl(env, KVM_GET_SREGS, &sregs);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef KVM_CAP_PPC_BOOKE_SREGS
|
||||||
if (sregs.u.e.features & KVM_SREGS_E_BASE) {
|
if (sregs.u.e.features & KVM_SREGS_E_BASE) {
|
||||||
env->spr[SPR_BOOKE_CSRR0] = sregs.u.e.csrr0;
|
env->spr[SPR_BOOKE_CSRR0] = sregs.u.e.csrr0;
|
||||||
env->spr[SPR_BOOKE_CSRR1] = sregs.u.e.csrr1;
|
env->spr[SPR_BOOKE_CSRR1] = sregs.u.e.csrr1;
|
||||||
@ -325,16 +323,16 @@ int kvm_arch_get_registers(CPUState *env)
|
|||||||
env->spr[SPR_BOOKE_PID2] = sregs.u.e.impl.fsl.pid2;
|
env->spr[SPR_BOOKE_PID2] = sregs.u.e.impl.fsl.pid2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef KVM_CAP_PPC_SEGSTATE
|
|
||||||
if (cap_segstate) {
|
if (cap_segstate) {
|
||||||
ret = kvm_vcpu_ioctl(env, KVM_GET_SREGS, &sregs);
|
ret = kvm_vcpu_ioctl(env, KVM_GET_SREGS, &sregs);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef KVM_CAP_PPC_SEGSTATE
|
||||||
ppc_store_sdr1(env, sregs.u.s.sdr1);
|
ppc_store_sdr1(env, sregs.u.s.sdr1);
|
||||||
|
|
||||||
/* Sync SLB */
|
/* Sync SLB */
|
||||||
@ -357,8 +355,8 @@ int kvm_arch_get_registers(CPUState *env)
|
|||||||
env->IBAT[0][i] = sregs.u.s.ppc32.ibat[i] & 0xffffffff;
|
env->IBAT[0][i] = sregs.u.s.ppc32.ibat[i] & 0xffffffff;
|
||||||
env->IBAT[1][i] = sregs.u.s.ppc32.ibat[i] >> 32;
|
env->IBAT[1][i] = sregs.u.s.ppc32.ibat[i] >> 32;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user