2016-03-29 Thomas Preud'homme <thomas.preudhomme@arm.com>
- (elf32_arm_merge_eabi_attributes): Add merging logic for
+ * elf32-arm.c (elf32_arm_merge_eabi_attributes): Add merging logic for
Tag_DSP_extension.
2016-03-29 Thomas Preud'homme <thomas.preudhomme@arm.com>
Revert
2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
- (elf32_arm_merge_eabi_attributes): Add merging logic for
+ * elf32-arm.c (elf32_arm_merge_eabi_attributes): Add merging logic for
Tag_DSP_extension.
+2016-03-29 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ Merge ARMv8-M support code from master as part of merge commit
+ 2015-12-24 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * elf32-arm.c (using_thumb_only): Test again against specific
+ Tag_CPU_arch value in case Tag_CPU_arch_profile is empty.
+ (tag_cpu_arch_combine): Remove comma for last entry of each table.
+ Adjust v4t_plus_v6_m and comb array to account for new
+ TAG_CPU_ARCH_V4T_PLUS_V6_M value. Deal with NULL values in comb
+ array.
+
2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
(elf32_arm_merge_eabi_attributes): Add merging logic for
Tag_DSP_extension.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * elf32-arm.c (using_thumb_only): Only check that profile is 'M'.
+ (tag_cpu_arch_combine): Define v8m_baseline and v8m_mainline and update
+ v4t_plus_v6_m and comb to deal with ARMv8-M Tag_CPU_arch merging logic.
+ (elf32_arm_merge_eabi_attributes): Add Tag_CPU_name values for
+ ARMv8-M.
* readelf.c (display_arm_attribute): Add output for Tag_DSP_extension.
(arm_attr_public_tags): Define DSP_extension attribute.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * readelf.c (arm_attr_tag_CPU_arch): Add ARMv8-M Baseline Tag_CPU_arch
+ value.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * readelf.c (arm_attr_tag_CPU_arch): Add ARMv8-M Mainline Tag_CPU_arch
+ value.
+ (arm_attr_tag_THUMB_ISA_use): Add ARMv8-M Mainline Tag_THUMB_ISA_use
+ value.
Mainline with DSP extension.
(arm_convert_symbolic_attribute): Define Tag_DSP_extension.
-2016-03-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
+2016-03-29 Andre Vieira <andre.simoesdiasvieira@arm.com>
* config/tc-arm.c (arm_cpus): Add cortex-r8.
* doc/c-arm.texi: Add cortex-r8.
+2016-03-29 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ Merge ARMv8-M support code from master as part of merge commit
+ 2015-12-24 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * config/tc-arm.c (non_v6t2_wide_only_insn): Rename into ...
+ (t1_isa_t32_only_insn): This. Clarify what instructions are catched by
+ the first conditional block.
+ (wide_insn_ok): Rename into ...
+ (t32_insn_ok): This.
+ (aeabi_set_public_attributes): Use TAG_CPU_ARCH_V7 instead of 10,
+ TAG_CPU_ARCH_V7E_M instead of 13, TAG_CPU_ARCH_V8 instead of 14,
+ TAG_CPU_ARCH_V8M_BASE instead of 16 and TAG_CPU_ARCH_V8M_MAIN instead
+ of 17.
+
2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
* config/tc-arm.c (arm_ext_dsp): New feature for Thumb DSP
* config/tc-arm.c (insns): Add ARMv8-M security extensions
instructions.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * config/tc-arm.c (arm_ext_v6t2_v8m): New feature for instructions
+ shared between ARMv6T2 and ARMv8-M.
+ (move_or_literal_pool): Check mov.w/mvn and movw availability against
+ arm_ext_v6t2 and arm_ext_v6t2_v8m respectively instead of checking
+ arm_arch_t2.
+ (do_t_branch): Error out for wide conditional branch instructions if
+ targetting ARMv8-M Baseline.
+ (non_v6t2_wide_only_insn): Add the logic for new wide-only instructions
+ in ARMv8-M Baseline.
+ (wide_insn_ok): New function.
+ (md_assemble): Use wide_insn_ok instead of non_v6t2_wide_only_insn and
+ adapt error message for unsupported wide instruction to ARMv8-M
+ Baseline.
+ (insns): Reorganize instructions shared by ARMv8-M Baseline and
+ ARMv6t2 architecture.
+ (arm_cpus): Set feature bit ARM_EXT2_V6T2_V8M for marvell-pj4 and
+ marvell-whitney cores.
+ (arm_archs): Define armv8-m.base architecture.
+ (cpu_arch_ver): Define ARM_ARCH_V8M_BASE architecture version.
+ (aeabi_set_public_attributes): Add logic to set Tag_CPU_arch to 17 for
+ ARMv8-M Mainline. Set Tag_DIV_use for ARMv8-M Baseline as well.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * config/tc-arm.c (arm_ext_m): Include ARMv8-M.
+ (arm_ext_v8m): New feature for ARMv8-M.
+ (arm_ext_atomics): New feature for ARMv8 atomics.
+ (do_tt): New encoding function for TT* instructions.
+ (insns): Add new entries for ARMv8-M specific instructions and
+ reorganize the ones shared by ARMv8-M Mainline and ARMv8-A.
+ (arm_archs): Define armv8-m.main architecture.
+ (cpu_arch_ver): Define ARM_ARCH_V8M_MAIN architecture version and
+ clarify the ordering rule.
+ (aeabi_set_public_attributes): Add logic to keep setting Tag_CPU_arch
+ to ARMv8-A for -march=all. Also set Tag_CPU_arch_profile to 'A' if
+ extension bit for atomic instructions is set, unless it is ARMv8-M.
+ Set Tag_THUMB_ISA_use to 3 for ARMv8-M. Set Tag_DIV_use to 0 for
+ ARMv8-M Mainline.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * config/tc-arm.c (move_or_literal_pool): Check mov.w, mvm and movw
+ availability against arm_ext_v6t2 instead of checking arm_arch_t2,
+ fixing comments along the way.
+ (handle_it_state): Check arm_ext_v6t2 instead of arm_arch_t2 to
+ generate IT instruction.
+ (non_v6t2_wide_only_insn): New function.
+ (md_assemble): Use above new function to check for invalid wide
+ instruction for CPU Thumb ISA and to determine what Thumb extension
+ bit is necessary for that instruction.
+ (md_apply_fix): Use arm_ext_v6t2 instead of arm_arch_t2 to decide if
+ branch is out of range.
* gas/arm/archv8m-cmse.s: New file.
* gas/arm/archv8m-cmse-base.d: Likewise.
* gas/arm/archv8m-cmse-main.d: Likewise.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * gas/arm/archv8m-base.d: New file.
+ * gas/arm/attr-march-armv8m.base.d: Likewise.
+ * gas/arm/armv8m.base-idiv.d: Likewise.
+ * gas/arm/any-armv8m.d: Adapt to deal with ARMv8-M Baseline.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * gas/arm/archv8m.s: New file.
+ * gas/arm/archv8m-main.d: Likewise.
+ * gas/arm/attr-march-armv8m.main.d: Likewise.
+ * gas/arm/any-armv8m.s: Likewise.
+ * gas/arm/any-armv8m.d: Likewise.
+
+2016-12-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * gas/arm/automatic-bw.d: New.
+ * gas/arm/automatic-bw.s: New.
+ * gas/arm/automatic-cbz.d: New.
+ * gas/arm/automatic-cbz.s: New.
+ * gas/arm/automatic-clrex.d: New.
+ * gas/arm/automatic-clrex.s: New.
+ * gas/arm/automatic-lda.d: New.
+ * gas/arm/automatic-lda.s: New.
+ * gas/arm/automatic-ldaex.d: New.
+ * gas/arm/automatic-ldaex.s: New.
+ * gas/arm/automatic-ldaexb.d: New.
+ * gas/arm/automatic-ldaexb.s: New.
+ * gas/arm/automatic-ldrex.d: New.
+ * gas/arm/automatic-ldrex.s: New.
+ * gas/arm/automatic-ldrexd.d: New.
+ * gas/arm/automatic-ldrexd.s: New.
+ * gas/arm/automatic-movw.d: New.
+ * gas/arm/automatic-movw.s: New.
+ * gas/arm/automatic-sdiv.d: New.
+ * gas/arm/automatic-sdiv.s: New.
+ * gas/arm/automatic-strexb.d: New.
+ * gas/arm/automatic-strexb.s: New.
* arm.h (Tag_DSP_extension): Define.
+2016-03-29 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ Merge ARMv8-M support code from master as part of merge commit
+ 2015-12-24 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * arm.h (TAG_CPU_ARCH_V4T_PLUS_V6_M): set back to MAX_TAG_CPU_ARCH + 1.
+
2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
* arm.h (Tag_DSP_extension): Define.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * arm.h (TAG_CPU_ARCH_V8M_BASE): Declare.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * arm.h (TAG_CPU_ARCH_V8M_MAIN): Declare.
+ (MAX_TAG_CPU_ARCH): Define to TAG_CPU_ARCH_V8M_MAIN.
+ (TAG_CPU_ARCH_V4T_PLUS_V6_M): Define to unused value 15.
* arm.h (ARM_CPU_HAS_FEATURE): Add comment.
(ARM_FSET_CPU_SUBSET): Define macro.
+2016-03-29 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * arm.h (ARM_EXT_V8): Remove mention of legacy use for that bit.
+
2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
* arm.h (ARM_CPU_HAS_FEATURE): Add comment.
(ARM_FSET_CPU_SUBSET): Define macro.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * arm.h (ARM_EXT2_V6T2_V8M): New extension bit.
+ (ARM_AEXT2_V8A): New architecture extension bitfield.
+ (ARM_AEXT2_V8_1A): Use ARM_AEXT2_V8A instead of ARM_EXT2_ATOMICS.
+ (ARM_AEXT_V8M_BASE): New architecture extension bitfield.
+ (ARM_AEXT2_V8M): Add extension bit ARM_EXT2_V6T2_V8M.
+ (ARM_ARCH_V6T2): Use ARM_EXT2_V6T2_V8M for the second extension
+ bitfield.
+ (ARM_ARCH_V6KT2): Likewise.
+ (ARM_ARCH_V6ZT2): Likewise.
+ (ARM_ARCH_V6KZT2): Likewise.
+ (ARM_ARCH_V7): Likewise.
+ (ARM_ARCH_V7A): Likewise.
+ (ARM_ARCH_V7VE): Likewise.
+ (ARM_ARCH_V7R): Likewise.
+ (ARM_ARCH_V7M): Likewise.
+ (ARM_ARCH_V7EM): Likewise.
+ (ARM_ARCH_V8A): Likewise.
+ (ARM_ARCH_V8M_BASE): New architecture bitfield.
+ (ARM_ARCH_THUMB2): Include instructions shared by ARMv6t2 and ARMv8-M.
+ (ARM_ARCH_V7A_SEC): Use ARM_EXT2_V6T2_V8M for the second extension
+ bitfield and reindent.
+ (ARM_ARCH_V7A_MP_SEC): Likewise.
+ (ARM_ARCH_V7R_IDIV): Likewise.
+ (ARM_ARCH_V8A_FP): Use ARM_AEXT2_V8A instead of ARM_EXT2_ATOMICS.
+ (ARM_ARCH_V8A_SIMD): Likewise.
+ (ARM_ARCH_V8A_CRYPTOV1): Likewise.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * arm.h (ARM_EXT2_ATOMICS): New extension bit.
+ (ARM_EXT2_V8M): Likewise.
+ (ARM_EXT_V8): Adjust comment with regards to atomics.
+ (ARM_AEXT2_V8_1A): New architecture extension bitfield.
+ (ARM_AEXT2_V8_2A): Likewise.
+ (ARM_AEXT_V8M_MAIN): Likewise.
+ (ARM_AEXT2_V8M): Likewise.
+ (ARM_ARCH_V8A): Use ARM_EXT2_ATOMICS for features in second bitfield.
+ (ARM_ARCH_V8_1A): Likewise with ARM_AEXT2_V8_1A.
+ (ARM_ARCH_V8_2A): Likewise with ARM_AEXT2_V8_2A.
+ (ARM_ARCH_V8M_MAIN): New architecture feature bitfield.
+ (ARM_ARCH_V8A_FP): Use ARM_EXT2_ATOMICS for features in second bitfield
+ and reindent.
+ (ARM_ARCH_V8A_SIMD): Likewise.
+ (ARM_ARCH_V8A_CRYPTOV1): Likewise.
+ (ARM_ARCH_V8_1A_FP): Use ARM_AEXT2_V8_1A to set second bitfield of
+ feature bits.
+ (ARM_ARCH_V8_1A_SIMD): Likewise.
+ (ARM_ARCH_V8_1A_CRYPTOV1): Likewise.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * arm.h (ARM_ARCH_THUMB2): Add comment explaining its meaning and
+ remove extension bit not including any Thumb-2 instruction.
* ld-arm/attr-merge-10b-dsp.s: New file.
* ld-arm/attr-merge-10-dsp.attr: Likewise.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * ld-arm/arm-elf.exp (armeabitests_common): Run new tests
+ "Thumb-Thumb farcall v8-M", "EABI attribute merging 8",
+ "EABI attribute merging 9" and "EABI attribute merging 10".
+ (Thumb-Thumb farcall v8-M): Renamed to ...
+ (Thumb-Thumb farcall v8-M Mainline): This.
+ (Thumb-Thumb farcall v8-M Baseline): New test.
+ * ld-arm/attr-merge-8a.s: New file.
+ * ld-arm/attr-merge-8b.s: Likewise.
+ * ld-arm/attr-merge-8.attr: Likewise.
+ * ld-arm/attr-merge-9a.s: Likewise.
+ * ld-arm/attr-merge-9b.s: Likewise.
+ * ld-arm/attr-merge-9.out: Likewise.
+ * ld-arm/attr-merge-10a.s: Likewise.
+ * ld-arm/attr-merge-10b.s: Likewise.
+ * ld-arm/attr-merge-10.attr: Likewise.
extensions instructions.
(thumb32_opcodes): Add entries for wide ARMv8-M security extensions
instructions.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * arm-dis.c (arm_opcodes): Guard movw, movt cbz, cbnz, clrex, ldrex,
+ ldrexb, ldrexh, strex, strexb, strexh shared by ARMv6T2 and ARMv8-M by
+ ARM_EXT2_V6T2_V8M instead of ARM_EXT_V6T2.
+
+2015-12-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * arm-dis.c (arm_opcodes): Guard lda, ldab, ldaex, ldaexb, ldaexh, stl,
+ stlb, stlh, stlex, stlexb and stlexh by ARM_EXT2_ATOMICS instead of
+ ARM_EXT_V8.
+ (thumb32_opcodes): Add entries for wide ARMv8-M instructions.