From owner-freebsd-smp Wed Mar 26 03:00:04 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id DAA02825 for smp-outgoing; Wed, 26 Mar 1997 03:00:04 -0800 (PST) Received: from corona.jcmax.com (corona.jcmax.com [204.69.248.2]) by freefall.freebsd.org (8.8.5/8.8.5) with SMTP id DAA02813 for ; Wed, 26 Mar 1997 03:00:01 -0800 (PST) Received: by corona.jcmax.com (5.65/2.49G/4.1.3_U1) id AA21640; Wed, 26 Mar 97 05:59:53 -0500 Date: Wed, 26 Mar 97 05:59:53 -0500 From: cr@jcmax.com (Cyrus Rahman) Message-Id: <9703261059.AA21640@corona.jcmax.com> To: smp@freebsd.org Subject: APIC_IO and the fpu Sender: owner-smp@freebsd.org X-Loop: FreeBSD.org Precedence: bulk >> >It looks to me that the problem with the fpu stuff might be more a >> >function of FPU error handling (irq13 vs. IDT trap #16) rather than just >> >plain floating point operations... >> >> I agree, and think that someone could find it by examining what goes on >> in i386/isa/npx.c:mpxintr(). > >A further thought, its possible that it could be APIC_IO related, could >someone run this program on both an APIC_IO and non APIC_IO kernel >to see if it locks both (I don't have an SMP machine anymore)? > >> ======================================================================== >> #include >> #include >> void blech() { exit(3); } >> main() >> { >> int i32; >> double f; >> int result = 0; >> signal(SIGFPE, blech); >> >> f = (double) 0x7fffffff; >> f = 10 * f; >> i32 = (int) f; >> >> if (i32 != (int) f) >> result |= 1; >> exit(result); >> } >> ======================================================================== > >-- >Steve Passe | powered by >smp@csn.net | FreeBSD The code runs fine with APIC_IO off, but locks the machine up quite nicely with it on. I'm not sure what causes the problem yet... Cyrus