diff options
Diffstat (limited to 'linux/src/arch/i386/lib/semaphore.S')
-rw-r--r-- | linux/src/arch/i386/lib/semaphore.S | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/linux/src/arch/i386/lib/semaphore.S b/linux/src/arch/i386/lib/semaphore.S new file mode 100644 index 00000000..e09655c3 --- /dev/null +++ b/linux/src/arch/i386/lib/semaphore.S @@ -0,0 +1,35 @@ +/* + * linux/arch/i386/lib/semaphore.S + * + * Copyright (C) 1996 Linus Torvalds + */ + +#include <linux/linkage.h> + +/* + * "down_failed" is called with the eventual return address + * in %eax, and the address of the semaphore in %ecx. We need + * to increment the number of waiters on the semaphore, + * call "__down()", and then eventually return to try again. + */ +ENTRY(down_failed) + pushl %eax + pushl %ecx + call SYMBOL_NAME(__down) + popl %ecx + ret + +ENTRY(up_wakeup) + pushl %eax + pushl %ecx + call SYMBOL_NAME(__up) + popl %ecx + ret + +ENTRY(down_failed_interruptible) + pushl %eax + pushl %ecx + call SYMBOL_NAME(__down_interruptible) + popl %ecx + ret + |