*BSD News Article 2549


Return to BSD News archive

Path: sserve!manuel!munnari.oz.au!mips!mips!swrinde!news.dell.com!raid.dell.com!james
From: james@raid.dell.com (James Van Artsdalen)
Newsgroups: comp.unix.bsd
Subject: 386BSD 0.1 bug: npx.c
Message-ID: <1992Jul27.042209.19609@raid.dell.com>
Date: 27 Jul 92 04:22:09 GMT
Sender: james@raid.dell.com (James Van Artsdalen)
Reply-To: james@raid.dell.com (James Van Artsdalen)
Organization: Dell Computer Co
Lines: 51

npx.c has a bug that causes it to write to I/O port 0xB1 instead of
0xF1.  Depending on the chipset, this could be bad: some chipsets
don't fully decode the I/O space, and a write to port 0xB1 could wind
up going to the mask register for PIC1, ie, the routine could wind up
masking IRQ 8 through IRQ 15.

It should be noted that a lot of 386 designs ignore port 0xF1.
I would guess that all 486s ignore it.

The second chunk fixes an incorrect comment.

*** npx.c.~1~	Mon Jul 13 04:24:27 1992
--- npx.c	Sun Jul 26 22:14:02 1992
***************
*** 130,136 ****
  		curpcb->pcb_flags |= FP_NEEDSRESTORE;
  	}
  	load_cr0(rcr0() | CR0_EM);	/* start emulating */
! 	outb(0xb1,0);		/* reset processor */
  }
  
  /*
--- 130,136 ----
  		curpcb->pcb_flags |= FP_NEEDSRESTORE;
  	}
  	load_cr0(rcr0() | CR0_EM);	/* start emulating */
! 	outb(0xf1,0);		/* reset coprocessor */
  }
  
  /*
***************
*** 161,167 ****
  	int code;
  static status;
  
! 	outb(0xf0,0);		/* reset processor */
  /*pg("npxintr");*/
  
  	asm ("	fnstsw	%0 " : "=m" (status) : "m" (status) );
--- 161,167 ----
  	int code;
  static status;
  
! 	outb(0xf0,0);		/* clear BUSY# latch */
  /*pg("npxintr");*/
  
  	asm ("	fnstsw	%0 " : "=m" (status) : "m" (status) );
-- 
-- 
James R. Van Artsdalen          james@bigtex.cactus.org   "Live Free or Die"
Dell Computer Co    9505 Arboretum Blvd Austin TX 78759         512-338-8789