aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/kvm/emulate.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2017-11-10 08:21:08 +0100
committerIngo Molnar <mingo@kernel.org>2017-11-10 08:21:08 +0100
commitb5cd3b51e247473e290be5cd09e77171e466cd89 (patch)
treeac8c87e1b38f61a4c879c574dc9373db41f3df01 /arch/arm/kvm/emulate.c
parent376f3bcebdc999cc737d9052109cc33b573b3a8b (diff)
parent1c9dbd4615fd751e5e0b99807a3c7c8612e28e20 (diff)
Merge branch 'linus' into x86/platform, to refresh the branch
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/arm/kvm/emulate.c')
-rw-r--r--arch/arm/kvm/emulate.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/arm/kvm/emulate.c b/arch/arm/kvm/emulate.c
index 0064b86a2c87..30a13647c54c 100644
--- a/arch/arm/kvm/emulate.c
+++ b/arch/arm/kvm/emulate.c
@@ -227,7 +227,7 @@ void kvm_inject_undefined(struct kvm_vcpu *vcpu)
u32 return_offset = (is_thumb) ? 2 : 4;
kvm_update_psr(vcpu, UND_MODE);
- *vcpu_reg(vcpu, 14) = *vcpu_pc(vcpu) - return_offset;
+ *vcpu_reg(vcpu, 14) = *vcpu_pc(vcpu) + return_offset;
/* Branch to exception vector */
*vcpu_pc(vcpu) = exc_vector_base(vcpu) + vect_offset;
@@ -239,10 +239,8 @@ void kvm_inject_undefined(struct kvm_vcpu *vcpu)
*/
static void inject_abt(struct kvm_vcpu *vcpu, bool is_pabt, unsigned long addr)
{
- unsigned long cpsr = *vcpu_cpsr(vcpu);
- bool is_thumb = (cpsr & PSR_T_BIT);
u32 vect_offset;
- u32 return_offset = (is_thumb) ? 4 : 0;
+ u32 return_offset = (is_pabt) ? 4 : 8;
bool is_lpae;
kvm_update_psr(vcpu, ABT_MODE);