Fixes #272.

Prevents ARM CPU's from reordering read/write
sequences such that writes to a guard variable
are reordered ahead of reads.

In this case, our task scheduler was periodically
allowing two concurrent tasks using shared
state, causing one to overwrite the other.