Module Name: src Committed By: matt Date: Wed Feb 1 09:51:01 UTC 2012
Modified Files: src/sys/arch/powerpc/powerpc: db_interface.c Log Message: Need runtime checks for mach mmu command. To generate a diff of this commit: cvs rdiff -u -r1.49 -r1.50 src/sys/arch/powerpc/powerpc/db_interface.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/powerpc/powerpc/db_interface.c diff -u src/sys/arch/powerpc/powerpc/db_interface.c:1.49 src/sys/arch/powerpc/powerpc/db_interface.c:1.50 --- src/sys/arch/powerpc/powerpc/db_interface.c:1.49 Wed Feb 1 05:25:58 2012 +++ src/sys/arch/powerpc/powerpc/db_interface.c Wed Feb 1 09:51:00 2012 @@ -1,8 +1,8 @@ -/* $NetBSD: db_interface.c,v 1.49 2012/02/01 05:25:58 matt Exp $ */ +/* $NetBSD: db_interface.c,v 1.50 2012/02/01 09:51:00 matt Exp $ */ /* $OpenBSD: db_interface.c,v 1.2 1996/12/28 06:21:50 rahnds Exp $ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.49 2012/02/01 05:25:58 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.50 2012/02/01 09:51:00 matt Exp $"); #define USERACC @@ -343,6 +343,9 @@ db_show_bat(db_expr_t addr, bool have_ad u_int i; u_int maxbat = (oeacpufeat & OEACPU_HIGHBAT) ? 8 : 4; + if (oeacpufeat & OEACPU_NOBAT) + return; + cpuvers = mfpvr() >> 16; ibat[0].batu = mfspr(SPR_IBAT0U); @@ -406,26 +409,27 @@ static void db_show_mmu(db_expr_t addr, bool have_addr, db_expr_t count, const char *modif) { paddr_t sdr1; -#if !defined(PPC_OEA64) && !defined(PPC_OEA64_BRIDGE) - register_t sr; - vaddr_t saddr; - int i; -#endif __asm volatile ("mfsdr1 %0" : "=r"(sdr1)); db_printf("sdr1\t\t0x%08lx\n", sdr1); #if defined(PPC_OEA64) || defined(PPC_OEA64_BRIDGE) - __asm volatile ("mfasr %0" : "=r"(sdr1)); - db_printf("asr\t\t0x%08lx\n", sdr1); -#else - saddr = 0; - for (i = 0; i<= 0xf; i++) { - if ((i & 3) == 0) - db_printf("sr%d-%d\t\t", i, i+3); - __asm volatile ("mfsrin %0,%1" : "=r"(sr) : "r"(saddr)); - db_printf("0x%08lx %c", sr, (i&3) == 3 ? '\n' : ' '); - saddr += 1 << ADDR_SR_SHFT; + if (oeacpufeat & (OEACPU_64|OEACPU_64_BRIDGE)) { + __asm volatile ("mfasr %0" : "=r"(sdr1)); + db_printf("asr\t\t0x%08lx\n", sdr1); + } +#endif +#if defined(PPC_OEA) || defined(PPC_OEA64_BRIDGE) + if ((oeacpufeat & OEACPU_64) == 0) { + vaddr_t saddr = 0; + for (u_int i = 0; i <= 0xf; i++) { + register_t sr; + if ((i & 3) == 0) + db_printf("sr%d-%d\t\t", i, i+3); + __asm volatile ("mfsrin %0,%1" : "=r"(sr) : "r"(saddr)); + db_printf("0x%08lx %c", sr, (i&3) == 3 ? '\n' : ' '); + saddr += 1 << ADDR_SR_SHFT; + } } #endif }