Skip to content

Commit

Permalink
MIPS: mm: c-r4k: Panic if IL or DL fields have a reserved value
Browse files Browse the repository at this point in the history
According to MIPS32 and MIPS64 PRA documents,
a value of 7 in IL and DL fields is marked as "Reserved"
so panic if the core uses this value in the config1 register.
Also simplify the code a little bit.

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Signed-off-by: John Crispin <blogic@openwrt.org>
Patchwork: http://patchwork.linux-mips.org/patch/5861/
  • Loading branch information
Markos Chandras authored and Ralf Baechle committed Jan 22, 2014
1 parent 4014988 commit 175cba8
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions arch/mips/mm/c-r4k.c
Original file line number Diff line number Diff line change
Expand Up @@ -1013,10 +1013,14 @@ static void probe_pcache(void)
*/
config1 = read_c0_config1();

if ((lsize = ((config1 >> 19) & 7)))
c->icache.linesz = 2 << lsize;
else
c->icache.linesz = lsize;
lsize = (config1 >> 19) & 7;

/* IL == 7 is reserved */
if (lsize == 7)
panic("Invalid icache line size");

c->icache.linesz = lsize ? 2 << lsize : 0;

c->icache.sets = 32 << (((config1 >> 22) + 1) & 7);
c->icache.ways = 1 + ((config1 >> 16) & 7);

Expand All @@ -1033,10 +1037,14 @@ static void probe_pcache(void)
*/
c->dcache.flags = 0;

if ((lsize = ((config1 >> 10) & 7)))
c->dcache.linesz = 2 << lsize;
else
c->dcache.linesz= lsize;
lsize = (config1 >> 10) & 7;

/* DL == 7 is reserved */
if (lsize == 7)
panic("Invalid dcache line size");

c->dcache.linesz = lsize ? 2 << lsize : 0;

c->dcache.sets = 32 << (((config1 >> 13) + 1) & 7);
c->dcache.ways = 1 + ((config1 >> 7) & 7);

Expand Down

0 comments on commit 175cba8

Please sign in to comment.