Skip to content

Commit

Permalink
MIPS: Avoid pipeline stalls on some MIPS32R2 cores.
Browse files Browse the repository at this point in the history
The architecture specification says that an EHB instruction is
needed to avoid a hazard when writing TLB entries. However, some
cores do not have this hazard, and thus the EHB instruction causes
a costly pipeline stall. Detect these cores and do not use the EHB
instruction.

Signed-off-by: Steven J. Hill <sjhill@mips.com>
  • Loading branch information
Steven J. Hill committed Sep 13, 2012
1 parent 3234f44 commit 625c0a2
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion arch/mips/mm/tlbex.c
Original file line number Diff line number Diff line change
Expand Up @@ -449,8 +449,20 @@ static void __cpuinit build_tlb_write_entry(u32 **p, struct uasm_label **l,
}

if (cpu_has_mips_r2) {
if (cpu_has_mips_r2_exec_hazard)
/*
* The architecture spec says an ehb is required here,
* but a number of cores do not have the hazard and
* using an ehb causes an expensive pipeline stall.
*/
switch (current_cpu_type()) {
case CPU_M14KC:
case CPU_74K:
break;

default:
uasm_i_ehb(p);
break;
}
tlbw(p);
return;
}
Expand Down

0 comments on commit 625c0a2

Please sign in to comment.