These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / arch / mips / lib / r3k_dump_tlb.c
index 975a138..cfcbb52 100644 (file)
 #include <asm/pgtable.h>
 #include <asm/tlbdebug.h>
 
-extern int r3k_have_wired_reg; /* defined in tlb-r3k.c */
+extern int r3k_have_wired_reg;
+
+void dump_tlb_regs(void)
+{
+       pr_info("Index    : %0x\n", read_c0_index());
+       pr_info("EntryHi  : %0lx\n", read_c0_entryhi());
+       pr_info("EntryLo  : %0lx\n", read_c0_entrylo0());
+       if (r3k_have_wired_reg)
+               pr_info("Wired    : %0x\n", read_c0_wired());
+}
 
 static void dump_tlb(int first, int last)
 {
@@ -35,8 +44,9 @@ static void dump_tlb(int first, int last)
                entrylo0 = read_c0_entrylo0();
 
                /* Unused entries have a virtual address of KSEG0.  */
-               if ((entryhi & PAGE_MASK) != KSEG0
-                   && (entryhi & ASID_MASK) == asid) {
+               if ((entryhi & PAGE_MASK) != KSEG0 &&
+                   (entrylo0 & R3K_ENTRYLO_G ||
+                    (entryhi & ASID_MASK) == asid)) {
                        /*
                         * Only print entries in use
                         */
@@ -47,10 +57,10 @@ static void dump_tlb(int first, int last)
                               entryhi & PAGE_MASK,
                               entryhi & ASID_MASK,
                               entrylo0 & PAGE_MASK,
-                              (entrylo0 & (1 << 11)) ? 1 : 0,
-                              (entrylo0 & (1 << 10)) ? 1 : 0,
-                              (entrylo0 & (1 << 9)) ? 1 : 0,
-                              (entrylo0 & (1 << 8)) ? 1 : 0);
+                              (entrylo0 & R3K_ENTRYLO_N) ? 1 : 0,
+                              (entrylo0 & R3K_ENTRYLO_D) ? 1 : 0,
+                              (entrylo0 & R3K_ENTRYLO_V) ? 1 : 0,
+                              (entrylo0 & R3K_ENTRYLO_G) ? 1 : 0);
                }
        }
        printk("\n");