| ;; Core of the spinlock implementation |
| ;; |
| ;; Copyright (C) 2004 Axis Communications AB. |
| ;; |
| ;; Author: Mikael Starvik |
| |
| |
| .global cris_spin_lock |
| .type cris_spin_lock,@function |
| .global cris_spin_trylock |
| .type cris_spin_trylock,@function |
| |
| .text |
| |
| cris_spin_lock: |
| clearf p |
| 1: test.b [$r10] |
| beq 1b |
| clearf p |
| ax |
| clear.b [$r10] |
| bcs 1b |
| clearf p |
| ret |
| nop |
| |
| .size cris_spin_lock, . - cris_spin_lock |
| |
| cris_spin_trylock: |
| clearf p |
| 1: move.b [$r10], $r11 |
| ax |
| clear.b [$r10] |
| bcs 1b |
| clearf p |
| ret |
| movu.b $r11,$r10 |
| |
| .size cris_spin_trylock, . - cris_spin_trylock |
| |