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

Commit b2ab4f08 authored by Steven J. Hill's avatar Steven J. Hill
Browse files

MIPS: Add base architecture support for RI and XI.



Originally both Read Inhibit (RI) and Execute Inhibit (XI) were
supported by the TLB only for a SmartMIPS core. The MIPSr3(TM)
Architecture now defines an optional feature to implement these
TLB bits separately. Support for one or both features can be
checked by looking at the Config3.RXI bit.

Signed-off-by: default avatarSteven J. Hill <sjhill@mips.com>
Acked-by: default avatarDavid Daney <david.daney@cavium.com>
parent fea7a08a
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -95,6 +95,9 @@
#ifndef cpu_has_smartmips
#define cpu_has_smartmips      (cpu_data[0].ases & MIPS_ASE_SMARTMIPS)
#endif
#ifndef cpu_has_rixi
#define cpu_has_rixi		(cpu_data[0].options & MIPS_CPU_RIXI)
#endif
#ifndef kernel_uses_smartmips_rixi
#define kernel_uses_smartmips_rixi 0
#endif
+1 −0
Original line number Diff line number Diff line
@@ -319,6 +319,7 @@ enum cpu_type_enum {
#define MIPS_CPU_VINT		0x00080000 /* CPU supports MIPSR2 vectored interrupts */
#define MIPS_CPU_VEIC		0x00100000 /* CPU supports MIPSR2 external interrupt controller mode */
#define MIPS_CPU_ULRI		0x00200000 /* CPU has ULRI feature */
#define MIPS_CPU_RIXI		0x00400000 /* CPU has TLB Read/eXec Inhibit */

/*
 * CPU ASE encodings
+1 −0
Original line number Diff line number Diff line
@@ -590,6 +590,7 @@
#define MIPS_CONF3_VEIC		(_ULCAST_(1) <<  6)
#define MIPS_CONF3_LPA		(_ULCAST_(1) <<  7)
#define MIPS_CONF3_DSP		(_ULCAST_(1) << 10)
#define MIPS_CONF3_RXI		(_ULCAST_(1) << 12)
#define MIPS_CONF3_ULRI		(_ULCAST_(1) << 13)

#define MIPS_CONF4_MMUSIZEEXT	(_ULCAST_(255) << 0)
+5 −1
Original line number Diff line number Diff line
@@ -421,8 +421,12 @@ static inline unsigned int decode_config3(struct cpuinfo_mips *c)

	config3 = read_c0_config3();

	if (config3 & MIPS_CONF3_SM)
	if (config3 & MIPS_CONF3_SM) {
		c->ases |= MIPS_ASE_SMARTMIPS;
		c->options |= MIPS_CPU_RIXI;
	}
	if (config3 & MIPS_CONF3_RXI)
		c->options |= MIPS_CPU_RIXI;
	if (config3 & MIPS_CONF3_DSP)
		c->ases |= MIPS_ASE_DSP;
	if (config3 & MIPS_CONF3_VINT)