DMB

Data memory barrier

This instruction is a memory barrier that ensures the ordering of observations of memory accesses, see Data Memory Barrier.

Encoding: System

313029282726252423222120191817161514131211109876543210
1101010100000011001110111111
CRmopcRt

DMB (#<imm> syntax. All unsupported and reserved options must execute as a full system barrier operation, but software must not rely on this behavior. For more information on whether an access is before or after a barrier instruction, see x[Data Memory Barrier (DMB)](BEIIECBH) or see x[Data Synchronization Barrier (DSB)](BEICEFJH)." class="text-blue-400 hover:text-yellow-300"><option>|#<imm>)

Decoding algorithm

MBReqDomain domain;
MBReqTypes types;
case CRm<3:2> of
    when '00' domain = MBReqDomain_OuterShareable;
    when '01' domain = MBReqDomain_Nonshareable;
    when '10' domain = MBReqDomain_InnerShareable;
    when '11' domain = MBReqDomain_FullSystem;
case CRm<1:0> of
    when '00' types = MBReqTypes_All; domain = MBReqDomain_FullSystem;
    when '01' types = MBReqTypes_Reads;
    when '10' types = MBReqTypes_Writes;
    when '11' types = MBReqTypes_All;

Operation

DataMemoryBarrier(domain, types);

Explanations

<option>: <imm>: Is a 4-bit unsigned immediate, in the range 0 to 15, encoded in the "CRm" field.