You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Clearly specify FENCE.I ordering requirements
The ratified FENCE.I definition specifies a sufficient code sequence
for multiprocessor instruction-memory modification (on the producer,
store to instruction memory, fence, then communicate with the consumer;
on the consumer, observe communication, fence.i, then execute the new code).
However, the spec does not explain _why_ this sequence suffices. The
explanation is that FENCE.I orders older loads on the same thread before
younger instruction fetches. (Otherwise, nothing would force the consumer's
observation of the communication to occur before the next fetch.)
Combined with the existing statement in the spec that older stores on the
same hart are ordered before younger fetches, the overall implied rule
is easy to state: FENCE.I orders all older explicit memory accesses before
all younger fetches.
* Change register allocation for clarity
0 commit comments