Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/sh3/sh3 st40_pmb_dump - factor out.



details:   https://anonhg.NetBSD.org/src/rev/3b797cf2f8e9
branches:  trunk
changeset: 936790:3b797cf2f8e9
user:      uwe <uwe%NetBSD.org@localhost>
date:      Tue Aug 04 02:09:57 2020 +0000

description:
st40_pmb_dump - factor out.

Print the WT bit as either "WT" or "CB" when C is set, as "--"
otherwise.  Few other minor tweaks.

diffstat:

 sys/arch/sh3/sh3/pmb.c |  45 +++++++++++++++++++++++++++++----------------
 1 files changed, 29 insertions(+), 16 deletions(-)

diffs (102 lines):

diff -r 18510cbfda21 -r 3b797cf2f8e9 sys/arch/sh3/sh3/pmb.c
--- a/sys/arch/sh3/sh3/pmb.c    Tue Aug 04 01:59:46 2020 +0000
+++ b/sys/arch/sh3/sh3/pmb.c    Tue Aug 04 02:09:57 2020 +0000
@@ -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 @@
 #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 @@
                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 @@
                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 @@
                       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") : "--");
        }
 }



Home | Main Index | Thread Index | Old Index