diff options
author | bde <bde@FreeBSD.org> | 1999-06-04 18:13:25 +0000 |
---|---|---|
committer | bde <bde@FreeBSD.org> | 1999-06-04 18:13:25 +0000 |
commit | 2906737cf248c4a0aef37bddec86e73fb4c52108 (patch) | |
tree | ea3097ccb47cfa58330bbf258d67bfa7977a12f2 /sys | |
parent | 73eda783191f8728be54aa4d899462a5dd15586d (diff) | |
download | FreeBSD-src-2906737cf248c4a0aef37bddec86e73fb4c52108.zip FreeBSD-src-2906737cf248c4a0aef37bddec86e73fb4c52108.tar.gz |
Really fix cy-driver-related panics when SMP is configured. Rev.1.88 only
fixed half the problem.
Tested by: Michael Scott Boers <mboers@datacompusa.com>
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/cy/cy.c | 8 | ||||
-rw-r--r-- | sys/dev/cy/cy_isa.c | 8 | ||||
-rw-r--r-- | sys/i386/isa/cy.c | 8 |
3 files changed, 15 insertions, 9 deletions
diff --git a/sys/dev/cy/cy.c b/sys/dev/cy/cy.c index dd98d7a..48ecb9f 100644 --- a/sys/dev/cy/cy.c +++ b/sys/dev/cy/cy.c @@ -27,7 +27,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: cy.c,v 1.89 1999/05/30 16:52:11 phk Exp $ + * $Id: cy.c,v 1.90 1999/05/31 11:25:57 phk Exp $ */ #include "opt_compat.h" @@ -2853,7 +2853,8 @@ cd_getreg(com, reg) if (basecom->car != car) cd_outb(iobase, CD1400_CAR, cy_align, basecom->car = car); val = cd_inb(iobase, reg, cy_align); - write_eflags(ef); + if (ef & PSL_I) + enable_intr(); return (val); } @@ -2879,7 +2880,8 @@ cd_setreg(com, reg, val) if (basecom->car != car) cd_outb(iobase, CD1400_CAR, cy_align, basecom->car = car); cd_outb(iobase, reg, cy_align, val); - write_eflags(ef); + if (ef & PSL_I) + enable_intr(); } #ifdef CyDebug diff --git a/sys/dev/cy/cy_isa.c b/sys/dev/cy/cy_isa.c index dd98d7a..48ecb9f 100644 --- a/sys/dev/cy/cy_isa.c +++ b/sys/dev/cy/cy_isa.c @@ -27,7 +27,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: cy.c,v 1.89 1999/05/30 16:52:11 phk Exp $ + * $Id: cy.c,v 1.90 1999/05/31 11:25:57 phk Exp $ */ #include "opt_compat.h" @@ -2853,7 +2853,8 @@ cd_getreg(com, reg) if (basecom->car != car) cd_outb(iobase, CD1400_CAR, cy_align, basecom->car = car); val = cd_inb(iobase, reg, cy_align); - write_eflags(ef); + if (ef & PSL_I) + enable_intr(); return (val); } @@ -2879,7 +2880,8 @@ cd_setreg(com, reg, val) if (basecom->car != car) cd_outb(iobase, CD1400_CAR, cy_align, basecom->car = car); cd_outb(iobase, reg, cy_align, val); - write_eflags(ef); + if (ef & PSL_I) + enable_intr(); } #ifdef CyDebug diff --git a/sys/i386/isa/cy.c b/sys/i386/isa/cy.c index dd98d7a..48ecb9f 100644 --- a/sys/i386/isa/cy.c +++ b/sys/i386/isa/cy.c @@ -27,7 +27,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: cy.c,v 1.89 1999/05/30 16:52:11 phk Exp $ + * $Id: cy.c,v 1.90 1999/05/31 11:25:57 phk Exp $ */ #include "opt_compat.h" @@ -2853,7 +2853,8 @@ cd_getreg(com, reg) if (basecom->car != car) cd_outb(iobase, CD1400_CAR, cy_align, basecom->car = car); val = cd_inb(iobase, reg, cy_align); - write_eflags(ef); + if (ef & PSL_I) + enable_intr(); return (val); } @@ -2879,7 +2880,8 @@ cd_setreg(com, reg, val) if (basecom->car != car) cd_outb(iobase, CD1400_CAR, cy_align, basecom->car = car); cd_outb(iobase, reg, cy_align, val); - write_eflags(ef); + if (ef & PSL_I) + enable_intr(); } #ifdef CyDebug |