TCOMMIT

Commit current transaction

This instruction commits the current transaction. If the current transaction is an outer transaction, then Transactional state is exited, and all state modifications performed transactionally are committed to the architectural state. TCOMMIT takes no inputs and returns no value.

Execution of TCOMMIT is UNDEFINED in Non-transactional state.

Encoding: System

Variants: FEAT_TME (ARMv9.0)

313029282726252423222120191817161514131211109876543210
11010101000000110011000001111111
CRmop2Rt

TCOMMIT

Decoding algorithm

if !IsFeatureImplemented(FEAT_TME) then EndOfDecode(Decode_UNDEF);

Operation

if !IsTMEEnabled() then UNDEFINED;

if TSTATE.depth == 0 then
    UNDEFINED;

if TSTATE.depth == 1 then
    CommitTransactionalWrites();
    ClearExclusiveLocal(ProcessorID());

TSTATE.depth = TSTATE.depth - 1;

Explanations