Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
[linux-2.6/verdex.git] / arch / cris / arch-v32 / lib / spinlock.S
blob2437ae7f6ed23481154c016e30a4166d36cbee92
1 ;; Core of the spinlock implementation
2 ;;
3 ;; Copyright (C) 2004 Axis Communications AB.
4 ;;
5 ;; Author: Mikael Starvik
8         .global cris_spin_lock
9         .global cris_spin_trylock
11         .text
13 cris_spin_lock:
14         clearf  p
15 1:      test.d  [$r10]
16         beq     1b
17         clearf  p
18         ax
19         clear.d [$r10]
20         bcs     1b
21         clearf  p
22         ret
23         nop
25 cris_spin_trylock:
26         clearf  p
27 1:      move.d  [$r10], $r11
28         ax
29         clear.d [$r10]
30         bcs     1b
31         clearf  p
32         ret
33         move.d  $r11,$r10