SCBNDS (register)

Set Bounds derives Capability Bounds using the source Capability register and a length from a 64-bit register and writes the result to the destination Capability register. If the source capability is sealed, the Capability Tag written to the destination Capability register is cleared

313029282726252423222120191817161514131211109876543210
11000010110Rm000000CnCd
opc<1>opc<0>

SCBNDS <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 operand1 = if n == 31 then CSP[] else C[n]; bits(64) xm = X[m]; bits(65) length = ZeroExtend(xm,65); Capability result = CapSetBounds(operand1, length, FALSE); if CapIsSealed(operand1) 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.