sligor
a year ago
Volatile were buggy in old compiler: https://llvm.org/pubs/2008-10-EMSOFT-Volatiles.html [2008 paper]
Even if compilers are better now, if possible it is better to wrap any IO memory access into ioread/iowrite inline (no cost) functions. This can then be implemented in a way known to be safe for the compiler used. And that can be changed easily in case the architecture or the compiler changes ( yeah abstraction ! )
As linux does for example: https://www.kernel.org/doc/html/v4.15/driver-api/device-io.h...
user
a year ago