fpu-387.h (set_fpu): Remove extra ":" in stmxcsr.

* config/fpu-387.h (set_fpu): Remove extra ":" in stmxcsr.
	Change cw and cw_sse variables to unsigned.
	(SSE): New definition.
	(has_sse): Use it.

From-SVN: r105402
This commit is contained in:
Uros Bizjak 2005-10-14 13:06:11 +02:00 committed by Uros Bizjak
parent 76f5f4414f
commit 771c0562b5
2 changed files with 13 additions and 5 deletions

View File

@ -1,9 +1,16 @@
2005-10-14 Uros Bizjak <uros@kss-loka.si>
* config/fpu-387.h (set_fpu): Remove extra ":" in stmxcsr.
Change cw and cw_sse variables to unsigned.
(SSE): New definition.
(has_sse): Use it.
2005-10-13 Thomas Koenig <Thomas.Koenig@online.de> 2005-10-13 Thomas Koenig <Thomas.Koenig@online.de>
* io/unix.c(fd_alloc_r_at): Use read() instead of do_read() * io/unix.c(fd_alloc_r_at): Use read() instead of do_read()
only in case of special files (e.g. terminals). only in case of special files (e.g. terminals).
2005-20-13 Uros Bizjak <uros@kss-loka.si> 2005-10-13 Uros Bizjak <uros@kss-loka.si>
* config/fpu-387.h (set_fpu): Add "=m" for stmxcsr. * config/fpu-387.h (set_fpu): Add "=m" for stmxcsr.

View File

@ -28,6 +28,7 @@ License along with libgfortran; see the file COPYING. If not,
write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA. */ Boston, MA 02110-1301, USA. */
#define SSE (1 << 25)
static int static int
has_sse (void) has_sse (void)
@ -58,7 +59,7 @@ has_sse (void)
: "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx)
: "0" (1)); : "0" (1));
if (edx & (1 << 25)) if (edx & SSE)
return 1; return 1;
return 0; return 0;
@ -67,8 +68,8 @@ has_sse (void)
void set_fpu (void) void set_fpu (void)
{ {
short cw; unsigned short cw;
int cw_sse; unsigned int cw_sse;
/* i387 -- see linux <fpu_control.h> header file for details. */ /* i387 -- see linux <fpu_control.h> header file for details. */
#define _FPU_MASK_IM 0x01 #define _FPU_MASK_IM 0x01
@ -90,7 +91,7 @@ void set_fpu (void)
if (has_sse()) if (has_sse())
{ {
/* SSE */ /* SSE */
asm volatile ("stmxcsr %0" : : "=m" (cw_sse)); asm volatile ("stmxcsr %0" : "=m" (cw_sse));
cw_sse &= 0xFFFF0000; cw_sse &= 0xFFFF0000;
if (options.fpe & GFC_FPE_INVALID) cw_sse |= 1 << 7; if (options.fpe & GFC_FPE_INVALID) cw_sse |= 1 << 7;
if (options.fpe & GFC_FPE_DENORMAL) cw_sse |= 1 << 8; if (options.fpe & GFC_FPE_DENORMAL) cw_sse |= 1 << 8;