aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/xmon/xmon.c29
1 files changed, 23 insertions, 6 deletions
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
index c60d123e9f1f..865e36751f21 100644
--- a/arch/powerpc/xmon/xmon.c
+++ b/arch/powerpc/xmon/xmon.c
@@ -2539,16 +2539,33 @@ static void xmon_print_symbol(unsigned long address, const char *mid,
2539static void dump_slb(void) 2539static void dump_slb(void)
2540{ 2540{
2541 int i; 2541 int i;
2542 unsigned long tmp; 2542 unsigned long esid,vsid,valid;
2543 unsigned long llp;
2543 2544
2544 printf("SLB contents of cpu %x\n", smp_processor_id()); 2545 printf("SLB contents of cpu %x\n", smp_processor_id());
2545 2546
2546 for (i = 0; i < mmu_slb_size; i++) { 2547 for (i = 0; i < mmu_slb_size; i++) {
2547 asm volatile("slbmfee %0,%1" : "=r" (tmp) : "r" (i)); 2548 asm volatile("slbmfee %0,%1" : "=r" (esid) : "r" (i));
2548 printf("%02d %016lx ", i, tmp); 2549 asm volatile("slbmfev %0,%1" : "=r" (vsid) : "r" (i));
2549 2550 valid = (esid & SLB_ESID_V);
2550 asm volatile("slbmfev %0,%1" : "=r" (tmp) : "r" (i)); 2551 if (valid | esid | vsid) {
2551 printf("%016lx\n", tmp); 2552 printf("%02d %016lx %016lx", i, esid, vsid);
2553 if (valid) {
2554 llp = vsid & SLB_VSID_LLP;
2555 if (vsid & SLB_VSID_B_1T) {
2556 printf(" 1T ESID=%9lx VSID=%13lx LLP:%3lx \n",
2557 GET_ESID_1T(esid),
2558 (vsid & ~SLB_VSID_B) >> SLB_VSID_SHIFT_1T,
2559 llp);
2560 } else {
2561 printf(" 256M ESID=%9lx VSID=%13lx LLP:%3lx \n",
2562 GET_ESID(esid),
2563 (vsid & ~SLB_VSID_B) >> SLB_VSID_SHIFT,
2564 llp);
2565 }
2566 } else
2567 printf("\n");
2568 }
2552 } 2569 }
2553} 2570}
2554 2571