[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[commits] r1833 - in /trunk/ports: ChangeLog.eglibc sysdeps/m68k/dl-trampoline.S sysdeps/m68k/fpu_control.h
- To: commits@xxxxxxxxxx
- Subject: [commits] r1833 - in /trunk/ports: ChangeLog.eglibc sysdeps/m68k/dl-trampoline.S sysdeps/m68k/fpu_control.h
- From: nathan@xxxxxxxxxx
- Date: Wed, 28 Mar 2007 12:07:13 -0000
Author: nathan
Date: Wed Mar 28 05:07:13 2007
New Revision: 1833
Log:
* sysdeps/m68k/dl-trampoline.S: Do not save float regs on
non-float cpus.
* sysdeps/m68k/fpu_control.h: Provide non-fpu macro definitions.
Modified:
trunk/ports/ChangeLog.eglibc
trunk/ports/sysdeps/m68k/dl-trampoline.S
trunk/ports/sysdeps/m68k/fpu_control.h
Modified: trunk/ports/ChangeLog.eglibc
==============================================================================
--- trunk/ports/ChangeLog.eglibc (original)
+++ trunk/ports/ChangeLog.eglibc Wed Mar 28 05:07:13 2007
@@ -1,3 +1,9 @@
+2007-03-28 Nathan Sidwell <nathan@xxxxxxxxxxxxxxxx>
+
+ * sysdeps/m68k/dl-trampoline.S: Do not save float regs on
+ non-float cpus.
+ * sysdeps/m68k/fpu_control.h: Provide non-fpu macro definitions.
+
2007-02-28 Richard Sandiford <rsandifo@xxxxxxxxxxxxx>
* sysdeps/mips/dl-machine.h (elf_machine_reloc): Change type of
Modified: trunk/ports/sysdeps/m68k/dl-trampoline.S
==============================================================================
--- trunk/ports/sysdeps/m68k/dl-trampoline.S (original)
+++ trunk/ports/sysdeps/m68k/dl-trampoline.S Wed Mar 28 05:07:13 2007
@@ -138,10 +138,13 @@
+4 %a1
%sp %a0
*/
-#ifdef __mcoldfire__
+#if !defined (__mcoldfire__)
+ fmove.x %fp0, -(%sp)
+#elif defined (__mcffpu__)
fmove.l %fp0, -(%sp)
#else
- fmove.x %fp0, -(%sp)
+ clr.l -(%sp)
+ clr.l -(%sp)
#endif
move.l %a0, -(%sp)
move.l %d1, -(%sp)
@@ -161,11 +164,14 @@
move.l (%sp)+, %d0
move.l (%sp)+, %d1
move.l (%sp)+, %a0
-#ifdef __mcoldfire__
- fmove.d (%sp)+, %fp0
+#if !defined (__mcoldfire__)
+ fmove.x (%sp)+, %fp0
+ lea 20(%sp), %sp
+#elif defined (__mcffpu__)
+ fmove.l (%sp)+, %fp0
+ lea 20(%sp), %sp
#else
- fmove.x (%sp)+, %fp0
+ lea 28(%sp), %sp
#endif
- lea 20(%sp), %sp
rts
.size _dl_runtime_profile, . - _dl_runtime_profile
Modified: trunk/ports/sysdeps/m68k/fpu_control.h
==============================================================================
--- trunk/ports/sysdeps/m68k/fpu_control.h (original)
+++ trunk/ports/sysdeps/m68k/fpu_control.h Wed Mar 28 05:07:13 2007
@@ -54,6 +54,15 @@
#include <features.h>
+#if defined (__mcoldfire__) && !defined (__mcffpu__)
+
+#define _FPU_RESERVED 0xffffffff
+#define _FPU_DEFAULT 0x00000000
+#define _FPU_GETCW(cw) ((cw) = 0)
+#define _FPU_SETCW(cw) ((void)(cw))
+
+#else
+
/* masking of interrupts */
#define _FPU_MASK_BSUN 0x8000
#define _FPU_MASK_SNAN 0x4000
@@ -96,12 +105,13 @@
that __setfpucw works. This bit will be ignored. */
#define _FPU_IEEE 0x00000001
-/* Type of the control word. */
-typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));
-
/* Macros for accessing the hardware control word. */
#define _FPU_GETCW(cw) __asm__ ("fmove%.l %!, %0" : "=dm" (cw))
#define _FPU_SETCW(cw) __asm__ volatile ("fmove%.l %0, %!" : : "dm" (cw))
+#endif
+
+/* Type of the control word. */
+typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));
/* Default control word set at startup. */
extern fpu_control_t __fpu_control;