提交 9b5c3399 编写于 作者: J James Hogan 提交者: Ralf Baechle

MIPS: Add & use CP0_EntryHi ASID definitions

Add definitions for the ASID field in CP0_EntryHi (along with the soon
to be used ASIDX field), and use them in a few previously hardcoded
cases.
Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
Cc: Manuel Lauss <manuel.lauss@gmail.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Radim Krčmář <rkrcmar@redhat.com>
Cc: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: kvm@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/13205/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
上级 5fb59fd2
...@@ -229,6 +229,8 @@ ...@@ -229,6 +229,8 @@
/* MIPS32/64 EntryHI bit definitions */ /* MIPS32/64 EntryHI bit definitions */
#define MIPS_ENTRYHI_EHINV (_ULCAST_(1) << 10) #define MIPS_ENTRYHI_EHINV (_ULCAST_(1) << 10)
#define MIPS_ENTRYHI_ASIDX (_ULCAST_(0x3) << 8)
#define MIPS_ENTRYHI_ASID (_ULCAST_(0xff) << 0)
/* /*
* R4x00 interrupt enable / cause bits * R4x00 interrupt enable / cause bits
......
...@@ -455,7 +455,7 @@ NESTED(nmi_handler, PT_SIZE, sp) ...@@ -455,7 +455,7 @@ NESTED(nmi_handler, PT_SIZE, sp)
.set noreorder .set noreorder
/* check if TLB contains a entry for EPC */ /* check if TLB contains a entry for EPC */
MFC0 k1, CP0_ENTRYHI MFC0 k1, CP0_ENTRYHI
andi k1, 0xff /* ASID_MASK */ andi k1, MIPS_ENTRYHI_ASID
MFC0 k0, CP0_EPC MFC0 k0, CP0_EPC
PTR_SRL k0, _PAGE_SHIFT + 1 PTR_SRL k0, _PAGE_SHIFT + 1
PTR_SLL k0, _PAGE_SHIFT + 1 PTR_SLL k0, _PAGE_SHIFT + 1
......
...@@ -164,7 +164,7 @@ FEXPORT(__kvm_mips_load_asid) ...@@ -164,7 +164,7 @@ FEXPORT(__kvm_mips_load_asid)
INT_SLL t2, t2, 2 /* x4 */ INT_SLL t2, t2, 2 /* x4 */
REG_ADDU t3, t1, t2 REG_ADDU t3, t1, t2
LONG_L k0, (t3) LONG_L k0, (t3)
andi k0, k0, 0xff andi k0, k0, MIPS_ENTRYHI_ASID
mtc0 k0, CP0_ENTRYHI mtc0 k0, CP0_ENTRYHI
ehb ehb
...@@ -483,7 +483,7 @@ __kvm_mips_return_to_guest: ...@@ -483,7 +483,7 @@ __kvm_mips_return_to_guest:
INT_SLL t2, t2, 2 /* x4 */ INT_SLL t2, t2, 2 /* x4 */
REG_ADDU t3, t1, t2 REG_ADDU t3, t1, t2
LONG_L k0, (t3) LONG_L k0, (t3)
andi k0, k0, 0xff andi k0, k0, MIPS_ENTRYHI_ASID
mtc0 k0, CP0_ENTRYHI mtc0 k0, CP0_ENTRYHI
ehb ehb
......
...@@ -76,7 +76,7 @@ static void mod_wired_entry(int entry, unsigned long entrylo0, ...@@ -76,7 +76,7 @@ static void mod_wired_entry(int entry, unsigned long entrylo0,
unsigned long old_ctx; unsigned long old_ctx;
/* Save old context and create impossible VPN2 value */ /* Save old context and create impossible VPN2 value */
old_ctx = read_c0_entryhi() & 0xff; old_ctx = read_c0_entryhi() & MIPS_ENTRYHI_ASID;
old_pagemask = read_c0_pagemask(); old_pagemask = read_c0_pagemask();
write_c0_index(entry); write_c0_index(entry);
write_c0_pagemask(pagemask); write_c0_pagemask(pagemask);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册