BLR
Branch with link to register
This instruction calls a subroutine at an address in a register,
setting register X30 to PC+4.
1
1
0
1
0
1
1
0
0
0
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
BLR <Xn>
constant integer n = UInt(Rn);
<Xn>
Is the 64-bit name of the general-purpose register holding the address to be branched to, encoded in the "Rn" field.
constant bits(64) target = X[n, 64];
if IsFeatureImplemented(FEAT_GCS) && GCSPCREnabled(PSTATE.EL) then
AddGCSRecord(PC64 + 4);
// Value in BTypeNext will be used to set PSTATE.BTYPE
BTypeNext = '10';
X[30, 64] = PC64 + 4;
constant boolean branch_conditional = FALSE;
BranchTo(target, BranchType_INDCALL, branch_conditional);