On Friday 16 May 2008 08:05:41 am Paulo Marques wrote: > .... > > Note! This is not even the worst case for this optimization. The worst > case I've seen is something like: > > int my_flag; > > .... > cli(); > my_flag = 0x1234; > sei(); > .... > > Contrary to what you might expect, that my_flag access isn't being > protected by the cli/sei pair, and might be reordered by the compiler > (and "might" here means "it has happened", not some theoretical scenario). > > Currently, the official way of doing something like that is using the > macros provided in <util/atomic.h>.
Wow. I think the cli()/sei() construct is used fairly universally, and it's also in the avr-libc docs. What gives ATOMIC_BLOCK() it's special immunity? The memory clobber? -mark _______________________________________________ AVR-GCC-list mailing list AVR-GCC-list@nongnu.org http://lists.nongnu.org/mailman/listinfo/avr-gcc-list