diff options
Diffstat (limited to 'arch/powerpc/kvm/emulate.c')
-rw-r--r-- | arch/powerpc/kvm/emulate.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/powerpc/kvm/emulate.c b/arch/powerpc/kvm/emulate.c index cb72a65f4ecc..11789dd33a13 100644 --- a/arch/powerpc/kvm/emulate.c +++ b/arch/powerpc/kvm/emulate.c | |||
@@ -62,6 +62,8 @@ | |||
62 | #define OP_STBU 39 | 62 | #define OP_STBU 39 |
63 | #define OP_LHZ 40 | 63 | #define OP_LHZ 40 |
64 | #define OP_LHZU 41 | 64 | #define OP_LHZU 41 |
65 | #define OP_LHA 42 | ||
66 | #define OP_LHAU 43 | ||
65 | #define OP_STH 44 | 67 | #define OP_STH 44 |
66 | #define OP_STHU 45 | 68 | #define OP_STHU 45 |
67 | 69 | ||
@@ -450,6 +452,18 @@ int kvmppc_emulate_instruction(struct kvm_run *run, struct kvm_vcpu *vcpu) | |||
450 | kvmppc_set_gpr(vcpu, ra, vcpu->arch.paddr_accessed); | 452 | kvmppc_set_gpr(vcpu, ra, vcpu->arch.paddr_accessed); |
451 | break; | 453 | break; |
452 | 454 | ||
455 | case OP_LHA: | ||
456 | rt = get_rt(inst); | ||
457 | emulated = kvmppc_handle_loads(run, vcpu, rt, 2, 1); | ||
458 | break; | ||
459 | |||
460 | case OP_LHAU: | ||
461 | ra = get_ra(inst); | ||
462 | rt = get_rt(inst); | ||
463 | emulated = kvmppc_handle_loads(run, vcpu, rt, 2, 1); | ||
464 | kvmppc_set_gpr(vcpu, ra, vcpu->arch.paddr_accessed); | ||
465 | break; | ||
466 | |||
453 | case OP_STH: | 467 | case OP_STH: |
454 | rs = get_rs(inst); | 468 | rs = get_rs(inst); |
455 | emulated = kvmppc_handle_store(run, vcpu, | 469 | emulated = kvmppc_handle_store(run, vcpu, |