Showing changes from revision #0 to #1:
Added | Removed | Changed
Entry | |
---|---|
- | - |
Exit | |
---|---|
R0 | Corrupt |
This call is roughly equivalent to the ARMv7 “DMB SY” instruction:
Although this call doesn’t guarantee that any memory operation completes, it’s usually all that’s required when interacting with hardware devices which use memory-mapped IO. E.g. fill a buffer with data, issue a DMB, then write to a hardware register to start some external DMA. The writes to the buffer will have been guaranteed to complete by the time the write to the hardware register completes.
Although ARMv7 has DSB and DMB instructions which perform write buffer drain-style operations in a cache-agnostic manner, these instructions do not operate on caches which are not fully integrated with the CPU – e.g. the PL310 L2 cache that’s typically used on Cortex-A9 systems. Therefore, to get a barrier that ensures the correct ordering of memory accesses across all levels of the cache/memory hierarchy, the memory barrier ARMops must be used rather than a direct ARMv7 barrier instruction.