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 27#include <linux/sys.h> 28#include <linux/linkage.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#include <asm/unistd.h> 35 36.text 37 38.globl buserr 39.globl trap 40.globl ret_from_exception 41.globl ret_from_signal 42.globl sys_fork 43.globl sys_clone 44.globl sys_vfork 45 46ENTRY(buserr) 47 SAVE_ALL 48 moveq #-1,%d0 49 movel %d0,%sp@(PT_OFF_ORIG_D0) 50 movel %sp,%sp@- /* stack frame pointer argument */ 51 jsr buserr_c 52 addql #4,%sp 53 jra ret_from_exception 54 55ENTRY(trap) 56 SAVE_ALL 57 moveq #-1,%d0 58 movel %d0,%sp@(PT_OFF_ORIG_D0) 59 movel %sp,%sp@- /* stack frame pointer argument */ 60 jsr trap_c 61 addql #4,%sp 62 jra ret_from_exception 63 64#ifdef TRAP_DBG_INTERRUPT 65 66.globl dbginterrupt 67ENTRY(dbginterrupt) 68 SAVE_ALL 69 moveq #-1,%d0 70 movel %d0,%sp@(PT_OFF_ORIG_D0) 71 movel %sp,%sp@- /* stack frame pointer argument */ 72 jsr dbginterrupt_c 73 addql #4,%sp 74 jra ret_from_exception 75#endif 76 77ENTRY(reschedule) 78 /* save top of frame */ 79 pea %sp@ 80 jbsr set_esp0 81 addql #4,%sp 82 pea ret_from_exception 83 jmp schedule 84 85ENTRY(ret_from_fork) 86 movel %d1,%sp@- 87 jsr schedule_tail 88 addql #4,%sp 89 jra ret_from_exception 90 91ENTRY(sys_fork) 92 SAVE_SWITCH_STACK 93 pea %sp@(SWITCH_STACK_SIZE) 94 jbsr m68k_fork 95 addql #4,%sp 96 RESTORE_SWITCH_STACK 97 rts 98 99ENTRY(sys_vfork) 100 SAVE_SWITCH_STACK 101 pea %sp@(SWITCH_STACK_SIZE) 102 jbsr m68k_vfork 103 addql #4,%sp 104 RESTORE_SWITCH_STACK 105 rts 106 107ENTRY(sys_clone) 108 SAVE_SWITCH_STACK 109 pea %sp@(SWITCH_STACK_SIZE) 110 jbsr m68k_clone 111 addql #4,%sp 112 RESTORE_SWITCH_STACK 113 rts 114 115ENTRY(sys_sigsuspend) 116 SAVE_SWITCH_STACK 117 pea %sp@(SWITCH_STACK_SIZE) 118 jbsr do_sigsuspend 119 addql #4,%sp 120 RESTORE_SWITCH_STACK 121 rts 122 123ENTRY(sys_rt_sigsuspend) 124 SAVE_SWITCH_STACK 125 pea %sp@(SWITCH_STACK_SIZE) 126 jbsr do_rt_sigsuspend 127 addql #4,%sp 128 RESTORE_SWITCH_STACK 129 rts 130 131ENTRY(sys_sigreturn) 132 SAVE_SWITCH_STACK 133 jbsr do_sigreturn 134 RESTORE_SWITCH_STACK 135 rts 136 137ENTRY(sys_rt_sigreturn) 138 SAVE_SWITCH_STACK 139 jbsr do_rt_sigreturn 140 RESTORE_SWITCH_STACK 141 rts 142 143ENTRY(ret_from_user_signal) 144 moveq #__NR_sigreturn,%d0 145 trap #0 146 147ENTRY(ret_from_user_rt_signal) 148 movel #__NR_rt_sigreturn,%d0 149 trap #0 150