X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=ROM2%2Fasm.h;h=0dac1b0b15b070dc10b7ab32a2fe393c9e105b24;hb=c1fd53d73bce8779c822e3ed74de94f40714f9ca;hp=41e9fe2752b7e8a6515760137ef4d06ad1bd99cd;hpb=2e7a8beb908896930042bc0564fbd16f3e0b0b62;p=uccvend-snackrom.git diff --git a/ROM2/asm.h b/ROM2/asm.h index 41e9fe2..0dac1b0 100644 --- a/ROM2/asm.h +++ b/ROM2/asm.h @@ -12,34 +12,34 @@ extern inline void bset(const void* addr, const u8 mask) { * bset/bclr on the same memory address. Sigh. Either turn off optimisation * (-O1 without -Os works), or we do it the dumb way. */ - *(u8*)addr |= mask; - // asm volatile ( - // "ldx %0\n" - // "bset 00,x,%1" - // : /* outputs */ - // : "p" (addr), "g" (mask) /* inputs */ - // : "x" /* altered registers */ - // ); + //*(u8*)addr |= mask; + asm volatile ( + "ldx %0\n" + "bset 00,x,%1\n" + : "=m" (addr) /* outputs */ + : "g" (mask) /* inputs */ + : "x" /* altered registers */ + ); } extern inline void bclr(const void* addr, const u8 mask) { /* same issue as above */ - *(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 ("cli"); + asm volatile ("sei"); } extern inline void unlock() { - asm volatile ("sei"); + asm volatile ("cli"); } #endif /* _ASM_H_ */