* sh.h (EF_SH4A, EF_SH4AL_DSP, EF_SH4_NOFPU, EF_SH4A_NOFPU): New.
authorCorinna Vinschen <corinna@vinschen.de>
Thu, 23 Oct 2003 09:43:20 +0000 (09:43 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Thu, 23 Oct 2003 09:43:20 +0000 (09:43 +0000)
(EF_SH_MERGE_MACH): Combine them.

include/elf/ChangeLog
include/elf/sh.h

index dbf3297..724ac71 100644 (file)
@@ -1,3 +1,9 @@
+2003-10-22  Alexandre Oliva  <aoliva@redhat.com>,
+           Michael Snyder  <msnyder@redhat.com>
+
+       * sh.h (EF_SH4A, EF_SH4AL_DSP, EF_SH4_NOFPU, EF_SH4A_NOFPU): New.
+       (EF_SH_MERGE_MACH): Combine them.
+
 2003-10-18  Hans-Peter Nilsson  <hp@bitrange.com>
 
        * mmix.h (R_MMIX_PUSHJ_STUBBABLE): New reloc number.
index 4286235..15d460d 100644 (file)
 #define EF_SH1            1
 #define EF_SH2            2
 #define EF_SH3            3
-#define EF_SH_HAS_DSP(flags) ((flags) & 4)
+#define EF_SH_HAS_DSP(flags) (((flags) & EF_SH_MACH_MASK & ~3) == 4)
 #define EF_SH_DSP         4
 #define EF_SH3_DSP        5
+#define EF_SH4AL_DSP      6
 #define EF_SH_HAS_FP(flags) ((flags) & 8)
 #define EF_SH3E                   8
 #define EF_SH4            9
 #define EF_SH2E            11
+#define EF_SH4A                   12
+
+#define EF_SH4_NOFPU      0x10
+#define EF_SH4A_NOFPU     0x11
 
 /* This one can only mix in objects from other EF_SH5 objects.  */
 #define EF_SH5           10
    : (((mach1) == EF_SH3E && (mach2) == EF_SH_UNKNOWN) \
       || ((mach2) == EF_SH3E && (mach1) == EF_SH_UNKNOWN)) \
    ? EF_SH4 \
+   /* ??? SH4?  Why not SH3E?  */ \
+   : ((((mach1) == EF_SH4_NOFPU || (mach1) == EF_SH4A_NOFPU) \
+       && EF_SH_HAS_DSP (mach2)) \
+      || (((mach2) == EF_SH4_NOFPU || (mach2) == EF_SH4A_NOFPU) \
+         && EF_SH_HAS_DSP (mach1))) \
+   ? EF_SH4AL_DSP \
+   : ((mach1) == EF_SH4_NOFPU && EF_SH_HAS_FP (mach2)) \
+   ? ((mach2) < EF_SH4A) ? EF_SH4 : (mach2) \
+   : ((mach2) == EF_SH4_NOFPU && EF_SH_HAS_FP (mach1)) \
+   ? ((mach1) < EF_SH4A) ? EF_SH4 : (mach1) \
+   : ((mach1) == EF_SH4A_NOFPU && EF_SH_HAS_FP (mach2)) \
+   ? ((mach2) <= EF_SH4A) ? EF_SH4A : (mach2) \
+   : ((mach2) == EF_SH4A_NOFPU && EF_SH_HAS_FP (mach1)) \
+   ? ((mach1) <= EF_SH4A) ? EF_SH4A : (mach1) \
    : (((mach1) == EF_SH2E ? 7 : (mach1)) > ((mach2) == EF_SH2E ? 7 : (mach2)) \
       ? (mach1) : (mach2)))