summaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorthorpej <thorpej@138bc75d-0d04-0410-961f-82ee72b054a4>2002-09-05 16:54:57 +0000
committerthorpej <thorpej@138bc75d-0d04-0410-961f-82ee72b054a4>2002-09-05 16:54:57 +0000
commitbdcf2d689cb798cfc98351a788d603ac57236ba6 (patch)
tree1c364d52abcdcf105b4d9bc2b732f8c628cfa8c4 /gcc/config
parenta8b5ae7d68162b55056c3077e690e23a03452f8a (diff)
downloadgcc-bdcf2d689cb798cfc98351a788d603ac57236ba6.tar.gz
* real.c: Avoid parse error if FLOAT_WORDS_BIG_ENDIAN is
not a compile-time constant for the non-IBM case. * config/arm/arm-protos.h (arm_float_words_big_endian): New prototype. * config/arm/arm.c (arm_float_words_big_endian): New function. * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __VFP_FP__ if TARGET_VFP and not TARGET_HARD_FLOAT. (ARM_FLAG_VFP, TARGET_VFP): Define. (FLOAT_WORDS_BIG_ENDIAN): Use arm_float_words_big_endian. [ Missed arm.h in previous checkin, and pasto'd ChangeLog entry, which is now corrected. ] git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@56857 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/arm/arm.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index 8ab82671636..58654729884 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -58,6 +58,11 @@ Boston, MA 02111-1307, USA. */
if (TARGET_SOFT_FLOAT) \
builtin_define ("__SOFTFP__"); \
\
+ /* FIXME: TARGET_HARD_FLOAT currently implies \
+ FPA. */ \
+ if (TARGET_VFP && !TARGET_HARD_FLOAT) \
+ builtin_define ("__VFP_FP__"); \
+ \
/* Add a define for interworking. \
Needed when building libgcc.a. */ \
if (TARGET_INTERWORK) \
@@ -365,6 +370,9 @@ Unrecognized value in TARGET_CPU_DEFAULT.
destination is non-Thumb aware. */
#define THUMB_FLAG_CALLER_SUPER_INTERWORKING (1 << 20)
+/* Nonzero means target uses VFP FP. */
+#define ARM_FLAG_VFP (1 << 21)
+
#define TARGET_APCS_FRAME (target_flags & ARM_FLAG_APCS_FRAME)
#define TARGET_POKE_FUNCTION_NAME (target_flags & ARM_FLAG_POKE)
#define TARGET_FPE (target_flags & ARM_FLAG_FPE)
@@ -375,6 +383,7 @@ Unrecognized value in TARGET_CPU_DEFAULT.
#define TARGET_MMU_TRAPS (target_flags & ARM_FLAG_MMU_TRAPS)
#define TARGET_SOFT_FLOAT (target_flags & ARM_FLAG_SOFT_FLOAT)
#define TARGET_HARD_FLOAT (! TARGET_SOFT_FLOAT)
+#define TARGET_VFP (target_flags & ARM_FLAG_VFP)
#define TARGET_BIG_END (target_flags & ARM_FLAG_BIG_END)
#define TARGET_INTERWORK (target_flags & ARM_FLAG_INTERWORK)
#define TARGET_LITTLE_WORDS (target_flags & ARM_FLAG_LITTLE_WORDS)
@@ -666,8 +675,9 @@ extern int arm_is_6_or_7;
#endif
/* Define this if most significant word of doubles is the lowest numbered.
- This is always true, even when in little-endian mode. */
-#define FLOAT_WORDS_BIG_ENDIAN 1
+ The rules are different based on whether or not we use FPA-format or
+ VFP-format doubles. */
+#define FLOAT_WORDS_BIG_ENDIAN (arm_float_words_big_endian ())
#define UNITS_PER_WORD 4