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 sun4/sun4c sw interrupt entry: check in...



details:   https://anonhg.NetBSD.org/src/rev/e80396c0480d
branches:  trunk
changeset: 573591:e80396c0480d
user:      pk <pk%NetBSD.org@localhost>
date:      Tue Feb 01 22:33:02 2005 +0000

description:
sun4/sun4c sw interrupt entry: check interrupt register to determine to
see whether there is a pending software interrupt at the given level.
If not, it must be a device interrupt sharing that level.

diffstat:

 sys/arch/sparc/sparc/locore.s |  12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diffs (28 lines):

diff -r d9e992240821 -r e80396c0480d sys/arch/sparc/sparc/locore.s
--- a/sys/arch/sparc/sparc/locore.s     Tue Feb 01 20:59:55 2005 +0000
+++ b/sys/arch/sparc/sparc/locore.s     Tue Feb 01 22:33:02 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: locore.s,v 1.214 2004/07/04 09:54:20 pk Exp $  */
+/*     $NetBSD: locore.s,v 1.215 2005/02/01 22:33:02 pk Exp $  */
 
 /*
  * Copyright (c) 1996 Paul Kranenburg
@@ -2501,9 +2501,17 @@
  * this contains the psr, pc, npc, and interrupt level.
  */
 softintr_sun44c:
+       /*
+        * Entry point for level 1, 4 or 6 interrupts on sun4/sun4c
+        * which may be software interrupts. Check the interrupt
+        * register to see whether we're dealing software or hardware
+        * interrupt.
+        */
        sethi   %hi(INTRREG_VA), %l6
        ldub    [%l6 + %lo(INTRREG_VA)], %l5
-       andn    %l5, %l4, %l5
+       btst    %l5, %l4                ! is IE_L{1,4,6} set?
+       bz      sparc_interrupt44c      ! if not, must be a hw intr
+       andn    %l5, %l4, %l5           ! clear soft intr bit
        stb     %l5, [%l6 + %lo(INTRREG_VA)]
 
 softintr_common:



Home | Main Index | Thread Index | Old Index