aarch64: Add +pauth flag for Pointer Authentication feature

New -march option +pauth enables PAuth vel PAC (Pointer Authentication)
feature.
This commit is contained in:
Przemyslaw Wirkus 2020-11-16 21:17:25 +00:00
parent e64441b14c
commit 3f4ff0886f
6 changed files with 169 additions and 1 deletions

View file

@ -1,3 +1,11 @@
2020-11-13 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
* NEWS: Update news.
* config/tc-aarch64.c: Add option +pauth to -march.
* doc/c-aarch64.texi: Update docs.
* testsuite/gas/aarch64/pac-feat.d: New test.
* testsuite/gas/aarch64/pac-feat.s: New test.
2020-11-16 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
* NEWS: Update news.

View file

@ -32,6 +32,9 @@
* Add support for +ls64 feature for -march in Armv8.7 AArch64. Add atomic
64-byte load/store instructions for this feature.
* Add support for +pauth (Pointer Authentication) feature for -march in
AArch64.
* Add support for Intel TDX instructions.
* Add support for Intel Key Locker instructions.

View file

@ -9227,6 +9227,8 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = {
AARCH64_ARCH_NONE},
{"flagm", AARCH64_FEATURE (AARCH64_FEATURE_FLAGM, 0),
AARCH64_ARCH_NONE},
{"pauth", AARCH64_FEATURE (AARCH64_FEATURE_PAC, 0),
AARCH64_ARCH_NONE},
{NULL, AARCH64_ARCH_NONE, AARCH64_ARCH_NONE},
};

View file

@ -230,8 +230,10 @@ automatically cause those extensions to be disabled.
@tab Enable Flag Manipulation instructions.
@item @code{csre} @tab ARMv8-A @tab No
@tab Enable Call Stack Recorder Extension.
@item @code{ls64} @tab ARMv8-6 @tab ARMv8.7-A or later
@item @code{ls64} @tab ARMv8.6-A @tab ARMv8.7-A or later
@tab Enable 64 Byte Loads/Stores.
@item @code{pauth} @tab ARMv8-A @tab No
@tab Enable Pointer Authentication.
@end multitable
@node AArch64 Syntax

View file

@ -0,0 +1,74 @@
#name: PAUTH (Pointer authentication) feature
#objdump: -dr
.*: file .*
Disassembly of section \.text:
0+ <.*>:
.*: dac10083 pacia x3, x4
.*: dac103e5 pacia x5, sp
.*: dac10483 pacib x3, x4
.*: dac107e5 pacib x5, sp
.*: dac10883 pacda x3, x4
.*: dac10be5 pacda x5, sp
.*: dac10c83 pacdb x3, x4
.*: dac10fe5 pacdb x5, sp
.*: dac11083 autia x3, x4
.*: dac113e5 autia x5, sp
.*: dac11483 autib x3, x4
.*: dac117e5 autib x5, sp
.*: dac11883 autda x3, x4
.*: dac11be5 autda x5, sp
.*: dac11c83 autdb x3, x4
.*: dac11fe5 autdb x5, sp
.*: dac123e5 paciza x5
.*: dac127e5 pacizb x5
.*: dac12be5 pacdza x5
.*: dac12fe5 pacdzb x5
.*: dac133e5 autiza x5
.*: dac137e5 autizb x5
.*: dac13be5 autdza x5
.*: dac13fe5 autdzb x5
.*: dac143e5 xpaci x5
.*: dac147e5 xpacd x5
.*: 9ac33041 pacga x1, x2, x3
.*: 9adf3041 pacga x1, x2, sp
.*: d71f0822 braa x1, x2
.*: d71f087f braa x3, sp
.*: d71f0c22 brab x1, x2
.*: d71f0c7f brab x3, sp
.*: d73f0822 blraa x1, x2
.*: d73f087f blraa x3, sp
.*: d73f0c22 blrab x1, x2
.*: d73f0c7f blrab x3, sp
.*: d61f08bf braaz x5
.*: d61f0cbf brabz x5
.*: d63f08bf blraaz x5
.*: d63f0cbf blrabz x5
.*: d65f0bff retaa
.*: d65f0fff retab
.*: d69f0bff eretaa
.*: d69f0fff eretab
.*: f8200441 ldraa x1, \[x2\]
.*: f8200441 ldraa x1, \[x2\]
.*: f87ff483 ldraa x3, \[x4, #-8\]
.*: f82014c5 ldraa x5, \[x6, #8\]
.*: f83ff507 ldraa x7, \[x8, #4088\]
.*: f8600528 ldraa x8, \[x9, #-4096\]
.*: f82007e2 ldraa x2, \[sp\]
.*: f87067e4 ldraa x4, \[sp, #-2000\]
.*: f8a00441 ldrab x1, \[x2\]
.*: f8a00441 ldrab x1, \[x2\]
.*: f8fff483 ldrab x3, \[x4, #-8\]
.*: f8a014c5 ldrab x5, \[x6, #8\]
.*: f8bff507 ldrab x7, \[x8, #4088\]
.*: f8e00528 ldrab x8, \[x9, #-4096\]
.*: f8a007e2 ldrab x2, \[sp\]
.*: f8f067e4 ldrab x4, \[sp, #-2000\]
.*: f8201c62 ldraa x2, \[x3, #8\]!
.*: f87ffca4 ldraa x4, \[x5, #-8\]!
.*: f83fffe6 ldraa x6, \[sp, #4088\]!
.*: f8a01c62 ldrab x2, \[x3, #8\]!
.*: f8fffca4 ldrab x4, \[x5, #-8\]!
.*: f8bfffe6 ldrab x6, \[sp, #4088\]!

View file

@ -0,0 +1,79 @@
/* ARMv8.3 Pointer authentication instructions. */
.arch armv8-a+pauth
/* Basic instructions. */
pacia x3, x4
pacia x5, sp
pacib x3, x4
pacib x5, sp
pacda x3, x4
pacda x5, sp
pacdb x3, x4
pacdb x5, sp
autia x3, x4
autia x5, sp
autib x3, x4
autib x5, sp
autda x3, x4
autda x5, sp
autdb x3, x4
autdb x5, sp
paciza x5
pacizb x5
pacdza x5
pacdzb x5
autiza x5
autizb x5
autdza x5
autdzb x5
xpaci x5
xpacd x5
pacga x1, x2, x3
pacga x1, x2, sp
/* Combined instructions. */
braa x1, x2
braa x3, sp
brab x1, x2
brab x3, sp
blraa x1, x2
blraa x3, sp
blrab x1, x2
blrab x3, sp
braaz x5
brabz x5
blraaz x5
blrabz x5
retaa
retab
eretaa
eretab
ldraa x1, [x2]
ldraa x1, [x2,#0]
ldraa x3, [x4,#-8]
ldraa x5, [x6,#8]
ldraa x7, [x8,#4088]
ldraa x8, [x9,#-4096]
ldraa x2, [sp]
ldraa x4, [sp,#-2000]
ldrab x1, [x2]
ldrab x1, [x2,#0]
ldrab x3, [x4,#-8]
ldrab x5, [x6,#8]
ldrab x7, [x8,#4088]
ldrab x8, [x9,#-4096]
ldrab x2, [sp]
ldrab x4, [sp,#-2000]
ldraa x2, [x3, #8]!
ldraa x4, [x5, #-8]!
ldraa x6, [sp, #4088]!
ldrab x2, [x3, #8]!
ldrab x4, [x5, #-8]!
ldrab x6, [sp, #4088]!