[U-Boot] [RFC] Add volatile back to arch_getb(a) functions

Macpaul Lin macpaul at gmail.com
Wed Nov 23 03:58:01 CET 2011


Hi Wolfgang and all,

I've found that there is still a problem about taking volatile off in macro
__arch_get()/__arch_put()
on NDS32 based platforms.
GCC will optimized the code if the driver call x86 io emulation functions
if there is no volatile in __arch_get().

For example, if the device driver using x86 io emulation like in/out, the
macro will be expanded to
__raw_read()/__raw_write(), then finally will be replaced with
__arch_get()/__arch_put().
If we do not add volatile to __arch_get()/__arch_put() functions, the
in/out behavior will be incorrect.

I think the volatile still needed to be add back to these __arch_xxx macros
if the x86 io emulation functions shouldn't be re-written.
Do you have other suggestion?
Thanks!

-- 
Best regards,
Macpaul Lin


More information about the U-Boot mailing list