Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/sparc/sparc Remove cruft from `nmi_hard()' interrup...



details:   https://anonhg.NetBSD.org/src/rev/108ad8a9b8d7
branches:  trunk
changeset: 473008:108ad8a9b8d7
user:      pk <pk%NetBSD.org@localhost>
date:      Sun May 16 16:56:35 1999 +0000

description:
Remove cruft from `nmi_hard()' interrupt handler.

diffstat:

 sys/arch/sparc/sparc/intr.c |  39 +++++++++++++++------------------------
 1 files changed, 15 insertions(+), 24 deletions(-)

diffs (69 lines):

diff -r 47a8444b02ca -r 108ad8a9b8d7 sys/arch/sparc/sparc/intr.c
--- a/sys/arch/sparc/sparc/intr.c       Sun May 16 16:48:59 1999 +0000
+++ b/sys/arch/sparc/sparc/intr.c       Sun May 16 16:56:35 1999 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: intr.c,v 1.39 1999/02/27 16:13:59 pk Exp $ */
+/*     $NetBSD: intr.c,v 1.40 1999/05/16 16:56:35 pk Exp $ */
 
 /*
  * Copyright (c) 1992, 1993
@@ -214,9 +214,6 @@
 int    (*vmeerr_handler) __P((void));
 int    (*moduleerr_handler) __P((void));
 
-int    nmisync1; /*XXX*/
-int    nmisync2;
-int    nmifatal;
 
 void
 nmi_hard()
@@ -229,18 +226,22 @@
        char bits[64];
        u_int afsr, afva;
 
-       if (cpuinfo.master == 0) {
-               while (nmisync1 == 0) ;
-               printf("CPU%d: held\n", cpuinfo.mid);
-               while (nmisync2 != 0) ;
-               /* XXX - should check module errors here */
-               if (nmifatal == 0)
-                       return;
-               prom_halt();
+       afsr = afva = 0;
+       if ((*cpuinfo.get_asyncflt)(&afsr, &afva) == 0) {
+               printf("Async registers (mid %d): afsr=%s; afva=0x%x%x\n",
+                       cpuinfo.mid,
+                       bitmask_snprintf(afsr, AFSR_BITS, bits, sizeof(bits)),
+                       (afsr & AFSR_AFA) >> AFSR_AFA_RSHIFT, afva);
        }
 
-       nmisync2 = 1;
-       nmisync1 = 1;
+       if (cpuinfo.master == 0) {
+               /*
+                * For now, just return.
+                * Should wait on damage analysis done by the master.
+                */
+               return;
+       }
+
        /*
         * Examine pending system interrupts.
         */
@@ -269,16 +270,6 @@
                        fatal |= (*moduleerr_handler)();
        }
 
-       if ((*cpuinfo.get_asyncflt)(&afsr, &afva) == 0) {
-               printf("Async registers: afsr=%s; afva=0x%x%x\n",
-                       bitmask_snprintf(afsr, AFSR_BITS, bits, sizeof(bits)),
-                       (afsr & AFSR_AFA) >> AFSR_AFA_RSHIFT, afva);
-       }
-
-
-       nmisync1 = 0;
-       nmifatal = fatal;
-       nmisync2 = 0;
        if (fatal)
                panic("nmi");
 }



Home | Main Index | Thread Index | Old Index