From: Matthew Wahab Date: Wed, 3 Jun 2015 09:03:50 +0000 (+0100) Subject: [ARM] Support for ARMv8.1 command line option X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cc842d751a5aa4e3ad2da54ca73929c72fec6f74;p=thirdparty%2Fbinutils-gdb.git [ARM] Support for ARMv8.1 command line option 2015-06-03 Matthew Wahab 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 --- diff --git a/gas/ChangeLog b/gas/ChangeLog index e7e86c82ec4..03f02e8c755 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,19 +1,8 @@ -2015-03-24 Terry Guo - - * 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 + + * 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 diff --git a/gas/NEWS b/gas/NEWS index 8a757c5f4aa..099dfb53b6b 100644 --- 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. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 60526b83027..ea89e9153f1 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -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), diff --git a/gas/doc/c-arm.texi b/gas/doc/c-arm.texi index 1411c5c283a..c2e1ab196de 100644 --- a/gas/doc/c-arm.texi +++ b/gas/doc/c-arm.texi @@ -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}. diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog index fc4593a6509..39c6971f4a7 100644 --- a/include/opcode/ChangeLog +++ b/include/opcode/ChangeLog @@ -1,3 +1,12 @@ +2015-06-03 Matthew Wahab + + * 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 * arm.h (arm_feature_set): Extended to provide more available bits. diff --git a/include/opcode/arm.h b/include/opcode/arm.h index 98b2fdc3322..98dafbcab1e 100644 --- a/include/opcode/arm.h +++ b/include/opcode/arm.h @@ -206,6 +206,9 @@ 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) @@ -245,6 +248,7 @@ #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) @@ -273,6 +277,17 @@ #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 index 00000000000..bc8f7d50c86 --- /dev/null +++ b/ld/testsuite/ld-aarch64/emit-relocs-28.d @@ -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 + 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