Date: Tue, 17 Jul 2001 11:51:57 +0200 From: Tor.Egge@fast.no To: bde@zeta.org.au Cc: juriy@aviaport.ru, freebsd-current@FreeBSD.ORG, peter@FreeBSD.ORG Subject: Re: kernel with SSE is unstable Message-ID: <200107170951.LAA72393@midten.fast.no> In-Reply-To: Your message of "Mon, 16 Jul 2001 20:35:13 %2B1000 (EST)" References: <Pine.BSF.4.21.0107162017400.58001-100000@besplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
----Next_Part(Tue_Jul_17_11:46:48_2001)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit > Good. > > I want all use of the cpu number removed. It seems to be just to avoid > alignment problems that shouldn't happen in practice (the save area > should always be suitably aligned if it isn't already, and I think it > is already). The pcb_save area has the proper alignment but the dummy variable used in npxinit might not have the proper alignment when on the stack. The enclosed patch should be a step in the right direction. - Tor Egge ----Next_Part(Tue_Jul_17_11:46:48_2001)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Index: sys/i386/isa/npx.c =================================================================== RCS file: /home/ncvs/src/sys/i386/isa/npx.c,v retrieving revision 1.105 diff -u -r1.105 npx.c --- sys/i386/isa/npx.c 2001/07/16 06:00:23 1.105 +++ sys/i386/isa/npx.c 2001/07/16 16:54:13 @@ -564,7 +564,7 @@ npxinit(control) u_short control; { - union savefpu dummy; + static union savefpu dummy; critical_t savecrit; if (!npx_exists) @@ -926,30 +926,21 @@ fpusave(addr) union savefpu *addr; { - static struct savexmm svxmm[MAXCPU]; - u_char oncpu = PCPU_GET(cpuid); if (!cpu_fxsr) fnsave(addr); - else { - fxsave(&svxmm[oncpu]); - bcopy(&svxmm[oncpu], addr, sizeof(struct savexmm)); - } + else + fxsave(addr); } static void fpurstor(addr) union savefpu *addr; { - static struct savexmm svxmm[MAXCPU]; - u_char oncpu = PCPU_GET(cpuid); - if (!cpu_fxsr) frstor(addr); - else { - bcopy(addr, &svxmm[oncpu], sizeof (struct savexmm)); - fxrstor(&svxmm[oncpu]); - } + else + fxrstor(addr); } #ifdef I586_CPU_XXX ----Next_Part(Tue_Jul_17_11:46:48_2001)---- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200107170951.LAA72393>