aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Hogan <james.hogan@imgtec.com>2015-12-16 18:49:38 -0500
committerRalf Baechle <ralf@linux-mips.org>2016-01-23 21:31:17 -0500
commitb2c5963577efdaef7bf2445c06e8048926c472a5 (patch)
tree98b4e7eeb661958501e3a39bccf52f50d7c1785d
parentf4956f620d065d8fa4d7a890cad548549e0b91ea (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.h3
-rw-r--r--arch/mips/kvm/emulate.c7
-rw-r--r--arch/mips/kvm/opcode.h22
-rw-r--r--arch/mips/kvm/trap_emul.c1
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
22static gpa_t kvm_trap_emul_gva_to_gpa_cb(gva_t gva) 21static gpa_t kvm_trap_emul_gva_to_gpa_cb(gva_t gva)