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