]> git.karo-electronics.de Git - mv-sheeva.git/blob - arch/cris/arch-v32/lib/spinlock.S
/home/lenb/src/to-linus-stable branch 'acpi-2.6.12'
[mv-sheeva.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.d  [$r10]
16         beq     1b
17         clearf  p
18         ax
19         clear.d [$r10]
20         bcs     1b
21         clearf  p
22         ret
23         nop
24
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