Memory Mapped I/O 以外に volatile を使う必然性が解らん…
Atomic じゃない処理でアクセスしてるなら、気休めにもならんぞ。