summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/ipl_funcs.c
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1999-07-10 15:28:01 +0000
committerbde <bde@FreeBSD.org>1999-07-10 15:28:01 +0000
commit76b661148982d686a345ce7e8af6b837139288a6 (patch)
tree984225551b54fbef3e436d6ac171c797ff70ad9f /sys/i386/isa/ipl_funcs.c
parent49a30aa645e3f361acf747fdefab3e56b508deec (diff)
downloadFreeBSD-src-76b661148982d686a345ce7e8af6b837139288a6.zip
FreeBSD-src-76b661148982d686a345ce7e8af6b837139288a6.tar.gz
Go back to the old (icu.s rev.1.7 1993) way of keeping the AST-pending
bit separate from ipending, since this is simpler and/or necessary for SMP and may even be better for UP. Reviewed by: alc, luoqi, tegge
Diffstat (limited to 'sys/i386/isa/ipl_funcs.c')
-rw-r--r--sys/i386/isa/ipl_funcs.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/sys/i386/isa/ipl_funcs.c b/sys/i386/isa/ipl_funcs.c
index 602ce01..2b7a1c4 100644
--- a/sys/i386/isa/ipl_funcs.c
+++ b/sys/i386/isa/ipl_funcs.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ipl_funcs.c,v 1.20 1999/05/09 23:40:29 peter Exp $
+ * $Id: ipl_funcs.c,v 1.21 1999/06/30 03:39:29 alc Exp $
*/
#include <sys/types.h>
@@ -55,7 +55,6 @@ void setdelayed(void)
}
#endif /* !SMP */
-DO_SETBITS(setsoftast, &ipending, SWI_AST_PENDING)
DO_SETBITS(setsoftcamnet,&ipending, SWI_CAMNET_PENDING)
DO_SETBITS(setsoftcambio,&ipending, SWI_CAMBIO_PENDING)
DO_SETBITS(setsoftclock, &ipending, SWI_CLOCK_PENDING)
@@ -106,8 +105,8 @@ GENSPL(splvm, cpl |= net_imask | bio_imask | cam_imask)
void
spl0(void)
{
- cpl = SWI_AST_MASK;
- if (ipending & ~SWI_AST_MASK)
+ cpl = 0;
+ if (ipending)
splz();
}
@@ -281,6 +280,12 @@ spl0(void)
for (;;) {
IFCPL_LOCK();
POSTCODE_HI(0xc);
+ /*
+ * XXX SWI_AST_MASK in ipending has moved to 1 in astpending,
+ * so the following code is dead, but just removing it may
+ * not be right.
+ */
+#if 0
if (cil & SWI_AST_MASK) { /* not now */
IFCPL_UNLOCK(); /* allow cil to change */
SPIN_RESET;
@@ -288,14 +293,15 @@ spl0(void)
SPIN_SPL
continue; /* try again */
}
+#endif
break;
}
#else /* INTR_SPL */
IFCPL_LOCK();
#endif /* INTR_SPL */
- cpl = SWI_AST_MASK;
- unpend = ipending & ~SWI_AST_MASK;
+ cpl = 0;
+ unpend = ipending;
IFCPL_UNLOCK();
if (unpend && !inside_intr)
OpenPOWER on IntegriCloud