I should also add that the inline asm volatileGet/volatileSet workaround is just that: a workaround. For the programmer to have to resort to these techniques is an indication that the language is lacking. If I wanted to use my mmio.d for other architectures (which I actually intend to do), I would have to resort to writing a custom volatileGet/volatileSet pair for each architecture, and that doesn't scale well.