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 db_tlbdump_cmd - get rid of RUN_P2/P1, use ...



details:   https://anonhg.NetBSD.org/src/rev/257c0d8939d3
branches:  trunk
changeset: 936749:257c0d8939d3
user:      uwe <uwe%NetBSD.org@localhost>
date:      Mon Aug 03 01:56:18 2020 +0000

description:
db_tlbdump_cmd - get rid of RUN_P2/P1, use functions instead.

Move the bits of code to read TLB entries into separate functions and
call them via P2 pointers instead of doing P2/P1 switch inline.

diffstat:

 sys/arch/sh3/sh3/db_interface.c |  51 +++++++++++++++++++++++++++++++---------
 1 files changed, 39 insertions(+), 12 deletions(-)

diffs (102 lines):

diff -r d4302b1f4e51 -r 257c0d8939d3 sys/arch/sh3/sh3/db_interface.c
--- a/sys/arch/sh3/sh3/db_interface.c   Mon Aug 03 01:38:10 2020 +0000
+++ b/sys/arch/sh3/sh3/db_interface.c   Mon Aug 03 01:56:18 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: db_interface.c,v 1.63 2020/08/03 01:18:45 uwe Exp $    */
+/*     $NetBSD: db_interface.c,v 1.64 2020/08/03 01:56:18 uwe Exp $    */
 
 /*-
  * Copyright (C) 2002 UCHIYAMA Yasushi.  All rights reserved.
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.63 2020/08/03 01:18:45 uwe Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.64 2020/08/03 01:56:18 uwe Exp $");
 
 #include "opt_ddb.h"
 #include "opt_kgdb.h"
@@ -66,6 +66,13 @@
 static void kdb_printtrap(u_int, int);
 
 static void db_tlbdump_cmd(db_expr_t, bool, db_expr_t, const char *);
+#ifdef SH4
+static __noinline void
+__db_get_itlb_sh4(uint32_t, uint32_t *, uint32_t *, uint32_t *);
+static __noinline void
+__db_get_utlb_sh4(uint32_t, uint32_t *, uint32_t *, uint32_t *);
+#endif
+
 static char *__db_procname_by_asid(int);
 static void __db_tlbdump_pfn(uint32_t);
 #ifdef SH4
@@ -320,8 +327,13 @@
 #endif /* SH3 */
 #ifdef SH4
        if (CPU_IS_SH4) {
+               void (*get_itlb_p2)(uint32_t, uint32_t *, uint32_t *, uint32_t *);
+               void (*get_utlb_p2)(uint32_t, uint32_t *, uint32_t *, uint32_t *);
                uint32_t aa, da1, da2;
 
+               get_itlb_p2 = (void *)SH3_P1SEG_TO_P2SEG(__db_get_itlb_sh4);
+               get_utlb_p2 = (void *)SH3_P1SEG_TO_P2SEG(__db_get_utlb_sh4);
+
                /* MMU configuration */
                r = _reg_read_4(SH4_MMUCR);
                db_printf("%s virtual storage mode, SQ access: (kernel%s)\n",
@@ -338,11 +350,7 @@
                for (i = 0; i < 4; i++) {
                        e = i << SH4_ITLB_E_SHIFT;
 
-                       RUN_P2;
-                       aa = _reg_read_4(SH4_ITLB_AA | e);
-                       da1 = _reg_read_4(SH4_ITLB_DA1 | e);
-                       da2 = _reg_read_4(SH4_ITLB_DA2 | e);
-                       RUN_P1;
+                       (*get_itlb_p2)(e, &aa, &da1, &da2);
 
                        db_printf("0x%08x   %3d",
                            aa & SH4_ITLB_AA_VPN_MASK,
@@ -367,11 +375,7 @@
                for (i = 0; i < 64; i++) {
                        e = i << SH4_UTLB_E_SHIFT;
 
-                       RUN_P2;
-                       aa = _reg_read_4(SH4_UTLB_AA | e);
-                       da1 = _reg_read_4(SH4_UTLB_DA1 | e);
-                       da2 = _reg_read_4(SH4_UTLB_DA2 | e);
-                       RUN_P1;
+                       (*get_utlb_p2)(e, &aa, &da1, &da2);
 
                        db_printf("0x%08x   %3d",
                            aa & SH4_UTLB_AA_VPN_MASK,
@@ -397,6 +401,29 @@
 #endif /* SH4 */
 }
 
+
+#ifdef SH4
+static __noinline void
+__db_get_itlb_sh4(uint32_t e, uint32_t *paa, uint32_t *pda1, uint32_t *pda2)
+{
+
+       *paa = _reg_read_4(SH4_ITLB_AA | e);
+       *pda1 = _reg_read_4(SH4_ITLB_DA1 | e);
+       *pda2 = _reg_read_4(SH4_ITLB_DA2 | e);
+}
+
+
+static __noinline void
+__db_get_utlb_sh4(uint32_t e, uint32_t *paa, uint32_t *pda1, uint32_t *pda2)
+{
+
+       *paa = _reg_read_4(SH4_UTLB_AA | e);
+       *pda1 = _reg_read_4(SH4_UTLB_DA1 | e);
+       *pda2 = _reg_read_4(SH4_UTLB_DA2 | e);
+}
+#endif /* SH4 */
+
+
 static void
 __db_tlbdump_pfn(uint32_t r)
 {



Home | Main Index | Thread Index | Old Index