Pull release into acpica branch
[pandora-kernel.git] / arch / mips / lib-32 / dump_tlb.c
index 019ac8f..46519f4 100644 (file)
 static inline const char *msk2str(unsigned int mask)
 {
        switch (mask) {
-       case PM_4K:     return "4kb";
-       case PM_16K:    return "16kb";
-       case PM_64K:    return "64kb";
-       case PM_256K:   return "256kb";
+       case PM_4K:
+               return "4kb";
+       case PM_16K:
+               return "16kb";
+       case PM_64K:
+               return "64kb";
+       case PM_256K:
+               return "256kb";
 #ifndef CONFIG_CPU_VR41XX
-       case PM_1M:     return "1Mb";
-       case PM_4M:     return "4Mb";
-       case PM_16M:    return "16Mb";
-       case PM_64M:    return "64Mb";
-       case PM_256M:   return "256Mb";
+       case PM_1M:
+               return "1Mb";
+       case PM_4M:
+               return "4Mb";
+       case PM_16M:
+               return "16Mb";
+       case PM_64M:
+               return "64Mb";
+       case PM_256M:
+               return "256Mb";
 #endif
        }
 
@@ -47,7 +56,7 @@ void dump_tlb(int first, int last)
        unsigned int pagemask, c0, c1, asid;
        unsigned long long entrylo0, entrylo1;
        unsigned long entryhi;
-       int     i;
+       int i;
 
        asid = read_c0_entryhi() & 0xff;
 
@@ -58,7 +67,7 @@ void dump_tlb(int first, int last)
                tlb_read();
                BARRIER();
                pagemask = read_c0_pagemask();
-               entryhi  = read_c0_entryhi();
+               entryhi = read_c0_entryhi();
                entrylo0 = read_c0_entrylo0();
                entrylo1 = read_c0_entrylo1();
 
@@ -78,13 +87,11 @@ void dump_tlb(int first, int last)
                        printk("\t\t\t[pa=%08Lx c=%d d=%d v=%d g=%Ld]\n",
                               (entrylo0 << 6) & PAGE_MASK, c0,
                               (entrylo0 & 4) ? 1 : 0,
-                              (entrylo0 & 2) ? 1 : 0,
-                              (entrylo0 & 1));
+                              (entrylo0 & 2) ? 1 : 0, (entrylo0 & 1));
                        printk("\t\t\t[pa=%08Lx c=%d d=%d v=%d g=%Ld]\n",
                               (entrylo1 << 6) & PAGE_MASK, c1,
                               (entrylo1 & 4) ? 1 : 0,
-                              (entrylo1 & 2) ? 1 : 0,
-                              (entrylo1 & 1));
+                              (entrylo1 & 2) ? 1 : 0, (entrylo1 & 1));
                        printk("\n");
                }
        }
@@ -99,7 +106,7 @@ void dump_tlb_all(void)
 
 void dump_tlb_wired(void)
 {
-       int     wired;
+       int wired;
 
        wired = read_c0_wired();
        printk("Wired: %d", wired);
@@ -138,9 +145,10 @@ void dump_tlb_nonwired(void)
 
 void dump_list_process(struct task_struct *t, void *address)
 {
-       pgd_t   *page_dir, *pgd;
-       pmd_t   *pmd;
-       pte_t   *pte, page;
+       pgd_t *page_dir, *pgd;
+       pud_t *pud;
+       pmd_t *pmd;
+       pte_t *pte, page;
        unsigned long addr, val;
 
        addr = (unsigned long) address;
@@ -152,21 +160,27 @@ void dump_list_process(struct task_struct *t, void *address)
 
        if (addr > KSEG0)
                page_dir = pgd_offset_k(0);
-       else
+       else if (t->mm) {
                page_dir = pgd_offset(t->mm, 0);
-       printk("page_dir == %08x\n", (unsigned int) page_dir);
+               printk("page_dir == %08x\n", (unsigned int) page_dir);
+       } else
+               printk("Current thread has no mm\n");
 
        if (addr > KSEG0)
                pgd = pgd_offset_k(addr);
-       else
+       else if (t->mm) {
                pgd = pgd_offset(t->mm, addr);
-       printk("pgd == %08x, ", (unsigned int) pgd);
+               printk("pgd == %08x, ", (unsigned int) pgd);
+               pud = pud_offset(pgd, addr);
+               printk("pud == %08x, ", (unsigned int) pud);
 
-       pmd = pmd_offset(pgd, addr);
-       printk("pmd == %08x, ", (unsigned int) pmd);
+               pmd = pmd_offset(pud, addr);
+               printk("pmd == %08x, ", (unsigned int) pmd);
 
-       pte = pte_offset(pmd, addr);
-       printk("pte == %08x, ", (unsigned int) pte);
+               pte = pte_offset(pmd, addr);
+               printk("pte == %08x, ", (unsigned int) pte);
+       } else
+               printk("Current thread has no mm\n");
 
        page = *pte;
 #ifdef CONFIG_64BIT_PHYS_ADDR
@@ -176,14 +190,22 @@ void dump_list_process(struct task_struct *t, void *address)
 #endif
 
        val = pte_val(page);
-       if (val & _PAGE_PRESENT) printk("present ");
-       if (val & _PAGE_READ) printk("read ");
-       if (val & _PAGE_WRITE) printk("write ");
-       if (val & _PAGE_ACCESSED) printk("accessed ");
-       if (val & _PAGE_MODIFIED) printk("modified ");
-       if (val & _PAGE_R4KBUG) printk("r4kbug ");
-       if (val & _PAGE_GLOBAL) printk("global ");
-       if (val & _PAGE_VALID) printk("valid ");
+       if (val & _PAGE_PRESENT)
+               printk("present ");
+       if (val & _PAGE_READ)
+               printk("read ");
+       if (val & _PAGE_WRITE)
+               printk("write ");
+       if (val & _PAGE_ACCESSED)
+               printk("accessed ");
+       if (val & _PAGE_MODIFIED)
+               printk("modified ");
+       if (val & _PAGE_R4KBUG)
+               printk("r4kbug ");
+       if (val & _PAGE_GLOBAL)
+               printk("global ");
+       if (val & _PAGE_VALID)
+               printk("valid ");
        printk("\n");
 }
 
@@ -194,14 +216,16 @@ void dump_list_current(void *address)
 
 unsigned int vtop(void *address)
 {
-       pgd_t   *pgd;
-       pmd_t   *pmd;
-       pte_t   *pte;
+       pgd_t *pgd;
+       pud_t *pud;
+       pmd_t *pmd;
+       pte_t *pte;
        unsigned int addr, paddr;
 
        addr = (unsigned long) address;
        pgd = pgd_offset(current->mm, addr);
-       pmd = pmd_offset(pgd, addr);
+       pud = pud_offset(pgd, addr);
+       pmd = pmd_offset(pud, addr);
        pte = pte_offset(pmd, addr);
        paddr = (KSEG1 | (unsigned int) pte_val(*pte)) & PAGE_MASK;
        paddr |= (addr & ~PAGE_MASK);
@@ -214,9 +238,9 @@ void dump16(unsigned long *p)
        int i;
 
        for (i = 0; i < 8; i++) {
-               printk("*%08lx == %08lx, ", (unsigned long)p, *p);
+               printk("*%08lx == %08lx, ", (unsigned long) p, *p);
                p++;
-               printk("*%08lx == %08lx\n", (unsigned long)p, *p);
+               printk("*%08lx == %08lx\n", (unsigned long) p, *p);
                p++;
        }
 }