entry.S 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. /*
  2. * linux/arch/m68knommu/kernel/entry.S
  3. *
  4. * Copyright (C) 1999-2002, Greg Ungerer (gerg@snapgear.com)
  5. * Copyright (C) 1998 D. Jeff Dionne <jeff@lineo.ca>,
  6. * Kenneth Albanowski <kjahds@kjahds.com>,
  7. * Copyright (C) 2000 Lineo Inc. (www.lineo.com)
  8. *
  9. * Based on:
  10. *
  11. * linux/arch/m68k/kernel/entry.S
  12. *
  13. * Copyright (C) 1991, 1992 Linus Torvalds
  14. *
  15. * This file is subject to the terms and conditions of the GNU General Public
  16. * License. See the file README.legal in the main directory of this archive
  17. * for more details.
  18. *
  19. * Linux/m68k support by Hamish Macdonald
  20. *
  21. * 68060 fixes by Jesper Skov
  22. * ColdFire support by Greg Ungerer (gerg@snapgear.com)
  23. * 5307 fixes by David W. Miller
  24. * linux 2.4 support David McCullough <davidm@snapgear.com>
  25. */
  26. #include <linux/sys.h>
  27. #include <linux/linkage.h>
  28. #include <asm/thread_info.h>
  29. #include <asm/errno.h>
  30. #include <asm/setup.h>
  31. #include <asm/segment.h>
  32. #include <asm/asm-offsets.h>
  33. #include <asm/entry.h>
  34. .text
  35. .globl buserr
  36. .globl trap
  37. .globl ret_from_exception
  38. .globl ret_from_signal
  39. .globl sys_fork
  40. .globl sys_clone
  41. .globl sys_vfork
  42. ENTRY(buserr)
  43. SAVE_ALL
  44. moveq #-1,%d0
  45. movel %d0,%sp@(PT_ORIG_D0)
  46. movel %sp,%sp@- /* stack frame pointer argument */
  47. jsr buserr_c
  48. addql #4,%sp
  49. jra ret_from_exception
  50. ENTRY(trap)
  51. SAVE_ALL
  52. moveq #-1,%d0
  53. movel %d0,%sp@(PT_ORIG_D0)
  54. movel %sp,%sp@- /* stack frame pointer argument */
  55. jsr trap_c
  56. addql #4,%sp
  57. jra ret_from_exception
  58. #ifdef TRAP_DBG_INTERRUPT
  59. .globl dbginterrupt
  60. ENTRY(dbginterrupt)
  61. SAVE_ALL
  62. moveq #-1,%d0
  63. movel %d0,%sp@(PT_ORIG_D0)
  64. movel %sp,%sp@- /* stack frame pointer argument */
  65. jsr dbginterrupt_c
  66. addql #4,%sp
  67. jra ret_from_exception
  68. #endif
  69. ENTRY(reschedule)
  70. /* save top of frame */
  71. pea %sp@
  72. jbsr set_esp0
  73. addql #4,%sp
  74. pea ret_from_exception
  75. jmp schedule
  76. ENTRY(ret_from_fork)
  77. movel %d1,%sp@-
  78. jsr schedule_tail
  79. addql #4,%sp
  80. jra ret_from_exception
  81. ENTRY(sys_fork)
  82. SAVE_SWITCH_STACK
  83. pea %sp@(SWITCH_STACK_SIZE)
  84. jbsr m68k_fork
  85. addql #4,%sp
  86. RESTORE_SWITCH_STACK
  87. rts
  88. ENTRY(sys_vfork)
  89. SAVE_SWITCH_STACK
  90. pea %sp@(SWITCH_STACK_SIZE)
  91. jbsr m68k_vfork
  92. addql #4,%sp
  93. RESTORE_SWITCH_STACK
  94. rts
  95. ENTRY(sys_clone)
  96. SAVE_SWITCH_STACK
  97. pea %sp@(SWITCH_STACK_SIZE)
  98. jbsr m68k_clone
  99. addql #4,%sp
  100. RESTORE_SWITCH_STACK
  101. rts
  102. ENTRY(sys_sigsuspend)
  103. SAVE_SWITCH_STACK
  104. pea %sp@(SWITCH_STACK_SIZE)
  105. jbsr do_sigsuspend
  106. addql #4,%sp
  107. RESTORE_SWITCH_STACK
  108. rts
  109. ENTRY(sys_rt_sigsuspend)
  110. SAVE_SWITCH_STACK
  111. pea %sp@(SWITCH_STACK_SIZE)
  112. jbsr do_rt_sigsuspend
  113. addql #4,%sp
  114. RESTORE_SWITCH_STACK
  115. rts
  116. ENTRY(sys_sigreturn)
  117. SAVE_SWITCH_STACK
  118. jbsr do_sigreturn
  119. RESTORE_SWITCH_STACK
  120. rts
  121. ENTRY(sys_rt_sigreturn)
  122. SAVE_SWITCH_STACK
  123. jbsr do_rt_sigreturn
  124. RESTORE_SWITCH_STACK
  125. rts