Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/pmax/pmax The ECC handling was broken when the comm...



details:   https://anonhg.NetBSD.org/src/rev/289b670af614
branches:  trunk
changeset: 467671:289b670af614
user:      mhitch <mhitch%NetBSD.org@localhost>
date:      Sat Mar 27 03:27:09 1999 +0000

description:
The ECC handling was broken when the common handling was split out of dec_3max.c
and dec_3maxplus.c.  The ERRSYN/CHKSYN register contains data, not an address.
Pass the address of the register rather than the contents to dec_mtasic_err()
instead of the register contents so it can read/write the register.
Correctable memory errors won't trap in dec_mtasic_err() anymore.

diffstat:

 sys/arch/pmax/pmax/dec_3max.c      |   6 +++---
 sys/arch/pmax/pmax/dec_3max_subr.c |  11 ++++++-----
 sys/arch/pmax/pmax/dec_3maxplus.c  |   6 +++---
 3 files changed, 12 insertions(+), 11 deletions(-)

diffs (96 lines):

diff -r 566da47f3f27 -r 289b670af614 sys/arch/pmax/pmax/dec_3max.c
--- a/sys/arch/pmax/pmax/dec_3max.c     Sat Mar 27 03:22:49 1999 +0000
+++ b/sys/arch/pmax/pmax/dec_3max.c     Sat Mar 27 03:27:09 1999 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: dec_3max.c,v 1.7 1999/03/25 01:17:52 simonb Exp $      */
+/*     $NetBSD: dec_3max.c,v 1.8 1999/03/27 03:27:09 mhitch Exp $      */
 
 /*
  * Copyright (c) 1998 Jonathan Stone.  All rights reserved.
@@ -73,7 +73,7 @@
 
 #include <sys/cdefs.h>                 /* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: dec_3max.c,v 1.7 1999/03/25 01:17:52 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dec_3max.c,v 1.8 1999/03/27 03:27:09 mhitch Exp $");
 
 #include <sys/types.h>
 #include <sys/systm.h>
@@ -337,7 +337,7 @@
 
        /* Fetch error address, ECC chk/syn bits, clear interrupt */
        erradr = *(u_int *)MIPS_PHYS_TO_KSEG1(KN02_SYS_ERRADR);
-       errsyn = *(u_int *)MIPS_PHYS_TO_KSEG1(KN02_SYS_CHKSYN);
+       errsyn = MIPS_PHYS_TO_KSEG1(KN02_SYS_CHKSYN);
        *(u_int *)MIPS_PHYS_TO_KSEG1(KN02_SYS_ERRADR) = 0;
        wbflush();
 
diff -r 566da47f3f27 -r 289b670af614 sys/arch/pmax/pmax/dec_3max_subr.c
--- a/sys/arch/pmax/pmax/dec_3max_subr.c        Sat Mar 27 03:22:49 1999 +0000
+++ b/sys/arch/pmax/pmax/dec_3max_subr.c        Sat Mar 27 03:27:09 1999 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: dec_3max_subr.c,v 1.5 1999/03/25 01:17:52 simonb Exp $ */
+/*     $NetBSD: dec_3max_subr.c,v 1.6 1999/03/27 03:27:09 mhitch Exp $ */
 
 /*
  * Copyright (c) 1998 Jonathan Stone.  All rights reserved.
@@ -32,7 +32,7 @@
 
 #include <sys/cdefs.h>                 /* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: dec_3max_subr.c,v 1.5 1999/03/25 01:17:52 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dec_3max_subr.c,v 1.6 1999/03/27 03:27:09 mhitch Exp $");
 
 #include <sys/types.h>
 #include <sys/systm.h>
@@ -67,19 +67,20 @@
                (erradr & KN02_ERR_ECCERR) ? "ECC" : "timeout",
                physadr);
        if (erradr & KN02_ERR_ECCERR) {
+               u_int errsyn_value = *(u_int *)errsyn;
                *(u_int *)errsyn = 0;
                wbflush();
-               printf("   ECC 0x%08x\n", errsyn);
+               printf("   ECC 0x%08x\n", errsyn_value);
 
                /* check for a corrected, single bit, read error */
                if (!(erradr & KN02_ERR_WRITE)) {
                        if (physadr & 0x4) {
                                /* check high word */
-                               if (errsyn & KN02_ECC_SNGHI)
+                               if (errsyn_value & KN02_ECC_SNGHI)
                                        return;
                        } else {
                                /* check low word */
-                               if (errsyn & KN02_ECC_SNGLO)
+                               if (errsyn_value & KN02_ECC_SNGLO)
                                        return;
                        }
                }
diff -r 566da47f3f27 -r 289b670af614 sys/arch/pmax/pmax/dec_3maxplus.c
--- a/sys/arch/pmax/pmax/dec_3maxplus.c Sat Mar 27 03:22:49 1999 +0000
+++ b/sys/arch/pmax/pmax/dec_3maxplus.c Sat Mar 27 03:27:09 1999 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: dec_3maxplus.c,v 1.13 1999/03/25 03:03:59 simonb Exp $ */
+/*     $NetBSD: dec_3maxplus.c,v 1.14 1999/03/27 03:27:09 mhitch Exp $ */
 
 /*
  * Copyright (c) 1998 Jonathan Stone.  All rights reserved.
@@ -73,7 +73,7 @@
 
 #include <sys/cdefs.h>                 /* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: dec_3maxplus.c,v 1.13 1999/03/25 03:03:59 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dec_3maxplus.c,v 1.14 1999/03/27 03:27:09 mhitch Exp $");
 
 #include <sys/types.h>
 #include <sys/systm.h>
@@ -494,7 +494,7 @@
 
        /* Fetch error address, ECC chk/syn bits, clear interrupt */
        erradr = *(u_int *)MIPS_PHYS_TO_KSEG1(KN03_SYS_ERRADR);
-       errsyn = *(u_int *)MIPS_PHYS_TO_KSEG1(KN03_SYS_ERRSYN);
+       errsyn = MIPS_PHYS_TO_KSEG1(KN03_SYS_ERRSYN);
        *(u_int *)MIPS_PHYS_TO_KSEG1(KN03_SYS_ERRADR) = 0;
        wbflush();
 



Home | Main Index | Thread Index | Old Index