Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9b5c3399 authored by James Hogan's avatar James Hogan Committed by Ralf Baechle
Browse files

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: default avatarJames 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: default avatarRalf Baechle <ralf@linux-mips.org>
parent 5fb59fd2
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -229,6 +229,8 @@

/* MIPS32/64 EntryHI bit definitions */
#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
+1 −1
Original line number Diff line number Diff line
@@ -455,7 +455,7 @@ NESTED(nmi_handler, PT_SIZE, sp)
	.set	noreorder
	/* check if TLB contains a entry for EPC */
	MFC0	k1, CP0_ENTRYHI
	andi	k1, 0xff	/* ASID_MASK */
	andi	k1, MIPS_ENTRYHI_ASID
	MFC0	k0, CP0_EPC
	PTR_SRL k0, _PAGE_SHIFT + 1
	PTR_SLL k0, _PAGE_SHIFT + 1
+2 −2
Original line number Diff line number Diff line
@@ -164,7 +164,7 @@ FEXPORT(__kvm_mips_load_asid)
	INT_SLL	t2, t2, 2                   /* x4 */
	REG_ADDU t3, t1, t2
	LONG_L	k0, (t3)
	andi	k0, k0, 0xff
	andi	k0, k0, MIPS_ENTRYHI_ASID
	mtc0	k0, CP0_ENTRYHI
	ehb

@@ -483,7 +483,7 @@ __kvm_mips_return_to_guest:
	INT_SLL	t2, t2, 2		/* x4 */
	REG_ADDU t3, t1, t2
	LONG_L	k0, (t3)
	andi	k0, k0, 0xff
	andi	k0, k0, MIPS_ENTRYHI_ASID
	mtc0	k0, CP0_ENTRYHI
	ehb

+1 −1
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@ static void mod_wired_entry(int entry, unsigned long entrylo0,
	unsigned long old_ctx;

	/* 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();
	write_c0_index(entry);
	write_c0_pagemask(pagemask);