xpaci

Strip Pointer Authentication Code (Inst)

XPACI <Xd>

Removes the PAC signature from an instruction pointer.

Details

Strips the Pointer Authentication Code from a 64-bit instruction pointer in Xd without verifying the signature. This instruction is AArch64-only and requires the PAC extension. The condition flags (N, Z, C, V) are not affected, and the operation is not privileged.

Pseudocode Operation

Xd ← StripPAC(Xd, InstructionPointer)

Example

XPACI x0

Encoding

Binary Layout
1
1
0
11010110
00001
01000
0
11111
Rd
 
Format Data Processing
Opcode 0xDAC143E0
Extension PAC (Security)

Operands

  • Xd
    Ptr

Reference (Arm A64 ISA)

Instruction Forms

Encoding Instruction ISA Bit pattern
0xDAC143E0 XPACI <Xd> A64 1 | 1 | 0 | 11010110 | 00001 | 01000 | 0 | 11111 | Rd

Description

Strip Pointer Authentication Code. This instruction removes the pointer authentication code from an address. The address is in the specified general-purpose register for XPACI and XPACD, and is in LR for XPACLRI. The XPACD instruction is used for data addresses, and XPACI and XPACLRI are used for instruction addresses.

Operation

if IsFeatureImplemented(FEAT_PAuth) then
    X[d, 64] = Strip(X[d, 64], data);