BSD 4_3_Net_2 release
[unix-history] / usr / src / sys / vax / vax / ka650.c
index 264c260..bb61664 100644 (file)
@@ -1,9 +1,39 @@
 /*
 /*
- * Copyright (c) 1988  Regents of the University of California.
- * All rights reserved.  The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
+ * Copyright (c) 1988 The Regents of the University of California.
+ * All rights reserved.
  *
  *
- *     @(#)ka650.c     7.1 (Berkeley) %G%
+ * This code is derived from software contributed to Berkeley by
+ * Mt. Xinu.
+ *
+ * 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 University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
+ *
+ *     @(#)ka650.c     7.7 (Berkeley) 12/16/90
  */
 
 #if VAX650
  */
 
 #if VAX650
  * vax650-specific code.
  */
 
  * vax650-specific code.
  */
 
-#include "param.h"
-#include "time.h"
-#include "kernel.h"
+#include "sys/param.h"
+#include "sys/time.h"
+#include "sys/kernel.h"
+#include "sys/systm.h"
 
 
-#include "cpu.h"
-#include "clock.h"
-#include "psl.h"
+#include "../include/cpu.h"
+#include "../include/clock.h"
+#include "../include/psl.h"
 #include "mem.h"
 #include "mem.h"
-#include "mtpr.h"
+#include "../include/mtpr.h"
 #include "ka650.h"
 
 
 #include "ka650.h"
 
 
@@ -32,6 +63,11 @@ ka650_init()
        ioaccess(KA650_IPCR, KA650IPCRmap, sizeof(ka650ipcr));
        ioaccess(KA650_CACHE, KA650CACHEmap, KA650_CACHESIZE);
        ka650encache();
        ioaccess(KA650_IPCR, KA650IPCRmap, sizeof(ka650ipcr));
        ioaccess(KA650_CACHE, KA650CACHEmap, KA650_CACHESIZE);
        ka650encache();
+       if (ctob(physmem) > ka650merr.merr_qbmbr) {
+               printf("physmem(0x%x) > qbmbr(0x%x)\n",
+                   ctob(physmem), ka650merr.merr_qbmbr);
+               panic("qbus map unprotected");
+       }
 }
 
 ka650_clkstartrt()
 }
 
 ka650_clkstartrt()
@@ -107,19 +143,23 @@ ka650_mchk(cmcf)
        register u_int type = mcf->mc65_summary;
        register u_int i;
 
        register u_int type = mcf->mc65_summary;
        register u_int i;
 
-       printf("machine check %x: %s%s\n", type);
+       printf("machine check %x", type);
        if (type >= 0x80 && type <= 0x83)
                type -= (0x80 + 11);
        if (type >= 0x80 && type <= 0x83)
                type -= (0x80 + 11);
-       if (type < NMC650)
-               printf("%s: ", mc650[type]);
-       printf("vap %x istate1 %x istate2 %x pc %x psl %x\n",
+       if (type < NMC650 && mc650[type])
+               printf(": %s", mc650[type]);
+       printf("\n\tvap %x istate1 %x istate2 %x pc %x psl %x\n",
            mcf->mc65_mrvaddr, mcf->mc65_istate1, mcf->mc65_istate2,
            mcf->mc65_pc, mcf->mc65_psl);
            mcf->mc65_mrvaddr, mcf->mc65_istate1, mcf->mc65_istate2,
            mcf->mc65_pc, mcf->mc65_psl);
+       printf("dmaser=0x%b qbear=0x%x dmaear=0x%x\n",
+           ka650merr.merr_dser, DMASER_BITS, ka650merr.merr_qbear,
+           ka650merr.merr_dear);
+       ka650merr.merr_dser = DSER_CLEAR;
 
        i = mfpr(CAER);
        mtpr(CAER, CAER_MCC | CAER_DAT | CAER_TAG);
        if (i & CAER_MCC) {
 
        i = mfpr(CAER);
        mtpr(CAER, CAER_MCC | CAER_DAT | CAER_TAG);
        if (i & CAER_MCC) {
-               printf("cache 1");
+               printf("cache 1 ");
                if (i & CAER_DAT) {
                        printf("data");
                        i = cache1data;
                if (i & CAER_DAT) {
                        printf("data");
                        i = cache1data;
@@ -130,8 +170,7 @@ ka650_mchk(cmcf)
                        i = cache1tag;
                        cache1tag = time.tv_sec;
                }
                        i = cache1tag;
                        cache1tag = time.tv_sec;
                }
-       } else
-           if ((i & CAER_MCD) || (ka650merr.merr_errstat & MEM_CDAL)) {
+       } else if ((i & CAER_MCD) || (ka650merr.merr_errstat & MEM_CDAL)) {
                printf("CDAL");
                i = cdalerr;
                cdalerr = time.tv_sec;
                printf("CDAL");
                i = cdalerr;
                cdalerr = time.tv_sec;