entry_no.S 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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/linkage.h>
  27. #include <asm/errno.h>
  28. #include <asm/setup.h>
  29. #include <asm/segment.h>
  30. #include <asm/asm-offsets.h>
  31. #include <asm/entry.h>
  32. #include <asm/unistd.h>
  33. .text
  34. .globl buserr
  35. .globl trap
  36. .globl ret_from_exception
  37. .globl ret_from_signal
  38. .globl sys_fork
  39. .globl sys_clone
  40. .globl sys_vfork
  41. ENTRY(buserr)
  42. SAVE_ALL_INT
  43. GET_CURRENT(%d0)
  44. movel %sp,%sp@- /* stack frame pointer argument */
  45. jsr buserr_c
  46. addql #4,%sp
  47. jra ret_from_exception
  48. ENTRY(trap)
  49. SAVE_ALL_INT
  50. GET_CURRENT(%d0)
  51. movel %sp,%sp@- /* stack frame pointer argument */
  52. jsr trap_c
  53. addql #4,%sp
  54. jra ret_from_exception
  55. #ifdef TRAP_DBG_INTERRUPT
  56. .globl dbginterrupt
  57. ENTRY(dbginterrupt)
  58. SAVE_ALL_INT
  59. GET_CURRENT(%d0)
  60. movel %sp,%sp@- /* stack frame pointer argument */
  61. jsr dbginterrupt_c
  62. addql #4,%sp
  63. jra ret_from_exception
  64. #endif
  65. ENTRY(reschedule)
  66. /* save top of frame */
  67. pea %sp@
  68. jbsr set_esp0
  69. addql #4,%sp
  70. pea ret_from_exception
  71. jmp schedule
  72. ENTRY(ret_from_fork)
  73. movel %d1,%sp@-
  74. jsr schedule_tail
  75. addql #4,%sp
  76. jra ret_from_exception
  77. ENTRY(sys_fork)
  78. SAVE_SWITCH_STACK
  79. pea %sp@(SWITCH_STACK_SIZE)
  80. jbsr m68k_fork
  81. addql #4,%sp
  82. RESTORE_SWITCH_STACK
  83. rts
  84. ENTRY(sys_vfork)
  85. SAVE_SWITCH_STACK
  86. pea %sp@(SWITCH_STACK_SIZE)
  87. jbsr m68k_vfork
  88. addql #4,%sp
  89. RESTORE_SWITCH_STACK
  90. rts
  91. ENTRY(sys_clone)
  92. SAVE_SWITCH_STACK
  93. pea %sp@(SWITCH_STACK_SIZE)
  94. jbsr m68k_clone
  95. addql #4,%sp
  96. RESTORE_SWITCH_STACK
  97. rts
  98. ENTRY(sys_sigreturn)
  99. SAVE_SWITCH_STACK
  100. jbsr do_sigreturn
  101. RESTORE_SWITCH_STACK
  102. rts
  103. ENTRY(sys_rt_sigreturn)
  104. SAVE_SWITCH_STACK
  105. jbsr do_rt_sigreturn
  106. RESTORE_SWITCH_STACK
  107. rts
  108. ENTRY(ret_from_user_signal)
  109. moveq #__NR_sigreturn,%d0
  110. trap #0
  111. ENTRY(ret_from_user_rt_signal)
  112. movel #__NR_rt_sigreturn,%d0
  113. trap #0