extern volatile u8 _##a; \
u8 a; \
extern inline void set_##a(u8 b) { a = b; _##a = b; } \
- extern inline void bset_##a(const u8 m) { bset(&a, m); _##a = a; } \
- extern inline void bclr_##a(const u8 m) { bclr(&a, m); _##a = a; }
+ extern inline void bset_##a(const u8 m) { \
+ bset(&a, m); \
+ asm volatile ( "ldab %1\nstab %0\n" \
+ : "=m"(_##a) : "m"(a) : "d"); } \
+ extern inline void bclr_##a(const u8 m) { \
+ bclr(&a, m); \
+ asm volatile ( "ldab %1\nstab %0\n" \
+ : "=m"(_##a) : "m"(a) : "d"); }
buffered_addr(changer_output);
buffered_addr(misc_output);