eieio
Enforce In-order Execution of I/O
Ensures that load/store instructions preceding the EIEIO complete before those following it. Used for Memory-Mapped I/O synchronization.
Details
Enforces in-order completion of all load and store instructions issued before it with respect to all load and store instructions issued after it. This is essential for memory-mapped I/O synchronization and weak-ordering memory models. No condition register or status fields are affected.
Pseudocode Operation
Synchronize_IO()
Wait_for_all_preceding_loads_and_stores_to_complete()
Programming Note
The eieio instruction is intended for use in doing memory-mapped I/O. Because loads, and separately stores, to storage that is both Caching Inhibited and Guarded are performed in program order (see Section 1.7.1, “Storage Access Ordering ” on page 973), eieio is needed for such storage only when loads must be ordered with respect to stores.
Example
// I/O Barrier.