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