diff options
Diffstat (limited to 'arch/powerpc/kvm/44x_emulate.c')
| -rw-r--r-- | arch/powerpc/kvm/44x_emulate.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/arch/powerpc/kvm/44x_emulate.c b/arch/powerpc/kvm/44x_emulate.c index 61af58fcecee..65ea083a5b27 100644 --- a/arch/powerpc/kvm/44x_emulate.c +++ b/arch/powerpc/kvm/44x_emulate.c | |||
| @@ -65,13 +65,14 @@ int kvmppc_core_emulate_op(struct kvm_run *run, struct kvm_vcpu *vcpu, | |||
| 65 | */ | 65 | */ |
| 66 | switch (dcrn) { | 66 | switch (dcrn) { |
| 67 | case DCRN_CPR0_CONFIG_ADDR: | 67 | case DCRN_CPR0_CONFIG_ADDR: |
| 68 | vcpu->arch.gpr[rt] = vcpu->arch.cpr0_cfgaddr; | 68 | kvmppc_set_gpr(vcpu, rt, vcpu->arch.cpr0_cfgaddr); |
| 69 | break; | 69 | break; |
| 70 | case DCRN_CPR0_CONFIG_DATA: | 70 | case DCRN_CPR0_CONFIG_DATA: |
| 71 | local_irq_disable(); | 71 | local_irq_disable(); |
| 72 | mtdcr(DCRN_CPR0_CONFIG_ADDR, | 72 | mtdcr(DCRN_CPR0_CONFIG_ADDR, |
| 73 | vcpu->arch.cpr0_cfgaddr); | 73 | vcpu->arch.cpr0_cfgaddr); |
| 74 | vcpu->arch.gpr[rt] = mfdcr(DCRN_CPR0_CONFIG_DATA); | 74 | kvmppc_set_gpr(vcpu, rt, |
| 75 | mfdcr(DCRN_CPR0_CONFIG_DATA)); | ||
| 75 | local_irq_enable(); | 76 | local_irq_enable(); |
| 76 | break; | 77 | break; |
| 77 | default: | 78 | default: |
| @@ -93,11 +94,11 @@ int kvmppc_core_emulate_op(struct kvm_run *run, struct kvm_vcpu *vcpu, | |||
| 93 | /* emulate some access in kernel */ | 94 | /* emulate some access in kernel */ |
| 94 | switch (dcrn) { | 95 | switch (dcrn) { |
| 95 | case DCRN_CPR0_CONFIG_ADDR: | 96 | case DCRN_CPR0_CONFIG_ADDR: |
| 96 | vcpu->arch.cpr0_cfgaddr = vcpu->arch.gpr[rs]; | 97 | vcpu->arch.cpr0_cfgaddr = kvmppc_get_gpr(vcpu, rs); |
| 97 | break; | 98 | break; |
| 98 | default: | 99 | default: |
| 99 | run->dcr.dcrn = dcrn; | 100 | run->dcr.dcrn = dcrn; |
| 100 | run->dcr.data = vcpu->arch.gpr[rs]; | 101 | run->dcr.data = kvmppc_get_gpr(vcpu, rs); |
| 101 | run->dcr.is_write = 1; | 102 | run->dcr.is_write = 1; |
| 102 | vcpu->arch.dcr_needed = 1; | 103 | vcpu->arch.dcr_needed = 1; |
| 103 | kvmppc_account_exit(vcpu, DCR_EXITS); | 104 | kvmppc_account_exit(vcpu, DCR_EXITS); |
| @@ -146,13 +147,13 @@ int kvmppc_core_emulate_mtspr(struct kvm_vcpu *vcpu, int sprn, int rs) | |||
| 146 | 147 | ||
| 147 | switch (sprn) { | 148 | switch (sprn) { |
| 148 | case SPRN_PID: | 149 | case SPRN_PID: |
| 149 | kvmppc_set_pid(vcpu, vcpu->arch.gpr[rs]); break; | 150 | kvmppc_set_pid(vcpu, kvmppc_get_gpr(vcpu, rs)); break; |
| 150 | case SPRN_MMUCR: | 151 | case SPRN_MMUCR: |
| 151 | vcpu->arch.mmucr = vcpu->arch.gpr[rs]; break; | 152 | vcpu->arch.mmucr = kvmppc_get_gpr(vcpu, rs); break; |
| 152 | case SPRN_CCR0: | 153 | case SPRN_CCR0: |
| 153 | vcpu->arch.ccr0 = vcpu->arch.gpr[rs]; break; | 154 | vcpu->arch.ccr0 = kvmppc_get_gpr(vcpu, rs); break; |
| 154 | case SPRN_CCR1: | 155 | case SPRN_CCR1: |
| 155 | vcpu->arch.ccr1 = vcpu->arch.gpr[rs]; break; | 156 | vcpu->arch.ccr1 = kvmppc_get_gpr(vcpu, rs); break; |
| 156 | default: | 157 | default: |
| 157 | emulated = kvmppc_booke_emulate_mtspr(vcpu, sprn, rs); | 158 | emulated = kvmppc_booke_emulate_mtspr(vcpu, sprn, rs); |
| 158 | } | 159 | } |
| @@ -167,13 +168,13 @@ int kvmppc_core_emulate_mfspr(struct kvm_vcpu *vcpu, int sprn, int rt) | |||
| 167 | 168 | ||
| 168 | switch (sprn) { | 169 | switch (sprn) { |
| 169 | case SPRN_PID: | 170 | case SPRN_PID: |
| 170 | vcpu->arch.gpr[rt] = vcpu->arch.pid; break; | 171 | kvmppc_set_gpr(vcpu, rt, vcpu->arch.pid); break; |
| 171 | case SPRN_MMUCR: | 172 | case SPRN_MMUCR: |
| 172 | vcpu->arch.gpr[rt] = vcpu->arch.mmucr; break; | 173 | kvmppc_set_gpr(vcpu, rt, vcpu->arch.mmucr); break; |
| 173 | case SPRN_CCR0: | 174 | case SPRN_CCR0: |
| 174 | vcpu->arch.gpr[rt] = vcpu->arch.ccr0; break; | 175 | kvmppc_set_gpr(vcpu, rt, vcpu->arch.ccr0); break; |
| 175 | case SPRN_CCR1: | 176 | case SPRN_CCR1: |
| 176 | vcpu->arch.gpr[rt] = vcpu->arch.ccr1; break; | 177 | kvmppc_set_gpr(vcpu, rt, vcpu->arch.ccr1); break; |
| 177 | default: | 178 | default: |
| 178 | emulated = kvmppc_booke_emulate_mfspr(vcpu, sprn, rt); | 179 | emulated = kvmppc_booke_emulate_mfspr(vcpu, sprn, rt); |
| 179 | } | 180 | } |
