From 216b6d2da03b53b3a935d69cc1c5dfd65786ec01 Mon Sep 17 00:00:00 2001 From: Bruce Evans Date: Fri, 4 Jun 1999 18:13:25 +0000 Subject: Really fix cy-driver-related panics when SMP is configured. Rev.1.88 only fixed half the problem. Tested by: Michael Scott Boers --- sys/dev/cy/cy.c | 8 +++++--- sys/dev/cy/cy_isa.c | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'sys/dev') diff --git a/sys/dev/cy/cy.c b/sys/dev/cy/cy.c index dd98d7ad5da2..48ecb9ff8c6f 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 dd98d7ad5da2..48ecb9ff8c6f 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 -- cgit v1.3