diff options
| author | James Hogan <james.hogan@imgtec.com> | 2015-12-16 18:49:38 -0500 |
|---|---|---|
| committer | Ralf Baechle <ralf@linux-mips.org> | 2016-01-23 21:31:17 -0500 |
| commit | b2c5963577efdaef7bf2445c06e8048926c472a5 (patch) | |
| tree | 98b4e7eeb661958501e3a39bccf52f50d7c1785d | |
| parent | f4956f620d065d8fa4d7a890cad548549e0b91ea (diff) | |
MIPS: Move KVM specific opcodes into asm/inst.h
The header arch/mips/kvm/opcode.h defines a few extra opcodes which
aren't in arch/mips/include/uapi/asm/inst.h. There's nothing KVM
specific about them, so lets move them into inst.h where they belong and
delete the header.
Note that mfmcz_op is renamed to mfmc0_op to match the instruction set
manual, and wait_op was already added to inst.h in commit b0a3eae2b943
("MIPS: inst.h: define COP0 wait op"), merged in v3.16-rc1.
Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Gleb Natapov <gleb@kernel.org>
Cc: linux-mips@linux-mips.org
Cc: kvm@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/11895/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
| -rw-r--r-- | arch/mips/include/uapi/asm/inst.h | 3 | ||||
| -rw-r--r-- | arch/mips/kvm/emulate.c | 7 | ||||
| -rw-r--r-- | arch/mips/kvm/opcode.h | 22 | ||||
| -rw-r--r-- | arch/mips/kvm/trap_emul.c | 1 |
4 files changed, 5 insertions, 28 deletions
diff --git a/arch/mips/include/uapi/asm/inst.h b/arch/mips/include/uapi/asm/inst.h index f5364e96554a..ddea53e3a9bb 100644 --- a/arch/mips/include/uapi/asm/inst.h +++ b/arch/mips/include/uapi/asm/inst.h | |||
| @@ -116,7 +116,8 @@ enum cop_op { | |||
| 116 | dmtc_op = 0x05, ctc_op = 0x06, | 116 | dmtc_op = 0x05, ctc_op = 0x06, |
| 117 | mthc0_op = 0x06, mthc_op = 0x07, | 117 | mthc0_op = 0x06, mthc_op = 0x07, |
| 118 | bc_op = 0x08, bc1eqz_op = 0x09, | 118 | bc_op = 0x08, bc1eqz_op = 0x09, |
| 119 | bc1nez_op = 0x0d, cop_op = 0x10, | 119 | mfmc0_op = 0x0b, bc1nez_op = 0x0d, |
| 120 | wrpgpr_op = 0x0e, cop_op = 0x10, | ||
| 120 | copm_op = 0x18 | 121 | copm_op = 0x18 |
| 121 | }; | 122 | }; |
| 122 | 123 | ||
diff --git a/arch/mips/kvm/emulate.c b/arch/mips/kvm/emulate.c index 0eb65668d2ab..845fd0d91040 100644 --- a/arch/mips/kvm/emulate.c +++ b/arch/mips/kvm/emulate.c | |||
| @@ -30,7 +30,6 @@ | |||
| 30 | #include <asm/r4kcache.h> | 30 | #include <asm/r4kcache.h> |
| 31 | #define CONFIG_MIPS_MT | 31 | #define CONFIG_MIPS_MT |
| 32 | 32 | ||
| 33 | #include "opcode.h" | ||
| 34 | #include "interrupt.h" | 33 | #include "interrupt.h" |
| 35 | #include "commpage.h" | 34 | #include "commpage.h" |
| 36 | 35 | ||
| @@ -1240,7 +1239,7 @@ enum emulation_result kvm_mips_emulate_CP0(uint32_t inst, uint32_t *opc, | |||
| 1240 | er = EMULATE_FAIL; | 1239 | er = EMULATE_FAIL; |
| 1241 | break; | 1240 | break; |
| 1242 | 1241 | ||
| 1243 | case mfmcz_op: | 1242 | case mfmc0_op: |
| 1244 | #ifdef KVM_MIPS_DEBUG_COP0_COUNTERS | 1243 | #ifdef KVM_MIPS_DEBUG_COP0_COUNTERS |
| 1245 | cop0->stat[MIPS_CP0_STATUS][0]++; | 1244 | cop0->stat[MIPS_CP0_STATUS][0]++; |
| 1246 | #endif | 1245 | #endif |
| @@ -1249,11 +1248,11 @@ enum emulation_result kvm_mips_emulate_CP0(uint32_t inst, uint32_t *opc, | |||
| 1249 | kvm_read_c0_guest_status(cop0); | 1248 | kvm_read_c0_guest_status(cop0); |
| 1250 | /* EI */ | 1249 | /* EI */ |
| 1251 | if (inst & 0x20) { | 1250 | if (inst & 0x20) { |
| 1252 | kvm_debug("[%#lx] mfmcz_op: EI\n", | 1251 | kvm_debug("[%#lx] mfmc0_op: EI\n", |
| 1253 | vcpu->arch.pc); | 1252 | vcpu->arch.pc); |
| 1254 | kvm_set_c0_guest_status(cop0, ST0_IE); | 1253 | kvm_set_c0_guest_status(cop0, ST0_IE); |
| 1255 | } else { | 1254 | } else { |
| 1256 | kvm_debug("[%#lx] mfmcz_op: DI\n", | 1255 | kvm_debug("[%#lx] mfmc0_op: DI\n", |
| 1257 | vcpu->arch.pc); | 1256 | vcpu->arch.pc); |
| 1258 | kvm_clear_c0_guest_status(cop0, ST0_IE); | 1257 | kvm_clear_c0_guest_status(cop0, ST0_IE); |
| 1259 | } | 1258 | } |
diff --git a/arch/mips/kvm/opcode.h b/arch/mips/kvm/opcode.h deleted file mode 100644 index 03a6ae84c7df..000000000000 --- a/arch/mips/kvm/opcode.h +++ /dev/null | |||
| @@ -1,22 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 3 | * License. See the file "COPYING" in the main directory of this archive | ||
| 4 | * for more details. | ||
| 5 | * | ||
| 6 | * Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved. | ||
| 7 | * Authors: Sanjay Lal <sanjayl@kymasys.com> | ||
| 8 | */ | ||
| 9 | |||
| 10 | /* Define opcode values not defined in <asm/isnt.h> */ | ||
| 11 | |||
| 12 | #ifndef __KVM_MIPS_OPCODE_H__ | ||
| 13 | #define __KVM_MIPS_OPCODE_H__ | ||
| 14 | |||
| 15 | /* COP0 Ops */ | ||
| 16 | #define mfmcz_op 0x0b /* 01011 */ | ||
| 17 | #define wrpgpr_op 0x0e /* 01110 */ | ||
| 18 | |||
| 19 | /* COP0 opcodes (only if COP0 and CO=1): */ | ||
| 20 | #define wait_op 0x20 /* 100000 */ | ||
| 21 | |||
| 22 | #endif /* __KVM_MIPS_OPCODE_H__ */ | ||
diff --git a/arch/mips/kvm/trap_emul.c b/arch/mips/kvm/trap_emul.c index d836ed5b0bc7..ad988000563f 100644 --- a/arch/mips/kvm/trap_emul.c +++ b/arch/mips/kvm/trap_emul.c | |||
| @@ -16,7 +16,6 @@ | |||
| 16 | 16 | ||
| 17 | #include <linux/kvm_host.h> | 17 | #include <linux/kvm_host.h> |
| 18 | 18 | ||
| 19 | #include "opcode.h" | ||
| 20 | #include "interrupt.h" | 19 | #include "interrupt.h" |
| 21 | 20 | ||
| 22 | static gpa_t kvm_trap_emul_gva_to_gpa_cb(gva_t gva) | 21 | static gpa_t kvm_trap_emul_gva_to_gpa_cb(gva_t gva) |
