Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/evbarm/ifpga Add barriers to prevent scheduling of ...



details:   https://anonhg.NetBSD.org/src/rev/8b4888f9c135
branches:  trunk
changeset: 568996:8b4888f9c135
user:      rearnsha <rearnsha%NetBSD.org@localhost>
date:      Sat Aug 07 11:08:58 2004 +0000

description:
Add barriers to prevent scheduling of critical code outside of the
SPL-protected region.

diffstat:

 sys/arch/evbarm/ifpga/ifpga_intr.h |  8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diffs (29 lines):

diff -r d06ee4312c80 -r 8b4888f9c135 sys/arch/evbarm/ifpga/ifpga_intr.h
--- a/sys/arch/evbarm/ifpga/ifpga_intr.h        Sat Aug 07 11:00:06 2004 +0000
+++ b/sys/arch/evbarm/ifpga/ifpga_intr.h        Sat Aug 07 11:08:58 2004 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ifpga_intr.h,v 1.2 2003/09/21 19:33:13 matt Exp $      */
+/*     $NetBSD: ifpga_intr.h,v 1.3 2004/08/07 11:08:58 rearnsha Exp $  */
 
 /*
  * Copyright (c) 2001, 2002 Wasabi Systems, Inc.
@@ -76,6 +76,8 @@
        extern void ifpga_do_pending(void);
        int oldirqstate, hwpend;
 
+       __insn_barrier();
+
        oldirqstate = disable_interrupts(I32_bit);
        current_spl_level = new;
 
@@ -99,7 +101,9 @@
        int     old;
 
        old = current_spl_level;
-       current_spl_level |= ifpga_imask[ipl];
+       current_spl_level = old | ifpga_imask[ipl];
+
+       __insn_barrier();
 
        return (old);
 }



Home | Main Index | Thread Index | Old Index