patches/gcc/3.4.6/260-arm-softfloat.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon Jul 28 21:32:33 2008 +0000 (2008-07-28)
changeset 747 d3e603e7c17c
parent 402 patches/gcc/3.4.6/910-arm-softfloat.patch@197e1b49586e
permissions -rw-r--r--
Fourth step at renaming patches: renumber all patches with a 10-step.
yann@402
     1
diff -durN gcc-3.4.6.orig/gcc/config/arm/coff.h gcc-3.4.6/gcc/config/arm/coff.h
yann@402
     2
--- gcc-3.4.6.orig/gcc/config/arm/coff.h	2004-02-24 15:25:22.000000000 +0100
yann@402
     3
+++ gcc-3.4.6/gcc/config/arm/coff.h	2007-08-15 23:10:54.000000000 +0200
yann@402
     4
@@ -31,11 +31,16 @@
yann@402
     5
 #define TARGET_VERSION fputs (" (ARM/coff)", stderr)
yann@402
     6
 
yann@402
     7
 #undef  TARGET_DEFAULT
yann@402
     8
-#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
yann@402
     9
+#define TARGET_DEFAULT		\
yann@402
    10
+	( ARM_FLAG_SOFT_FLOAT	\
yann@402
    11
+	| ARM_FLAG_VFP		\
yann@402
    12
+	| ARM_FLAG_APCS_32	\
yann@402
    13
+	| ARM_FLAG_APCS_FRAME	\
yann@402
    14
+	| ARM_FLAG_MMU_TRAPS )
yann@402
    15
 
yann@402
    16
 #ifndef MULTILIB_DEFAULTS
yann@402
    17
 #define MULTILIB_DEFAULTS \
yann@402
    18
-  { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork" }
yann@402
    19
+  { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" }
yann@402
    20
 #endif
yann@402
    21
 
yann@402
    22
 /* This is COFF, but prefer stabs.  */
yann@402
    23
diff -durN gcc-3.4.6.orig/gcc/config/arm/elf.h gcc-3.4.6/gcc/config/arm/elf.h
yann@402
    24
--- gcc-3.4.6.orig/gcc/config/arm/elf.h	2004-02-24 15:25:22.000000000 +0100
yann@402
    25
+++ gcc-3.4.6/gcc/config/arm/elf.h	2007-08-15 23:10:54.000000000 +0200
yann@402
    26
@@ -46,7 +46,9 @@
yann@402
    27
 
yann@402
    28
 #ifndef SUBTARGET_ASM_FLOAT_SPEC
yann@402
    29
 #define SUBTARGET_ASM_FLOAT_SPEC "\
yann@402
    30
-%{mapcs-float:-mfloat} %{msoft-float:-mfpu=softfpa}"
yann@402
    31
+%{mapcs-float:-mfloat} \
yann@402
    32
+%{mhard-float:-mfpu=fpa} \
yann@402
    33
+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
yann@402
    34
 #endif
yann@402
    35
 
yann@402
    36
 #ifndef ASM_SPEC
yann@402
    37
@@ -106,12 +108,17 @@
yann@402
    38
 #endif
yann@402
    39
 
yann@402
    40
 #ifndef TARGET_DEFAULT
yann@402
    41
-#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
yann@402
    42
+#define TARGET_DEFAULT		\
yann@402
    43
+	( ARM_FLAG_SOFT_FLOAT	\
yann@402
    44
+	| ARM_FLAG_VFP		\
yann@402
    45
+	| ARM_FLAG_APCS_32	\
yann@402
    46
+	| ARM_FLAG_APCS_FRAME	\
yann@402
    47
+	| ARM_FLAG_MMU_TRAPS )
yann@402
    48
 #endif
yann@402
    49
 
yann@402
    50
 #ifndef MULTILIB_DEFAULTS
yann@402
    51
 #define MULTILIB_DEFAULTS \
yann@402
    52
-  { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" }
yann@402
    53
+  { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" }
yann@402
    54
 #endif
yann@402
    55
 
yann@402
    56
 #define TARGET_ASM_FILE_START_APP_OFF true
yann@402
    57
diff -durN gcc-3.4.6.orig/gcc/config/arm/linux-elf.h gcc-3.4.6/gcc/config/arm/linux-elf.h
yann@402
    58
--- gcc-3.4.6.orig/gcc/config/arm/linux-elf.h	2007-08-15 23:07:00.000000000 +0200
yann@402
    59
+++ gcc-3.4.6/gcc/config/arm/linux-elf.h	2007-08-15 23:10:54.000000000 +0200
yann@402
    60
@@ -44,12 +44,26 @@
yann@402
    61
 #define TARGET_LINKER_EMULATION "armelf_linux"
yann@402
    62
 #endif
yann@402
    63
 
yann@402
    64
-/* Default is to use APCS-32 mode.  */
yann@402
    65
+/*
yann@402
    66
+ * Default is to use APCS-32 mode with soft-vfp.
yann@402
    67
+ * The old Linux default for floats can be achieved with -mhard-float
yann@402
    68
+ * or with the configure --with-float=hard option.
yann@402
    69
+ * If -msoft-float or --with-float=soft is used then software float 
yann@402
    70
+ * support will be used just like the default but with the legacy
yann@402
    71
+ * big endian word ordering for double float representation instead.
yann@402
    72
+ */
yann@402
    73
 #undef  TARGET_DEFAULT
yann@402
    74
-#define TARGET_DEFAULT \
yann@402
    75
-		( ARM_FLAG_APCS_32 | \
yann@402
    76
-		  ARM_FLAG_MMU_TRAPS | \
yann@402
    77
-		  TARGET_ENDIAN_DEFAULT )
yann@402
    78
+#define TARGET_DEFAULT		\
yann@402
    79
+	( ARM_FLAG_APCS_32	\
yann@402
    80
+	| ARM_FLAG_SOFT_FLOAT	\
yann@402
    81
+	| TARGET_ENDIAN_DEFAULT	\
yann@402
    82
+	| ARM_FLAG_VFP		\
yann@402
    83
+	| ARM_FLAG_MMU_TRAPS )
yann@402
    84
+
yann@402
    85
+#undef  SUBTARGET_EXTRA_ASM_SPEC
yann@402
    86
+#define SUBTARGET_EXTRA_ASM_SPEC "\
yann@402
    87
+%{mhard-float:-mfpu=fpa} \
yann@402
    88
+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
yann@402
    89
 
yann@402
    90
 #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
yann@402
    91
 
yann@402
    92
@@ -57,7 +71,7 @@
yann@402
    93
 
yann@402
    94
 #undef  MULTILIB_DEFAULTS
yann@402
    95
 #define MULTILIB_DEFAULTS \
yann@402
    96
-	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" }
yann@402
    97
+	{ "marm", TARGET_ENDIAN_OPTION, "mapcs-32", "mno-thumb-interwork" }
yann@402
    98
 
yann@402
    99
 #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
yann@402
   100
 
yann@402
   101
@@ -72,7 +86,7 @@
yann@402
   102
    %{shared:-lc} \
yann@402
   103
    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
yann@402
   104
 
yann@402
   105
-#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc"
yann@402
   106
+#define LIBGCC_SPEC "-lgcc"
yann@402
   107
 
yann@402
   108
 /* Provide a STARTFILE_SPEC appropriate for GNU/Linux.  Here we add
yann@402
   109
    the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
yann@402
   110
diff -durN gcc-3.4.6.orig/gcc/config/arm/t-linux gcc-3.4.6/gcc/config/arm/t-linux
yann@402
   111
--- gcc-3.4.6.orig/gcc/config/arm/t-linux	2003-09-20 23:09:07.000000000 +0200
yann@402
   112
+++ gcc-3.4.6/gcc/config/arm/t-linux	2007-08-15 23:10:54.000000000 +0200
yann@402
   113
@@ -4,7 +4,10 @@
yann@402
   114
 LIBGCC2_DEBUG_CFLAGS = -g0
yann@402
   115
 
yann@402
   116
 LIB1ASMSRC = arm/lib1funcs.asm
yann@402
   117
-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
yann@402
   118
+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
yann@402
   119
+	_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
yann@402
   120
+	_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
yann@402
   121
+	_fixsfsi _fixunssfsi
yann@402
   122
 
yann@402
   123
 # MULTILIB_OPTIONS = mhard-float/msoft-float
yann@402
   124
 # MULTILIB_DIRNAMES = hard-float soft-float
yann@402
   125
diff -durN gcc-3.4.6.orig/gcc/config/arm/unknown-elf.h gcc-3.4.6/gcc/config/arm/unknown-elf.h
yann@402
   126
--- gcc-3.4.6.orig/gcc/config/arm/unknown-elf.h	2004-02-24 15:25:22.000000000 +0100
yann@402
   127
+++ gcc-3.4.6/gcc/config/arm/unknown-elf.h	2007-08-15 23:10:54.000000000 +0200
yann@402
   128
@@ -30,7 +30,12 @@
yann@402
   129
 
yann@402
   130
 /* Default to using APCS-32 and software floating point.  */
yann@402
   131
 #ifndef TARGET_DEFAULT
yann@402
   132
-#define TARGET_DEFAULT	(ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
yann@402
   133
+#define TARGET_DEFAULT		\
yann@402
   134
+	( ARM_FLAG_SOFT_FLOAT	\
yann@402
   135
+	| ARM_FLAG_VFP		\
yann@402
   136
+	| ARM_FLAG_APCS_32	\
yann@402
   137
+	| ARM_FLAG_APCS_FRAME	\
yann@402
   138
+	| ARM_FLAG_MMU_TRAPS )
yann@402
   139
 #endif
yann@402
   140
 
yann@402
   141
 /* Now we define the strings used to build the spec file.  */
yann@402
   142
diff -durN gcc-3.4.6.orig/gcc/config/arm/xscale-elf.h gcc-3.4.6/gcc/config/arm/xscale-elf.h
yann@402
   143
--- gcc-3.4.6.orig/gcc/config/arm/xscale-elf.h	2003-07-02 01:26:43.000000000 +0200
yann@402
   144
+++ gcc-3.4.6/gcc/config/arm/xscale-elf.h	2007-08-15 23:10:54.000000000 +0200
yann@402
   145
@@ -49,11 +49,12 @@
yann@402
   146
 		     endian, regardless of the endian-ness of the memory
yann@402
   147
 		     system.  */
yann@402
   148
 		     
yann@402
   149
-#define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
yann@402
   150
-  %{mhard-float:-mfpu=fpa} \
yann@402
   151
-  %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
yann@402
   152
+#define SUBTARGET_EXTRA_ASM_SPEC "\
yann@402
   153
+%{!mcpu=*:-mcpu=xscale} \
yann@402
   154
+%{mhard-float:-mfpu=fpa} \
yann@402
   155
+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
yann@402
   156
 
yann@402
   157
 #ifndef MULTILIB_DEFAULTS
yann@402
   158
 #define MULTILIB_DEFAULTS \
yann@402
   159
-  { "mlittle-endian", "mno-thumb-interwork", "marm", "msoft-float" }
yann@402
   160
+  { "mlittle-endian", "mno-thumb-interwork", "marm" }
yann@402
   161
 #endif