]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Fix the ARM assembler to generate a Realtime profile for armv8-r.
authorAlexander Fedotov <alfedotov@gmail.com>
Wed, 20 May 2020 10:46:54 +0000 (11:46 +0100)
committerNick Clifton <nickc@redhat.com>
Wed, 20 May 2020 10:46:54 +0000 (11:46 +0100)
            PR 25992
    gas     * config/tc-arm.c : Add arm_ext_v8r feature.
            (it_fsm_post_encode): Check arm_ext_v8r feature.
            (get_aeabi_cpu_arch_from_fset): Check arm_ext_v8r feature.

    include * opcode/arm.h (ARM_EXT2_V8R): Define. Modified ARM_AEXT2_V8R.

gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/gas/arm/attr-march-armv8-r+crypto.d
gas/testsuite/gas/arm/attr-march-armv8-r+fp.d
gas/testsuite/gas/arm/attr-march-armv8-r+simd.d
gas/testsuite/gas/arm/attr-march-armv8-r.d
include/ChangeLog
include/opcode/arm.h

index 0ee90564723d65fa36760e39b95adb9d62ec1161..13ff6add655749d5a55186802f79a7381d21c016 100644 (file)
@@ -1,3 +1,10 @@
+2020-05-18  Alexander Fedotov <alfedotov@gmail.com>
+
+       PR 25992
+       * config/tc-arm.c : Add arm_ext_v8r feature.
+       (it_fsm_post_encode): Check arm_ext_v8r feature.
+       (get_aeabi_cpu_arch_from_fset): Check arm_ext_v8r feature.
+
 2020-05-18  Alan Modra  <amodra@gmail.com>
 
        * symbols.c (resolve_symbol_value): Invoke LOCAL_SYMBOL_CHECK
index 7550f9096ca2c23f64760c905db0f4e6e8b33d45..b6bb0debbe34dbc77af61e55d6b424427afabac2 100644 (file)
@@ -230,6 +230,7 @@ static const arm_feature_set arm_ext_div = ARM_FEATURE_CORE_LOW (ARM_EXT_DIV);
 static const arm_feature_set arm_ext_v7 = ARM_FEATURE_CORE_LOW (ARM_EXT_V7);
 static const arm_feature_set arm_ext_v7a = ARM_FEATURE_CORE_LOW (ARM_EXT_V7A);
 static const arm_feature_set arm_ext_v7r = ARM_FEATURE_CORE_LOW (ARM_EXT_V7R);
+static const arm_feature_set arm_ext_v8r = ARM_FEATURE_CORE_HIGH (ARM_EXT2_V8R);
 #ifdef OBJ_ELF
 static const arm_feature_set ATTRIBUTE_UNUSED arm_ext_v7m = ARM_FEATURE_CORE_LOW (ARM_EXT_V7M);
 #endif
@@ -22800,7 +22801,8 @@ it_fsm_post_encode (void)
       && warn_on_restrict_it
       && !now_pred.warn_deprecated
       && warn_on_deprecated
-      && ARM_CPU_HAS_FEATURE (cpu_variant, arm_ext_v8)
+      && (ARM_CPU_HAS_FEATURE (cpu_variant, arm_ext_v8)
+          || ARM_CPU_HAS_FEATURE (cpu_variant, arm_ext_v8r))
       && !ARM_CPU_HAS_FEATURE (cpu_variant, arm_ext_m))
     {
       if (inst.instruction >= 0x10000)
@@ -32335,12 +32337,14 @@ get_aeabi_cpu_arch_from_fset (const arm_feature_set *arch_ext_fset,
 
 found:
   /* Tag_CPU_arch_profile.  */
-  if (ARM_CPU_HAS_FEATURE (p_ver_ret->flags, arm_ext_v7a)
-      || ARM_CPU_HAS_FEATURE (p_ver_ret->flags, arm_ext_v8)
-      || (ARM_CPU_HAS_FEATURE (p_ver_ret->flags, arm_ext_atomics)
-         && !ARM_CPU_HAS_FEATURE (p_ver_ret->flags, arm_ext_v8m_m_only)))
+  if (!ARM_CPU_HAS_FEATURE (p_ver_ret->flags, arm_ext_v8r)
+      && (ARM_CPU_HAS_FEATURE (p_ver_ret->flags, arm_ext_v7a)
+          || ARM_CPU_HAS_FEATURE (p_ver_ret->flags, arm_ext_v8)
+          || (ARM_CPU_HAS_FEATURE (p_ver_ret->flags, arm_ext_atomics)
+              && !ARM_CPU_HAS_FEATURE (p_ver_ret->flags, arm_ext_v8m_m_only))))
     *profile = 'A';
-  else if (ARM_CPU_HAS_FEATURE (p_ver_ret->flags, arm_ext_v7r))
+  else if (ARM_CPU_HAS_FEATURE (p_ver_ret->flags, arm_ext_v7r)
+      || ARM_CPU_HAS_FEATURE (p_ver_ret->flags, arm_ext_v8r))
     *profile = 'R';
   else if (ARM_CPU_HAS_FEATURE (p_ver_ret->flags, arm_ext_m))
     *profile = 'M';
index e2d83a0dbe9ec11a125a90c8f93d0f3e81fefd61..5bd0fc5f3714349b68e60cc8289dcbb0898b9574 100644 (file)
@@ -9,7 +9,7 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "8-R"
   Tag_CPU_arch: v8-R
-  Tag_CPU_arch_profile: Application
+  Tag_CPU_arch_profile: Realtime
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
   Tag_FP_arch: FP for ARMv8
index e7a8446f9d2410d25d0f2d274f8b4a6cc8c8355b..afd5a756d028e529942bde68c81e8ab1387817b9 100644 (file)
@@ -9,7 +9,7 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "8-R"
   Tag_CPU_arch: v8-R
-  Tag_CPU_arch_profile: Application
+  Tag_CPU_arch_profile: Realtime
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
   Tag_FP_arch: FP for ARMv8
index e09091cb220676c83a07b980b29474f411a686cf..8c8578a78f16fd9308ad71b327d26f03c914500a 100644 (file)
@@ -9,7 +9,7 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "8-R"
   Tag_CPU_arch: v8-R
-  Tag_CPU_arch_profile: Application
+  Tag_CPU_arch_profile: Realtime
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
   Tag_FP_arch: FP for ARMv8
index 820f32beeaf2ba576655467f452285fbd4fb21c2..cf4b3a51f808048746bf3ab2f701f66a0f5113e0 100644 (file)
@@ -9,7 +9,7 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "8-R"
   Tag_CPU_arch: v8-R
-  Tag_CPU_arch_profile: Application
+  Tag_CPU_arch_profile: Realtime
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
   Tag_MPextension_use: Allowed
index 2cf472a5df694937e81268fd6cf95f8b76986986..7cdf7ec41caf642cb8da9fd8f8d5e08eb3edccd2 100644 (file)
@@ -1,3 +1,8 @@
+2020-05-20  Alexander Fedotov  <alfedotov@gmail.com>
+
+       PR 25992
+       * opcode/arm.h (ARM_EXT2_V8R): Define. Modified ARM_AEXT2_V8R.
+
 2020-04-01  Martin Liska  <mliska@suse.cz>
            Maciej W. Rozycki <macro@linux-mips.org>
 
index 6d8c3d00861f2430d2c8478c71f165dc4e625665..ca46985d619d55a715ccdbb64fae23932a30f54a 100644 (file)
 #define ARM_EXT2_V8_6A      0x00010000 /* ARM V8.6A.                        */
 #define ARM_EXT2_BF16       0x00020000 /* ARMv8 bfloat16.                   */
 #define ARM_EXT2_I8MM       0x00040000 /* ARMv8.6A i8mm.                    */
-#define ARM_EXT2_CRC        0x00080000 /* ARMv8 CRC32 */
-#define ARM_EXT2_MVE        0x00100000 /* MVE Integer extension.          */
-#define ARM_EXT2_MVE_FP             0x00200000 /* MVE Floating Point extension.   */
+#define ARM_EXT2_CRC        0x00080000 /* ARMv8 CRC32.                      */
+#define ARM_EXT2_MVE        0x00100000 /* MVE Integer extension.            */
+#define ARM_EXT2_MVE_FP             0x00200000 /* MVE Floating Point extension.     */
+#define ARM_EXT2_V8R        0x80000000 /* ARM V8-R.                         */
 
 /* Co-processor space extensions.  */
 #define ARM_CEXT_XSCALE             0x00000001 /* Allow MIA etc.                  */
 #define ARM_AEXT2_V8M_MAIN     (ARM_AEXT2_V8M_BASE | ARM_EXT2_V8M_MAIN)
 #define ARM_AEXT2_V8M_MAIN_DSP  ARM_AEXT2_V8M_MAIN
 #define ARM_AEXT_V8R            ARM_AEXT_V8A
-#define ARM_AEXT2_V8R           ARM_AEXT2_V8AR
+#define ARM_AEXT2_V8R           (ARM_EXT2_V8R | ARM_AEXT2_V8AR)
 #define ARM_AEXT_V8_1M_MAIN     ARM_AEXT_V8M_MAIN
 #define ARM_AEXT2_V8_1M_MAIN   (ARM_AEXT2_V8M_MAIN | ARM_EXT2_V8_1M_MAIN     \
                                                    | ARM_EXT2_FP16_INST)