You copied the Doc URL to your clipboard.
PACIA, PACIA1716, PACIASP, PACIAZ, PACIZA
Pointer Authentication Code for Instruction address, using key A. This instruction computes and inserts a pointer authentication code for an instruction address, using a modifier and key A.
The address is:
- In the general-purpose register that is specified by <Xd> for PACIA and PACIZA.
- In X17, for PACIA1716.
- In X30, for PACIASP and PACIAZ.
The modifier is:
- In the general-purpose register or stack pointer that is specified by <Xn|SP> for PACIA.
- The value zero, for PACIZA and PACIAZ.
- In X16, for PACIA1716.
- In SP, for PACIASP.
It has encodings from 2 classes: Integer and System
Integer
(Armv8.3)
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | Z | 0 | 0 | 0 | Rn | Rd |
PACIZA (Z == 1 && Rn == 11111)
PACIZA <Xd>
boolean source_is_sp = FALSE; integer d = UInt(Rd); integer n = UInt(Rn); if !HavePACExt() then UNDEFINED; if Z == '0' then // PACIA if n == 31 then source_is_sp = TRUE; else // PACIZA if n != 31 then UNDEFINED;
System
(Armv8.3)
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | x | 1 | 0 | 0 | x | 1 | 1 | 1 | 1 | 1 |
CRm | op2 |
integer d; integer n; boolean source_is_sp = FALSE; case CRm:op2 of when '0011 000' // PACIAZ d = 30; n = 31; when '0011 001' // PACIASP d = 30; source_is_sp = TRUE; if HaveBTIExt() then // Check for branch target compatibility between PSTATE.BTYPE // and implicit branch target of PACIASP instruction. - = BTypeCompatible_PACIXSP(); when '0001 000' // PACIA1716 d = 17; n = 16; when '0001 010' SEE "PACIB"; when '0001 100' SEE "AUTIA"; when '0001 110' SEE "AUTIB"; when '0011 01x' SEE "PACIB"; when '0011 10x' SEE "AUTIA"; when '0011 11x' SEE "AUTIB"; when '0000 111' SEE "XPACLRI";