]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[ARM] Support for ARMv8.1 command line option
authorMatthew Wahab <matthew.wahab@arm.com>
Wed, 3 Jun 2015 09:03:50 +0000 (10:03 +0100)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 24 Aug 2017 12:30:01 +0000 (09:30 -0300)
2015-06-03  Matthew Wahab  <matthew.wahab@arm.com>

gas/
* config/tc-arm.c (arm_archs): Add "armv8.1-a".
* doc/c-arm.texi (ARM Options, -march): Add "armv8.1-a".
* NEWS: Mention ARMv8.1 support.

include/opcode/
* arm.h (FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_1): New.
(ARM_ARCH_V8_1A): New.
(ARM_ARCH_V8_1A_FP): New.
(ARM_ARCH_V8_1A_SIMD): New.
(ARM_ARCH_V8_1A_CRYPTOV1): New.
(ARM_FEATURE_CORE): New.

Change-Id: Iaa670f1c06dd40af79eba182663daf794d63edb5

gas/ChangeLog
gas/NEWS
gas/config/tc-arm.c
gas/doc/c-arm.texi
include/opcode/ChangeLog
include/opcode/arm.h
ld/testsuite/ld-aarch64/emit-relocs-28.d [new file with mode: 0644]

index e7e86c82ec4e2f1d57d401f90d1173c81b95f31e..03f02e8c755f8d5df2da2b777924a524210a1175 100644 (file)
@@ -1,19 +1,8 @@
-2015-03-24  Terry Guo  <terry.guo@arm.com>
-
-       * config/tc-arm.c (no_cpu_selected): Use new macro to compare
-       features.
-       (parse_psr): Likewise.
-       (do_t_mrs): Likewise.
-       (do_t_msr): Likewise.
-       (static const arm_feature_set arm_ext_*): Defined with new macros.
-       (static const arm_feature_set arm_cext_*): Likewise.
-       (static const arm_feature_set fpu_fpa_ext_*): Likewise.
-       (static const arm_feature_set fpu_vfp_ext_*): Likewise.
-       (deprecated_coproc_regs): Likewise.
-       (UL_BARRIER): Likewise.
-       (barrier_opt_names): Likewise.
-       (arm_cpus): Likewise.
-       (arm_extensions): Likewise.
+2015-06-03  Matthew Wahab  <matthew.wahab@arm.com>
+
+       * config/tc-arm.c (arm_archs): Add "armv8.1-a".
+       * doc/c-arm.texi (ARM Options, -march): Add "armv8.1-a".
+       * NEWS: Mention ARMv8.1 support.
 
 2015-06-02  Matthew Wahab  <matthew.wahab@arm.com>
 
index 8a757c5f4aa5637e7254616776c86ad8f38801d9..099dfb53b6b070357b759821484e7b3cea751ddc 100644 (file)
--- a/gas/NEWS
+++ b/gas/NEWS
@@ -2,6 +2,10 @@
 
 Changes in 2.25:
 
+* Support for the ARMv8.1 architecture has been added to the ARM port.  Support
+  for the individual ARMv8.1 Adv.SIMD and PAN architecture extensions has also
+  been added to the ARM port.
+
 * Add support for the AVR Tiny microcontrollers.
 
 * Replace support for openrisc and or32 with support for or1k.
index 60526b8302774814d83b1093d92071d10babcb35..ea89e9153f1ab4821753f9617742389dd1614ec4 100644 (file)
@@ -24533,6 +24533,7 @@ static const struct arm_arch_option_table arm_archs[] =
   ARM_ARCH_OPT ("armv7-m",     ARM_ARCH_V7M,    FPU_ARCH_VFP),
   ARM_ARCH_OPT ("armv7e-m",    ARM_ARCH_V7EM,   FPU_ARCH_VFP),
   ARM_ARCH_OPT ("armv8-a",     ARM_ARCH_V8A,    FPU_ARCH_VFP),
+  ARM_ARCH_OPT ("armv8.1-a",   ARM_ARCH_V8_1A,  FPU_ARCH_VFP),
   ARM_ARCH_OPT ("xscale",      ARM_ARCH_XSCALE, FPU_ARCH_VFP),
   ARM_ARCH_OPT ("iwmmxt",      ARM_ARCH_IWMMXT, FPU_ARCH_VFP),
   ARM_ARCH_OPT ("iwmmxt2",     ARM_ARCH_IWMMXT2,FPU_ARCH_VFP),
index 1411c5c283a2674339b7acb2949ba92d39f1c952..c2e1ab196de08a2a774b5c52b5d1bad4c0c668ae 100644 (file)
@@ -208,6 +208,7 @@ names are recognized:
 @code{armv7-m},
 @code{armv7e-m},
 @code{armv8-a},
+@code{armv8.1-a},
 @code{iwmmxt}
 and
 @code{xscale}.
index fc4593a65090476e76ad4dd80bfc757c889a6ecb..39c6971f4a7605dad60984facb7ad731bd1a0845 100644 (file)
@@ -1,3 +1,12 @@
+2015-06-03  Matthew Wahab  <matthew.wahab@arm.com>
+
+       * arm.h (FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_1): New.
+       (ARM_ARCH_V8_1A): New.
+       (ARM_ARCH_V8_1A_FP): New.
+       (ARM_ARCH_V8_1A_SIMD): New.
+       (ARM_ARCH_V8_1A_CRYPTOV1): New.
+       (ARM_FEATURE_CORE): New.
+
 2015-03-24  Terry Guo  <terry.guo@arm.com>
 
        * arm.h (arm_feature_set): Extended to provide more available bits.
index 98b2fdc3322bd4efec9d971ca620aaf51d708200..98dafbcab1e881f6e39b65fb775cc198684fe209 100644 (file)
   ARM_FEATURE_COPROC (FPU_NEON_ARMV8                            \
                      | FPU_VFP_ARMV8                            \
                      | FPU_NEON_EXT_RDMA)
+#define FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_1 \
+  ARM_FEATURE_COPROC (FPU_CRYPTO_ARMV8 | FPU_NEON_ARMV8 | FPU_VFP_ARMV8 \
+                     | FPU_NEON_EXT_RDMA)
 
 
 #define FPU_ARCH_ENDIAN_PURE ARM_FEATURE_COPROC (FPU_ENDIAN_PURE)
 #define ARM_ARCH_V7M   ARM_FEATURE_CORE_LOW (ARM_AEXT_V7M)
 #define ARM_ARCH_V7EM  ARM_FEATURE_CORE_LOW (ARM_AEXT_V7EM)
 #define ARM_ARCH_V8A   ARM_FEATURE_CORE_LOW (ARM_AEXT_V8A)
+#define ARM_ARCH_V8_1A ARM_FEATURE_CORE (ARM_AEXT_V8A, ARM_EXT2_PAN)
 
 /* Some useful combinations:  */
 #define ARM_ARCH_NONE  ARM_FEATURE_LOW (0, 0)
 #define ARM_ARCH_V8A_CRYPTOV1  ARM_FEATURE_LOW (ARM_AEXT_V8A, \
                                             FPU_ARCH_CRYPTO_NEON_VFP_ARMV8)
 
+/* v8.1-a+fp.  */
+#define ARM_ARCH_V8_1A_FP      ARM_FEATURE (ARM_AEXT_V8A, ARM_EXT2_PAN, \
+                                    FPU_ARCH_VFP_ARMV8)
+/* v8.1-a+simd (implies fp).  */
+#define ARM_ARCH_V8_1A_SIMD    ARM_FEATURE (ARM_AEXT_V8A, ARM_EXT2_PAN, \
+                                    FPU_ARCH_NEON_VFP_ARMV8_1)
+/* v8.1-a+crypto (implies simd+fp).  */
+#define ARM_ARCH_V8_1A_CRYPTOV1   ARM_FEATURE (ARM_AEXT_V8A, ARM_EXT2_PAN, \
+                                              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_1)
+
+
 /* There are too many feature bits to fit in a single word, so use a
    structure.  For simplicity we put all core features in array CORE
    and everything else in the other.  All the bits in element core[0]
@@ -326,6 +341,7 @@ typedef struct
   ((T1).core[0] == (T2).core[0] && (T1).core[1] == (T2).core[1])
 
 #define ARM_FEATURE_LOW(core, coproc) {{(core), 0}, (coproc)}
+#define ARM_FEATURE_CORE(core1, core2) {{(core1), (core2)}, 0}
 #define ARM_FEATURE_CORE_LOW(core) {{(core), 0}, 0}
 #define ARM_FEATURE_CORE_HIGH(core) {{0, (core)}, 0}
 #define ARM_FEATURE_COPROC(coproc) {{0, 0}, (coproc)}
diff --git a/ld/testsuite/ld-aarch64/emit-relocs-28.d b/ld/testsuite/ld-aarch64/emit-relocs-28.d
new file mode 100644 (file)
index 0000000..bc8f7d5
--- /dev/null
@@ -0,0 +1,19 @@
+#source: emit-relocs-28.s
+#as: -mabi=ilp32
+#ld: -T relocs-ilp32.ld --defsym globala=0x11000 --defsym globalb=0x45000 --defsym globalc=0x1234  -e0 --emit-relocs
+#objdump: -dr
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+00400074 <\.text>:
+  400074:      90000082        adrp    x2, 410000 <globalb\+0x3cb000>
+                       400074: R_AARCH64_P32_ADR_PREL_PG_HI21  _GLOBAL_OFFSET_TABLE_
+  400078:      f9408c40        ldr     x0, \[x2,#280\]
+                       400078: R_AARCH64_P32_LD32_GOTPAGE_LO14 globala
+  40007c:      f9409040        ldr     x0, \[x2,#288\]
+                       40007c: R_AARCH64_P32_LD32_GOTPAGE_LO14 globalb
+  400080:      f9408840        ldr     x0, \[x2,#272\]
+                       400080: R_AARCH64_P32_LD32_GOTPAGE_LO14 globalc