[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



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;