https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109933
--- Comment #6 from Rory Bolt <rory.bolt at gmail dot com> --- Ah... that code makes so much sense now... So my original comment about simply using a different constant was too simplistic; what is being attempted is to shift the constant 1 into the correct byte position since the flag is only a single byte but the atomic store is done on a word... so the shift logic will need to be rewritten for big endian targets. This also explains the masking of the low order address bits... Interesting!