Module Name: src Committed By: uwe Date: Tue Aug 4 02:09:58 UTC 2020
Modified Files: src/sys/arch/sh3/sh3: pmb.c Log Message: st40_pmb_dump - factor out. Print the WT bit as either "WT" or "CB" when C is set, as "--" otherwise. Few other minor tweaks. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/sh3/sh3/pmb.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/sh3/sh3/pmb.c diff -u src/sys/arch/sh3/sh3/pmb.c:1.1 src/sys/arch/sh3/sh3/pmb.c:1.2 --- src/sys/arch/sh3/sh3/pmb.c:1.1 Thu Jul 30 03:57:52 2020 +++ src/sys/arch/sh3/sh3/pmb.c Tue Aug 4 02:09:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmb.c,v 1.1 2020/07/30 03:57:52 uwe Exp $ */ +/* $NetBSD: pmb.c,v 1.2 2020/08/04 02:09:57 uwe Exp $ */ /* * Copyright (c) 2020 Valery Ushakov * All rights reserved. @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmb.c,v 1.1 2020/07/30 03:57:52 uwe Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmb.c,v 1.2 2020/08/04 02:09:57 uwe Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -36,25 +36,28 @@ __KERNEL_RCSID(0, "$NetBSD: pmb.c,v 1.1 #include <sh3/pmb.h> +static void st40_pmb_dump(int se_mode, int ub29); + + + void st40_pmb_init(int product) { + uint32_t pascr = 0; /* XXX: -Wuninitialized */ int se_mode; - bool have_ub; - uint8_t ub; + int ub29; char bits[64]; switch (product) { /* ST40-300 */ case CPU_PRODUCT_STX7105: { - uint32_t pascr = _reg_read_4(ST40_PASCR); + pascr = _reg_read_4(ST40_PASCR); snprintb(bits, sizeof(bits), ST40_PASCR_BITS, pascr); printf("PMB: PASCR=%s\n", bits); se_mode = (pascr & ST40_PASCR_SE); - have_ub = true; - ub = (uint8_t)(pascr & ST40_PASCR_UB_MASK); + ub29 = pascr & ST40_PASCR_UB_MASK; break; } @@ -64,8 +67,7 @@ st40_pmb_init(int product) uint32_t mmucr = _reg_read_4(SH4_MMUCR); se_mode = (mmucr & ST40_MMUCR_SE); - have_ub = false; - ub = 0; + ub29 = -1; break; } #endif @@ -75,14 +77,24 @@ st40_pmb_init(int product) return; } + st40_pmb_dump(se_mode, ub29); +} + + +static void +st40_pmb_dump(int se_mode, int ub29) +{ + char bits[64] __unused; + if (!se_mode) { printf("PMB: 29-bit mode\n"); - if (have_ub) { - for (int area = 0; area < 8; ++area) { - bool unbuffered = !!(ub & (1u << area)); - printf("PMB: area%d %s\n", area, - unbuffered ? "UNBUFFERED" : "buffered"); - } + if (ub29 == -1) + return; + + for (int area = 0; area < 8; ++area) { + bool unbuffered = !!((uint32_t)ub29 & (1u << area)); + printf("PMB: area%d %s\n", area, + unbuffered ? "UB" : "--"); } return; } @@ -135,6 +147,7 @@ st40_pmb_init(int product) sz << 4, data & ST40_PMB_DA_UB ? "UB" : "--", data & ST40_PMB_DA_C ? "C" : "-", - data & ST40_PMB_DA_WT ? "WT" : "CB"); + data & ST40_PMB_DA_C ? + (data & ST40_PMB_DA_WT ? "WT" : "CB") : "--"); } }