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