Könnte es sein dass das Define auch mit der größeren, z.B. long int, definiert werden muss ?
C Präprozessormacros sind quasi Textersetzung, das sollte keine Rolle spielen.
Klingt ein bisschen noch Optimierungskram. Gerade bei MMIO ist
volatile ganz nützlich