TCANCEL

Cancel current transaction

This instruction exits Transactional state and discards all state modifications that were performed transactionally. Execution continues at the instruction that follows the TSTART instruction of the outer transaction. The destination register of the TSTART instruction of the outer transaction is written with the immediate operand of TCANCEL.

Encoding: System

Variants: FEAT_TME (ARMv9.0)

313029282726252423222120191817161514131211109876543210
1101010001100000
opcimm16op2LL

TCANCEL #<imm>

Decoding algorithm

if !IsFeatureImplemented(FEAT_TME) then EndOfDecode(Decode_UNDEF);
constant boolean  retry  = (imm16<15> == '1');
constant bits(15) reason = imm16<14:0>;

Operation

if !IsTMEEnabled() then UNDEFINED;

if TSTATE.depth > 0 then
    FailTransaction(TMFailure_CNCL, retry, FALSE, reason);

Explanations

<imm>: Is a 16-bit unsigned immediate, in the range 0 to 65535, encoded in the "imm16" field.