diff options
Diffstat (limited to 'emu/Linux/arm-tas-v7.S')
| -rw-r--r-- | emu/Linux/arm-tas-v7.S | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/emu/Linux/arm-tas-v7.S b/emu/Linux/arm-tas-v7.S new file mode 100644 index 00000000..30515607 --- /dev/null +++ b/emu/Linux/arm-tas-v7.S @@ -0,0 +1,27 @@ + .file "arm-tas-v7.S" +#ifndef ARMv7 +#define DMB mcr p15, 0, r0, c7, c10, 5 +#else +#define DMB dmb +#endif +.align 2 +.global _tas +.type _tas, %function +_tas: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + @ lr needed for prologue + DMB + mov r1, r0 + mov r2, #0xaa +tas1: + ldrex r0, [r1] + cmp r0, #0 + bxne lr + strex r4, r2, [r1] + cmp r4, #0 + bne tas1 + DMB + bx lr + .size _tas, .-_tas |
