EORFLGS (register)

Bitwise Exclusive OR (register) on flags field performs a bitwise XOR of the flags field of a capability and bits 63 to 56 of a register value and writes the result to the flags field of the destination Capability register. If the source capability is sealed, the Capability Tag written to the destination Capability register is cleared.

313029282726252423222120191817161514131211109876543210
11000010110Rm101010CnCd
opc

EORFLGS <Cd|CSP>, <Cn|CSP>, <Xm>

integer d = UInt(Cd); integer n = UInt(Cn); integer m = UInt(Rm);

Assembler Symbols

<Cd|CSP>

Is the capability name of the destination register or stack pointer, encoded in the "Cd" field.

<Cn|CSP>

Is the capability name of the source register or stack pointer, encoded in the "Cn" field.

<Xm>

Is the 64-bit name of the source general-purpose register, encoded in the "Rm" field.

Operation

CheckCapabilitiesEnabled(); Capability operand = if n == 31 then CSP[] else C[n]; bits(64) mask = X[m]; bits(64) oldvalue = CapGetValue(operand); bits(8) newflags = oldvalue<63:56> EOR mask<63:56>; bits(64) newvalue = newflags : oldvalue<55:0>; Capability result = CapSetFlags(operand,newvalue); if CapIsSealed(operand) then result = CapWithTagClear(result); if d == 31 then CSP[] = result; else C[d] = result;


Internal version only: isa v32.13, AdvSIMD v29.04, pseudocode morello-2022-01_rc2, capabilities morello-2022-01_rc2 ; Build timestamp: 2022-01-11T11:23

Copyright © 2010-2022 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.