]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[PATCH 2/15] arm: Add Armv8.1-M Mainline target feature +pacbti
authorAndrea Corallo <andrea.corallo@arm.com>
Mon, 6 Dec 2021 10:38:32 +0000 (11:38 +0100)
committerAndrea Corallo <andrea.corallo@arm.com>
Thu, 9 Mar 2023 14:57:23 +0000 (14:57 +0000)
This patch adds the -march feature +pacbti to Armv8.1-M Mainline.
This feature enables pointer signing and authentication instructions
on M-class architectures.

Pre-approved here
<https://gcc.gnu.org/pipermail/gcc-patches/2021-December/586144.html>.

gcc/Changelog:

* config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
* config/arm/arm-cpus.in (pacbti): New feature.
* doc/invoke.texi (Arm Options): Document it.

Co-Authored-By: Tejas Belagod <tbelagod@arm.com>
gcc/config/arm/arm-cpus.in
gcc/config/arm/arm.h
gcc/doc/invoke.texi

index 0d3082b569f70580f54cc934b8c73cae706d13ae..9502a34fa974744f02ded4f32c03de6169950120 100644 (file)
@@ -229,6 +229,10 @@ define feature cdecp5
 define feature cdecp6
 define feature cdecp7
 
+# M-profile control flow integrity extensions (PAC/AUT/BTI).
+# Optional from Armv8.1-M Mainline.
+define feature pacbti
+
 # Feature groups.  Conventionally all (or mostly) upper case.
 # ALL_FPU lists all the feature bits associated with the floating-point
 # unit; these will all be removed if the floating-point unit is disabled
@@ -743,6 +747,7 @@ begin arch armv8.1-m.main
  isa ARMv8_1m_main
 # fp => FPv5-sp-d16; fp.dp => FPv5-d16
  option dsp add armv7em
+ option pacbti add pacbti
  option fp add FPv5 fp16
  option fp.dp add FPv5 FP_DBL fp16
  option nofp remove ALL_FP
index e15722b0be3b39f3f7b4a12be505f47548410075..3d718f947bba56ce6559e8900d2427ae20aaf1a2 100644 (file)
@@ -331,6 +331,12 @@ emission of floating point pcs attributes.  */
                                                isa_bit_mve_float) \
                               && !TARGET_GENERAL_REGS_ONLY)
 
+/* Non-zero if this target supports Armv8.1-M Mainline pointer-signing
+   extension.  */
+#define TARGET_HAVE_PACBTI (arm_arch8_1m_main \
+                           && bitmap_bit_p (arm_active_target.isa, \
+                                            isa_bit_pacbti))
+
 /* MVE have few common instructions as VFP, like VLDM alias VPOP, VLDR, VSTM
    alia VPUSH, VSTR and VMOV, VMSR and VMRS.  In the same manner it updates few
    registers such as FPCAR, FPCCR, FPDSCR, FPSCR, MVFR0, MVFR1 and MVFR2.  All
index eb7e46c8668dfe51848855956e57c853a2b3ff91..3f2e9781d05e5f3f540c8ac9a51788685138ab34 100644 (file)
@@ -21011,6 +21011,9 @@ Disable the floating-point extension.
 @item +cdecp0, +cdecp1, ... , +cdecp7
 Enable the Custom Datapath Extension (CDE) on selected coprocessors according
 to the numbers given in the options in the range 0 to 7.
+
+@item +pacbti
+Enable the Pointer Authentication and Branch Target Identification Extension.
 @end table
 
 @item  armv8-m.main