On Tue, 2007-10-30 at 16:50 -0500, Will Schmidt wrote: > [powerpc] update xmon slb code > > This adds a bit more detail to the xmon SLB output. When the valid bit is > set, This displays the ESID and VSID values, as well as decoding the > segment size. (1T or 256M). This supresses the output for any slb entries > that contain only zeros. > > sample output from power6 (1T segment support):
.../.... > > Tested on power5 and power6. > > Signed-Off-By: Will Schmidt <[EMAIL PROTECTED]> Acked-by: Benjamin Herrenschmidt <[EMAIL PROTECTED]> > --- > This version adds padding around the ESID and VSID fields, and the LLP bits > are displayed too. (Per request from Olof and Ben). > I'll try to follow up sometime later with code that will handle decoding page > sizes. I dont have a testcase handy to properly exercise that yet. :-) > --- > > arch/powerpc/xmon/xmon.c | 27 +++++++++++++++++++++------ > 1 files changed, 21 insertions(+), 6 deletions(-) > > > diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c > index 121b04d..93c26c3 100644 > --- a/arch/powerpc/xmon/xmon.c > +++ b/arch/powerpc/xmon/xmon.c > @@ -2527,16 +2527,31 @@ static void xmon_print_symbol(unsigned long address, > const char *mid, > static void dump_slb(void) > { > int i; > - unsigned long tmp; > + unsigned long esid,vsid,valid; > + unsigned long llp_bits; > > printf("SLB contents of cpu %x\n", smp_processor_id()); > > for (i = 0; i < SLB_NUM_ENTRIES; i++) { > - asm volatile("slbmfee %0,%1" : "=r" (tmp) : "r" (i)); > - printf("%02d %016lx ", i, tmp); > - > - asm volatile("slbmfev %0,%1" : "=r" (tmp) : "r" (i)); > - printf("%016lx\n", tmp); > + asm volatile("slbmfee %0,%1" : "=r" (esid) : "r" (i)); > + asm volatile("slbmfev %0,%1" : "=r" (vsid) : "r" (i)); > + valid = (esid & SLB_ESID_V); > + if (valid | esid | vsid) { > + printf("%02d %016lx %016lx", i, esid, vsid); > + if (valid) { > + llp_bits = vsid & SLB_VSID_LLP; > + if (vsid & SLB_VSID_B_1T) { > + printf(" 1T ESID=%9lx VSID=%10lx LLP > bits:%3lx \n", > + GET_ESID_1T(esid),vsid >> > SLB_VSID_SHIFT_1T, > + llp_bits); > + } else { > + printf(" 256M ESID=%9lx VSID=%10lx LLP > bits:%3lx \n", > + GET_ESID(esid),vsid >> > SLB_VSID_SHIFT, > + llp_bits); > + } > + } else > + printf("\n"); > + } > } > } > > > > _______________________________________________ > Linuxppc-dev mailing list > Linuxppc-dev@ozlabs.org > https://ozlabs.org/mailman/listinfo/linuxppc-dev _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev