diff options
Diffstat (limited to 'arch/powerpc/kvm/emulate.c')
-rw-r--r-- | arch/powerpc/kvm/emulate.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/powerpc/kvm/emulate.c b/arch/powerpc/kvm/emulate.c index f90e86dea7a2..ee04abaefe23 100644 --- a/arch/powerpc/kvm/emulate.c +++ b/arch/powerpc/kvm/emulate.c | |||
@@ -59,11 +59,13 @@ | |||
59 | #define OP_31_XOP_STHBRX 918 | 59 | #define OP_31_XOP_STHBRX 918 |
60 | 60 | ||
61 | #define OP_LWZ 32 | 61 | #define OP_LWZ 32 |
62 | #define OP_LD 58 | ||
62 | #define OP_LWZU 33 | 63 | #define OP_LWZU 33 |
63 | #define OP_LBZ 34 | 64 | #define OP_LBZ 34 |
64 | #define OP_LBZU 35 | 65 | #define OP_LBZU 35 |
65 | #define OP_STW 36 | 66 | #define OP_STW 36 |
66 | #define OP_STWU 37 | 67 | #define OP_STWU 37 |
68 | #define OP_STD 62 | ||
67 | #define OP_STB 38 | 69 | #define OP_STB 38 |
68 | #define OP_STBU 39 | 70 | #define OP_STBU 39 |
69 | #define OP_LHZ 40 | 71 | #define OP_LHZ 40 |
@@ -392,6 +394,12 @@ int kvmppc_emulate_instruction(struct kvm_run *run, struct kvm_vcpu *vcpu) | |||
392 | emulated = kvmppc_handle_load(run, vcpu, rt, 4, 1); | 394 | emulated = kvmppc_handle_load(run, vcpu, rt, 4, 1); |
393 | break; | 395 | break; |
394 | 396 | ||
397 | /* TBD: Add support for other 64 bit load variants like ldu, ldux, ldx etc. */ | ||
398 | case OP_LD: | ||
399 | rt = get_rt(inst); | ||
400 | emulated = kvmppc_handle_load(run, vcpu, rt, 8, 1); | ||
401 | break; | ||
402 | |||
395 | case OP_LWZU: | 403 | case OP_LWZU: |
396 | emulated = kvmppc_handle_load(run, vcpu, rt, 4, 1); | 404 | emulated = kvmppc_handle_load(run, vcpu, rt, 4, 1); |
397 | kvmppc_set_gpr(vcpu, ra, vcpu->arch.vaddr_accessed); | 405 | kvmppc_set_gpr(vcpu, ra, vcpu->arch.vaddr_accessed); |
@@ -412,6 +420,14 @@ int kvmppc_emulate_instruction(struct kvm_run *run, struct kvm_vcpu *vcpu) | |||
412 | 4, 1); | 420 | 4, 1); |
413 | break; | 421 | break; |
414 | 422 | ||
423 | /* TBD: Add support for other 64 bit store variants like stdu, stdux, stdx etc. */ | ||
424 | case OP_STD: | ||
425 | rs = get_rs(inst); | ||
426 | emulated = kvmppc_handle_store(run, vcpu, | ||
427 | kvmppc_get_gpr(vcpu, rs), | ||
428 | 8, 1); | ||
429 | break; | ||
430 | |||
415 | case OP_STWU: | 431 | case OP_STWU: |
416 | emulated = kvmppc_handle_store(run, vcpu, | 432 | emulated = kvmppc_handle_store(run, vcpu, |
417 | kvmppc_get_gpr(vcpu, rs), | 433 | kvmppc_get_gpr(vcpu, rs), |