semaphore.S
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

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