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

Commit 2c0e57ea authored by Paul Burton's avatar Paul Burton Committed by Ralf Baechle
Browse files

MIPS: tlbex: Clear ISA bit when writing to handle_tlb{l,m,s}



When generating TLB exception handling code we write to memory reserved
at the handle_tlbl, handle_tlbm & handle_tlbs symbols. Up until now the
ISA bit has always been clear simply because the assembly code reserving
the space for those functions places no instructions in them. In
preparation for marking all LEAF functions as containing code,
explicitly clear the ISA bit when calculating the addresses at which to
write TLB exception handling code.

Signed-off-by: default avatarPaul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/14507/


Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 858e2b23
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -2041,7 +2041,7 @@ build_r4000_tlbchange_handler_tail(u32 **p, struct uasm_label **l,


static void build_r4000_tlb_load_handler(void)
static void build_r4000_tlb_load_handler(void)
{
{
	u32 *p = handle_tlbl;
	u32 *p = (u32 *)msk_isa16_mode((ulong)handle_tlbl);
	const int handle_tlbl_size = handle_tlbl_end - handle_tlbl;
	const int handle_tlbl_size = handle_tlbl_end - handle_tlbl;
	struct uasm_label *l = labels;
	struct uasm_label *l = labels;
	struct uasm_reloc *r = relocs;
	struct uasm_reloc *r = relocs;
@@ -2224,7 +2224,7 @@ static void build_r4000_tlb_load_handler(void)


static void build_r4000_tlb_store_handler(void)
static void build_r4000_tlb_store_handler(void)
{
{
	u32 *p = handle_tlbs;
	u32 *p = (u32 *)msk_isa16_mode((ulong)handle_tlbs);
	const int handle_tlbs_size = handle_tlbs_end - handle_tlbs;
	const int handle_tlbs_size = handle_tlbs_end - handle_tlbs;
	struct uasm_label *l = labels;
	struct uasm_label *l = labels;
	struct uasm_reloc *r = relocs;
	struct uasm_reloc *r = relocs;
@@ -2279,7 +2279,7 @@ static void build_r4000_tlb_store_handler(void)


static void build_r4000_tlb_modify_handler(void)
static void build_r4000_tlb_modify_handler(void)
{
{
	u32 *p = handle_tlbm;
	u32 *p = (u32 *)msk_isa16_mode((ulong)handle_tlbm);
	const int handle_tlbm_size = handle_tlbm_end - handle_tlbm;
	const int handle_tlbm_size = handle_tlbm_end - handle_tlbm;
	struct uasm_label *l = labels;
	struct uasm_label *l = labels;
	struct uasm_reloc *r = relocs;
	struct uasm_reloc *r = relocs;