+ *
+ * Read operations have additional twi & isync to make sure the read
+ * is actually performed (i.e. the data has come back) before we
start
+ * executing any following instructions.
+ *
+ * A data-dependent branch followed by an isync ensures that no
+ * instructions after the isync in program order will be
+ * (speculatively) executed
..."before the isync has completed, and it won't complete until
the branch is resolved;"...
so the load that the twi depends
+ * on has to complete before anything else is executed; in
+ * particular, it's a barrier to keep MMIO reads ordered before
+ * main-storage accesses.
*/
You shouldn't post my test and put your signed-off on it, esp.
if I forgot to type half a sentence :-) Here, have one though:
Signed-off-by: Segher Boessenkool <redacted>
Segher