When a LDx_L instruction is executed without faulting, the processor records the target physi- cal address in a
If the
Processor A causes the clearing of a set lock_flag in processor B by doing any of the following in B’s locked range of physical addresses: a successful store, a successful store_conditional, or executing a WH64 instruction that modifies data on processor B. A processor’s locked range is the aligned block of 2**N bytes that includes the locked_physical_address. The 2**N value is implementation dependent. It is at least 16 (minimum lock range is an aligned
Aprocessor’s lock_flag is also cleared if that processor encounters a CALL_PAL REI, CALL_PAL rti, or CALL_PAL rfe instruction. It is UNPREDICTABLE whether or not a pro- cessor’s lock_flag is cleared on any other CALL_PAL instruction. It is UNPREDICTABLE whether a processor’s lock_flag is cleared by that processor executing a normal load or store instruction. It is UNPREDICTABLE whether a processor’s lock_flag is cleared by that proces- sor executing a taken branch (including BR, BSR, and Jumps); conditional branches that fall through do not clear the lock_flag. It is UNPREDICTABLE whether a processor’s lock_flag is cleared by that processor executing a WH64 or ECB instruction.
The sequence:
LDx_L
Modify
STx_C
BEQ xxx
when executed on a given processor, does an atomic
Notes:
•LDx_L instructions do not check for write access; hence a matching STx_C may take an
Executing a LDx_L instruction on one processor does not affect any architecturally visible state on another processor, and in particular cannot cause an STx_C on another processor to fail.
LDx_L and STx_C instructions need not be paired. In particular, an LDx_L may be followed by a conditional branch: on the