aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorJulian Brown <julian@codesourcery.com>2011-08-01 12:41:30 +0000
committerJulian Brown <jules@gcc.gnu.org>2011-08-01 12:41:30 +0000
commit655b30bfde9172bd40189a787b85b16e461ef1ef (patch)
tree42de6b523b06d8fd9304883974cdc19b9dcf95b2 /libgcc
parent3d6c3bd710cae34a0a4e7e69061f42fe19c442cb (diff)
downloadgcc-655b30bfde9172bd40189a787b85b16e461ef1ef.zip
gcc-655b30bfde9172bd40189a787b85b16e461ef1ef.tar.gz
gcc-655b30bfde9172bd40189a787b85b16e461ef1ef.tar.bz2
configure.ac (fixed-point): Add ARM support.
gcc/ * configure.ac (fixed-point): Add ARM support. * configure: Regenerate. * config/arm/arm.c (arm_fixed_mode_set): New struct. (arm_set_fixed_optab_libfunc): New. (arm_set_fixed_conv_libfunc): New. (arm_init_libfuncs): Initialise fixed-point helper libfuncs with ARM-specific names. (aapcs_libcall_value): Return sub-word-size fixed-point libcall return values in SImode. (arm_return_in_msb): Return fixed-point types in the msb. (arm_pad_reg_upwards, arm_pad_arg_upwards): Pad fixed-point types upwards. (arm_scalar_mode_supported_p): Support fixed-point modes. (arm_vector_mode_supported_p): Support vector fixed-point modes. * config/arm/arm.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE) (LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE) (SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE) (LONG_LONG_ACCUM_TYPE_SIZE, MAX_FIXED_MODE_SIZE): Define. * config/arm/iterators.md (FIXED, ADDSUB, UQADDSUB, QADDSUB, QMUL): New mode iterators. (qaddsub_suf): New mode attribute. * config/arm/arm-modes.def (FRACT, UFRACT, ACCUM, UACCUM): Declare vector modes. * config/arm/predicates.md (sat_shift_operator): New predicate. * config/arm/arm-fixed.md: New. * config/arm/arm.md: Include arm-fixed.md. * config/arm/t-arm (MD_INCLUDES): Add arm-fixed.md. libgcc/ * config.host (arm*-*-linux*, arm*-*-uclinux*, arm*-*-eabi*) (arm*-*-symbianelf*): Add t-fixedpoint-gnu-prefix makefile fragment. * config/arm/bpabi-lib.h (LIBGCC2_FIXEDBIT_GNU_PREFIX): Define. gcc/testsuite/ * gcc.target/arm/fixed-point-exec.c: New test. From-SVN: r177025
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog6
-rw-r--r--libgcc/config.host3
-rw-r--r--libgcc/config/arm/bpabi-lib.h5
3 files changed, 14 insertions, 0 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 70118f8..9108e46 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,5 +1,11 @@
2011-08-01 Julian Brown <julian@codesourcery.com>
+ * config.host (arm*-*-linux*, arm*-*-uclinux*, arm*-*-eabi*)
+ (arm*-*-symbianelf*): Add t-fixedpoint-gnu-prefix makefile fragment.
+ * config/arm/bpabi-lib.h (LIBGCC2_FIXEDBIT_GNU_PREFIX): Define.
+
+2011-08-01 Julian Brown <julian@codesourcery.com>
+
* Makefile.in (LIBGCC_VER_FIXEDPOINT_GNU_PREFIX): New.
(libgcc-std.ver.in): Use above.
* fixed-bit.h (LIBGCC2_FIXEDBIT_GNU_PREFIX): Define, if
diff --git a/libgcc/config.host b/libgcc/config.host
index 11760d0..f7c1b3b 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -264,12 +264,15 @@ arm*-*-freebsd*)
arm*-*-netbsdelf*)
;;
arm*-*-linux*) # ARM GNU/Linux with ELF
+ tmake_file="${tmake_file} t-fixedpoint-gnu-prefix"
;;
arm*-*-uclinux*) # ARM ucLinux
+ tmake_file="${tmake_file} t-fixedpoint-gnu-prefix"
;;
arm*-*-ecos-elf)
;;
arm*-*-eabi* | arm*-*-symbianelf* )
+ tmake_file="${tmake_file} t-fixedpoint-gnu-prefix"
;;
arm*-*-rtems*)
;;
diff --git a/libgcc/config/arm/bpabi-lib.h b/libgcc/config/arm/bpabi-lib.h
index 49a28c3..cfa09cf 100644
--- a/libgcc/config/arm/bpabi-lib.h
+++ b/libgcc/config/arm/bpabi-lib.h
@@ -78,3 +78,8 @@
#ifdef L_floatundisf
#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatundisf, ul2f)
#endif
+
+/* For ARM bpabi, we only want to use a "__gnu_" prefix for the fixed-point
+ helper functions - not everything in libgcc - in the interests of
+ maintaining backward compatibility. */
+#define LIBGCC2_FIXEDBIT_GNU_PREFIX