entry_no.S 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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. moveq #-1,%d0
  44. movel %d0,%sp@(PT_OFF_ORIG_D0)
  45. movel %sp,%sp@- /* stack frame pointer argument */
  46. jsr buserr_c
  47. addql #4,%sp
  48. jra ret_from_exception
  49. ENTRY(trap)
  50. SAVE_ALL_INT
  51. moveq #-1,%d0
  52. movel %d0,%sp@(PT_OFF_ORIG_D0)
  53. movel %sp,%sp@- /* stack frame pointer argument */
  54. jsr trap_c
  55. addql #4,%sp
  56. jra ret_from_exception
  57. #ifdef TRAP_DBG_INTERRUPT
  58. .globl dbginterrupt
  59. ENTRY(dbginterrupt)
  60. SAVE_ALL_INT
  61. moveq #-1,%d0
  62. movel %d0,%sp@(PT_OFF_ORIG_D0)
  63. movel %sp,%sp@- /* stack frame pointer argument */
  64. jsr dbginterrupt_c
  65. addql #4,%sp
  66. jra ret_from_exception
  67. #endif
  68. ENTRY(reschedule)
  69. /* save top of frame */
  70. pea %sp@
  71. jbsr set_esp0
  72. addql #4,%sp
  73. pea ret_from_exception
  74. jmp schedule
  75. ENTRY(ret_from_fork)
  76. movel %d1,%sp@-
  77. jsr schedule_tail
  78. addql #4,%sp
  79. jra ret_from_exception
  80. ENTRY(sys_fork)
  81. SAVE_SWITCH_STACK
  82. pea %sp@(SWITCH_STACK_SIZE)
  83. jbsr m68k_fork
  84. addql #4,%sp
  85. RESTORE_SWITCH_STACK
  86. rts
  87. ENTRY(sys_vfork)
  88. SAVE_SWITCH_STACK
  89. pea %sp@(SWITCH_STACK_SIZE)
  90. jbsr m68k_vfork
  91. addql #4,%sp
  92. RESTORE_SWITCH_STACK
  93. rts
  94. ENTRY(sys_clone)
  95. SAVE_SWITCH_STACK
  96. pea %sp@(SWITCH_STACK_SIZE)
  97. jbsr m68k_clone
  98. addql #4,%sp
  99. RESTORE_SWITCH_STACK
  100. rts
  101. ENTRY(sys_sigreturn)
  102. SAVE_SWITCH_STACK
  103. jbsr do_sigreturn
  104. RESTORE_SWITCH_STACK
  105. rts
  106. ENTRY(sys_rt_sigreturn)
  107. SAVE_SWITCH_STACK
  108. jbsr do_rt_sigreturn
  109. RESTORE_SWITCH_STACK
  110. rts
  111. ENTRY(ret_from_user_signal)
  112. moveq #__NR_sigreturn,%d0
  113. trap #0
  114. ENTRY(ret_from_user_rt_signal)
  115. movel #__NR_rt_sigreturn,%d0
  116. trap #0