Source-Changes-HG archive

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

[src/nathanw_sa]: src/sys/arch/sun2/sun2 Fixed pte_print to display the corre...



details:   https://anonhg.NetBSD.org/src/rev/72bda54b0c51
branches:  nathanw_sa
changeset: 504734:72bda54b0c51
user:      fredette <fredette%NetBSD.org@localhost>
date:      Mon Jun 11 21:36:00 2001 +0000

description:
Fixed pte_print to display the correct names
for VME device pages.

diffstat:

 sys/arch/sun2/sun2/db_machdep.c |  158 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 158 insertions(+), 0 deletions(-)

diffs (162 lines):

diff -r 9c4300690ef9 -r 72bda54b0c51 sys/arch/sun2/sun2/db_machdep.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/sun2/sun2/db_machdep.c   Mon Jun 11 21:36:00 2001 +0000
@@ -0,0 +1,158 @@
+/*     $NetBSD: db_machdep.c,v 1.2.8.2 2001/06/11 21:36:00 fredette Exp $      */
+
+/*-
+ * Copyright (c) 1996 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Gordon W. Ross.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *        This product includes software developed by the NetBSD
+ *        Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Machine-dependent functions used by ddb
+ */
+
+#include <sys/param.h>
+#include <sys/proc.h>
+
+#include <machine/db_machdep.h>
+#include <machine/promlib.h>
+#include <machine/pte.h>
+
+#include <sun2/sun2/machdep.h>
+#include <sun2/sun2/control.h>
+
+#include <ddb/db_command.h>
+#include <ddb/db_output.h>
+#include <ddb/db_interface.h>
+
+static void db_mach_abort   __P((db_expr_t, int, db_expr_t, char *));
+static void db_mach_halt    __P((db_expr_t, int, db_expr_t, char *));
+static void db_mach_reboot  __P((db_expr_t, int, db_expr_t, char *));
+static void db_mach_pagemap __P((db_expr_t, int, db_expr_t, char *));
+
+const struct db_command db_machine_command_table[] = {
+       { "abort",      db_mach_abort,  0,      0 },
+       { "halt",       db_mach_halt,   0,      0 },
+       { "pgmap",      db_mach_pagemap,        CS_SET_DOT, 0 },
+       { "reboot",     db_mach_reboot, 0,      0 },
+       { (char *)0, }
+};
+
+/*
+ * Machine-specific ddb commands for the sun2:
+ *    abort:   Drop into monitor via abort (allows continue)
+ *    halt:    Exit to monitor as in halt(8)
+ *    reboot:  Reboot the machine as in reboot(8)
+ *    pgmap:   Given addr, Print addr, segmap, pagemap, pte
+ */
+
+static void
+db_mach_abort(addr, have_addr, count, modif)
+       db_expr_t       addr;
+       int             have_addr;
+       db_expr_t       count;
+       char *          modif;
+{
+       prom_abort();
+}
+
+static void
+db_mach_halt(addr, have_addr, count, modif)
+       db_expr_t       addr;
+       int             have_addr;
+       db_expr_t       count;
+       char *          modif;
+{
+       prom_halt();
+}
+
+static void
+db_mach_reboot(addr, have_addr, count, modif)
+       db_expr_t       addr;
+       int             have_addr;
+       db_expr_t       count;
+       char *          modif;
+{
+       prom_boot("");
+}
+
+
+static void pte_print __P((int));
+
+static void
+db_mach_pagemap(addr, have_addr, count, modif)
+       db_expr_t       addr;
+       int             have_addr;
+       db_expr_t       count;
+       char *          modif;
+{
+       u_long va = m68k_trunc_page((u_long)addr);
+       int pte;
+       int sme;
+
+       sme = get_segmap(va);
+       if (sme == 0xFF) pte = 0;
+       else pte = get_pte(va);
+       db_printf("0x%08lx [%02x] 0x%08x", va, sme, pte);
+
+       pte_print(pte);
+       db_next = va + NBPG;
+}
+
+static void
+pte_print(pte)
+       int pte;
+{
+       int t;
+       static char *pgt_names[] = {
+               "MEM", "OBIO", "VME0", "VME8",
+       };
+
+       if (pte & PG_VALID) {
+               db_printf(" V");
+               if (pte & PG_WRITE)
+                       db_printf(" W");
+               if (pte & PG_SYSTEM)
+                       db_printf(" S");
+               if (pte & PG_NC)
+                       db_printf(" NC");
+               if (pte & PG_REF)
+                       db_printf(" Ref");
+               if (pte & PG_MOD)
+                       db_printf(" Mod");
+
+               t = (pte >> PG_TYPE_SHIFT) & 3;
+               db_printf(" %s", pgt_names[t]);
+               db_printf(" PA=0x%x\n", PG_PA(pte));
+       }
+       else db_printf(" INVALID\n");
+}



Home | Main Index | Thread Index | Old Index