MIPS: dump_tlb: Use tlbr hazard macros
authorJames Hogan <james.hogan@imgtec.com>
Tue, 19 May 2015 08:50:32 +0000 (09:50 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Sun, 21 Jun 2015 19:52:32 +0000 (21:52 +0200)
Use the new tlb read hazard macros from <asm/hazards.h> rather than the
local BARRIER() macro which uses 7 ops regardless of the kernel
configuration.

We use mtc0_tlbr_hazard for the hazard between mtc0 to the index
register and the tlbr, and tlb_read_hazard for the hazard between the
tlbr and the mfc0 of the TLB registers written by tlbr.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/10074/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/lib/dump_tlb.c

index 32b9f21bfd8562f37d8e51e1ad23908c320ad3e8..a62dfacb60f710ad07b7fa93afe048a0555b6906 100644 (file)
@@ -7,6 +7,7 @@
 #include <linux/kernel.h>
 #include <linux/mm.h>
 
+#include <asm/hazards.h>
 #include <asm/mipsregs.h>
 #include <asm/page.h>
 #include <asm/pgtable.h>
@@ -40,12 +41,6 @@ static inline const char *msk2str(unsigned int mask)
        return "";
 }
 
-#define BARRIER()                                      \
-       __asm__ __volatile__(                           \
-               ".set\tnoreorder\n\t"                   \
-               "nop;nop;nop;nop;nop;nop;nop\n\t"       \
-               ".set\treorder");
-
 static void dump_tlb(int first, int last)
 {
        unsigned long s_entryhi, entryhi, asid;
@@ -59,9 +54,9 @@ static void dump_tlb(int first, int last)
 
        for (i = first; i <= last; i++) {
                write_c0_index(i);
-               BARRIER();
+               mtc0_tlbr_hazard();
                tlb_read();
-               BARRIER();
+               tlb_read_hazard();
                pagemask = read_c0_pagemask();
                entryhi  = read_c0_entryhi();
                entrylo0 = read_c0_entrylo0();