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 */ 18ENTRY(__down_failed) 19 moveml %a0/%d0/%d1,-(%sp) 20 movel %a1,-(%sp) 21 jbsr SYMBOL_NAME(__down) 22 movel (%sp)+,%a1 23 moveml (%sp)+,%a0/%d0/%d1 24 rts 25 26ENTRY(__down_failed_interruptible) 27 movel %a0,-(%sp) 28 movel %d1,-(%sp) 29 movel %a1,-(%sp) 30 jbsr SYMBOL_NAME(__down_interruptible) 31 movel (%sp)+,%a1 32 movel (%sp)+,%d1 33 movel (%sp)+,%a0 34 rts 35 36ENTRY(__down_failed_trylock) 37 movel %a0,-(%sp) 38 movel %d1,-(%sp) 39 movel %a1,-(%sp) 40 jbsr SYMBOL_NAME(__down_trylock) 41 movel (%sp)+,%a1 42 movel (%sp)+,%d1 43 movel (%sp)+,%a0 44 rts 45 46ENTRY(__up_wakeup) 47 moveml %a0/%d0/%d1,-(%sp) 48 movel %a1,-(%sp) 49 jbsr SYMBOL_NAME(__up) 50 movel (%sp)+,%a1 51 moveml (%sp)+,%a0/%d0/%d1 52 rts 53 54