Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * linux/arch/m68k/lib/semaphore.S | |
3 | * | |
4 | * Copyright (C) 1996 Linus Torvalds | |
5 | * | |
6 | * m68k version by Andreas Schwab | |
7 | */ | |
8 | ||
9 | #include <linux/linkage.h> | |
10 | #include <asm/semaphore.h> | |
11 | ||
12 | /* | |
13 | * The semaphore operations have a special calling sequence that | |
14 | * allow us to do a simpler in-line version of them. These routines | |
15 | * need to convert that sequence back into the C sequence when | |
16 | * there is contention on the semaphore. | |
17 | */ | |
18 | ENTRY(__down_failed) | |
19 | moveml %a0/%d0/%d1,-(%sp) | |
20 | movel %a1,-(%sp) | |
21 | jbsr __down | |
22 | movel (%sp)+,%a1 | |
23 | moveml (%sp)+,%a0/%d0/%d1 | |
24 | rts | |
25 | ||
26 | ENTRY(__down_failed_interruptible) | |
27 | movel %a0,-(%sp) | |
28 | movel %d1,-(%sp) | |
29 | movel %a1,-(%sp) | |
30 | jbsr __down_interruptible | |
31 | movel (%sp)+,%a1 | |
32 | movel (%sp)+,%d1 | |
33 | movel (%sp)+,%a0 | |
34 | rts | |
35 | ||
36 | ENTRY(__down_failed_trylock) | |
37 | movel %a0,-(%sp) | |
38 | movel %d1,-(%sp) | |
39 | movel %a1,-(%sp) | |
40 | jbsr __down_trylock | |
41 | movel (%sp)+,%a1 | |
42 | movel (%sp)+,%d1 | |
43 | movel (%sp)+,%a0 | |
44 | rts | |
45 | ||
46 | ENTRY(__up_wakeup) | |
47 | moveml %a0/%d0/%d1,-(%sp) | |
48 | movel %a1,-(%sp) | |
49 | jbsr __up | |
50 | movel (%sp)+,%a1 | |
51 | moveml (%sp)+,%a0/%d0/%d1 | |
52 | rts | |
53 |