std::ptr::write_volatile says "Volatile operations are intended to act on I/O memory, and are guaranteed to not be elided or reordered by the compiler across other volatile operations." I just used those when I attempted to do do something similar, although lacking your nice stack trick.