1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #ifdef __ASSEMBLER__
- #define _IMP1 #1
- #define _IMM1 #-1
- #define _IMM4 #-4
- #define _IMM6 #-6
- #define _IMM8 #-8
- #define INC(mem, reg) \
- .align 2
- mova 99f, r0
- mov r15, r1
- mov _IMM6, r15
- 98: mov.l mem, reg
- add _IMP1, reg
- mov.l reg, mem
- 99: mov r1, r15
- #define DEC(mem, reg) \
- .align 2
- mova 99f, r0
- mov r15, r1
- mov _IMM6, r15
- 98: mov.l mem, reg
- add _IMM1, reg
- mov.l reg, mem
- 99: mov r1, r15
- #define XADD(reg, mem, old, tmp) \
- .align 2
- mova 99f, r0
- nop; \
- mov r15, r1
- mov _IMM8, r15
- 98: mov.l mem, old
- mov reg, tmp
- add old, tmp
- mov.l tmp, mem
- 99: mov r1, r15
- #define XCHG(reg, mem, old) \
- .align 2
- mova 99f, r0
- nop; \
- mov r15, r1
- mov _IMM4, r15
- 98: mov.l mem, old
- mov.l reg, mem
- 99: mov r1, r15
- #define CMPXCHG(reg, mem, new, old) \
- .align 2
- mova 99f, r0
- nop; \
- mov r15, r1
- mov _IMM8, r15
- 98: mov.l mem, old
- cmp/eq old, reg
- bf 99f
- mov.l new, mem
- 99: mov r1, r15
- #endif
|