- *(u8*)addr &= ~mask;
- // asm volatile (
- // "ldx %0\n"
- // "bclr 00,x,%1"
- // : /* outputs */
- // : "p" (addr), "g" (mask) /* inputs */
- // : "x" /* altered registers */
- // );
+ //*(u8*)addr &= ~mask;
+ asm volatile (
+ "ldx %0\n"
+ "bclr 00,x,%1\n"
+ : "=m" (addr) /* outputs */
+ : "g" (mask) /* inputs */
+ : "x" /* altered registers */
+ );
+}
+
+extern inline void lock() {
+ asm volatile ("sei");
+}
+
+extern inline void unlock() {
+ asm volatile ("cli");