Cc: H. Peter Anvin <hpa@...>, Chuck Ebbert <cebbert@...>, Arjan van de Ven <arjan@...>, Kirill Korotaev <dev@...>, Andrew Morton <akpm@...>, Linux Kernel Mailing List <linux-kernel@...>, <devel@...>
When it has no m (or equivalent like g) constrained argument
and no memory clobber.
You add any of the above.
You could do a memory clobber, but it would be heavier than the volatile
because the memory clobber clobbers all cached variables. volatile essentially
just says "don't remove; has side effects". Normally gcc does that automatically
for something without outputs, but this one has.
Besides a CRx access does not actually clobber memory.
-Andi
-