提交 f7b200af 编写于 作者: H Hollis Blanchard 提交者: Avi Kivity

KVM: ppc: Add dbsr in kvm_vcpu_arch

Kernel for E500 need clear dbsr when startup.
So add dbsr register in kvm_vcpu_arch for BOOKE.
Signed-off-by: NLiu Yu <yu.liu@freescale.com>
Signed-off-by: NHollis Blanchard <hollisb@us.ibm.com>
Signed-off-by: NAvi Kivity <avi@redhat.com>
上级 d0c7dc03
...@@ -163,6 +163,7 @@ struct kvm_vcpu_arch { ...@@ -163,6 +163,7 @@ struct kvm_vcpu_arch {
u32 ccr1; u32 ccr1;
u32 dbcr0; u32 dbcr0;
u32 dbcr1; u32 dbcr1;
u32 dbsr;
#ifdef CONFIG_KVM_EXIT_TIMING #ifdef CONFIG_KVM_EXIT_TIMING
struct kvmppc_exit_timing timing_exit; struct kvmppc_exit_timing timing_exit;
......
...@@ -111,6 +111,8 @@ int kvmppc_booke_emulate_mtspr(struct kvm_vcpu *vcpu, int sprn, int rs) ...@@ -111,6 +111,8 @@ int kvmppc_booke_emulate_mtspr(struct kvm_vcpu *vcpu, int sprn, int rs)
vcpu->arch.dbcr0 = vcpu->arch.gpr[rs]; break; vcpu->arch.dbcr0 = vcpu->arch.gpr[rs]; break;
case SPRN_DBCR1: case SPRN_DBCR1:
vcpu->arch.dbcr1 = vcpu->arch.gpr[rs]; break; vcpu->arch.dbcr1 = vcpu->arch.gpr[rs]; break;
case SPRN_DBSR:
vcpu->arch.dbsr &= ~vcpu->arch.gpr[rs]; break;
case SPRN_TSR: case SPRN_TSR:
vcpu->arch.tsr &= ~vcpu->arch.gpr[rs]; break; vcpu->arch.tsr &= ~vcpu->arch.gpr[rs]; break;
case SPRN_TCR: case SPRN_TCR:
...@@ -204,6 +206,8 @@ int kvmppc_booke_emulate_mfspr(struct kvm_vcpu *vcpu, int sprn, int rt) ...@@ -204,6 +206,8 @@ int kvmppc_booke_emulate_mfspr(struct kvm_vcpu *vcpu, int sprn, int rt)
vcpu->arch.gpr[rt] = vcpu->arch.dbcr0; break; vcpu->arch.gpr[rt] = vcpu->arch.dbcr0; break;
case SPRN_DBCR1: case SPRN_DBCR1:
vcpu->arch.gpr[rt] = vcpu->arch.dbcr1; break; vcpu->arch.gpr[rt] = vcpu->arch.dbcr1; break;
case SPRN_DBSR:
vcpu->arch.gpr[rt] = vcpu->arch.dbsr; break;
case SPRN_IVOR0: case SPRN_IVOR0:
vcpu->arch.gpr[rt] = vcpu->arch.ivor[BOOKE_IRQPRIO_CRITICAL]; vcpu->arch.gpr[rt] = vcpu->arch.ivor[BOOKE_IRQPRIO_CRITICAL];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册