| /* | |
| * linux/arch/m68knommu/kernel/entry.S | |
| * | |
| * Copyright (C) 1999-2002, Greg Ungerer (gerg@snapgear.com) | |
| * Copyright (C) 1998 D. Jeff Dionne <jeff@lineo.ca>, | |
| * Kenneth Albanowski <kjahds@kjahds.com>, | |
| * Copyright (C) 2000 Lineo Inc. (www.lineo.com) | |
| * | |
| * Based on: | |
| * | |
| * linux/arch/m68k/kernel/entry.S | |
| * | |
| * Copyright (C) 1991, 1992 Linus Torvalds | |
| * | |
| * This file is subject to the terms and conditions of the GNU General Public | |
| * License. See the file README.legal in the main directory of this archive | |
| * for more details. | |
| * | |
| * Linux/m68k support by Hamish Macdonald | |
| * | |
| * 68060 fixes by Jesper Skov | |
| * ColdFire support by Greg Ungerer (gerg@snapgear.com) | |
| * 5307 fixes by David W. Miller | |
| * linux 2.4 support David McCullough <davidm@snapgear.com> | |
| */ | |
| #include <linux/config.h> | |
| #include <linux/sys.h> | |
| #include <linux/linkage.h> | |
| #include <asm/thread_info.h> | |
| #include <asm/errno.h> | |
| #include <asm/setup.h> | |
| #include <asm/segment.h> | |
| #include <asm/asm-offsets.h> | |
| #include <asm/entry.h> | |
| .text | |
| .globl buserr | |
| .globl trap | |
| .globl ret_from_exception | |
| .globl ret_from_signal | |
| .globl sys_fork | |
| .globl sys_clone | |
| .globl sys_vfork | |
| ENTRY(buserr) | |
| SAVE_ALL | |
| moveq #-1,%d0 | |
| movel %d0,%sp@(LORIG_D0) | |
| movel %sp,%sp@- /* stack frame pointer argument */ | |
| jsr buserr_c | |
| addql #4,%sp | |
| jra ret_from_exception | |
| ENTRY(trap) | |
| SAVE_ALL | |
| moveq #-1,%d0 | |
| movel %d0,%sp@(LORIG_D0) | |
| movel %sp,%sp@- /* stack frame pointer argument */ | |
| jsr trap_c | |
| addql #4,%sp | |
| jra ret_from_exception | |
| #ifdef TRAP_DBG_INTERRUPT | |
| .globl dbginterrupt | |
| ENTRY(dbginterrupt) | |
| SAVE_ALL | |
| moveq #-1,%d0 | |
| movel %d0,%sp@(LORIG_D0) | |
| movel %sp,%sp@- /* stack frame pointer argument */ | |
| jsr dbginterrupt_c | |
| addql #4,%sp | |
| jra ret_from_exception | |
| #endif | |
| ENTRY(reschedule) | |
| /* save top of frame */ | |
| pea %sp@ | |
| jbsr set_esp0 | |
| addql #4,%sp | |
| pea ret_from_exception | |
| jmp schedule | |
| ENTRY(ret_from_fork) | |
| movel %d1,%sp@- | |
| jsr schedule_tail | |
| addql #4,%sp | |
| jra ret_from_exception | |
| ENTRY(sys_fork) | |
| SAVE_SWITCH_STACK | |
| pea %sp@(SWITCH_STACK_SIZE) | |
| jbsr m68k_fork | |
| addql #4,%sp | |
| RESTORE_SWITCH_STACK | |
| rts | |
| ENTRY(sys_vfork) | |
| SAVE_SWITCH_STACK | |
| pea %sp@(SWITCH_STACK_SIZE) | |
| jbsr m68k_vfork | |
| addql #4,%sp | |
| RESTORE_SWITCH_STACK | |
| rts | |
| ENTRY(sys_clone) | |
| SAVE_SWITCH_STACK | |
| pea %sp@(SWITCH_STACK_SIZE) | |
| jbsr m68k_clone | |
| addql #4,%sp | |
| RESTORE_SWITCH_STACK | |
| rts | |
| ENTRY(sys_sigsuspend) | |
| SAVE_SWITCH_STACK | |
| pea %sp@(SWITCH_STACK_SIZE) | |
| jbsr do_sigsuspend | |
| addql #4,%sp | |
| RESTORE_SWITCH_STACK | |
| rts | |
| ENTRY(sys_rt_sigsuspend) | |
| SAVE_SWITCH_STACK | |
| pea %sp@(SWITCH_STACK_SIZE) | |
| jbsr do_rt_sigsuspend | |
| addql #4,%sp | |
| RESTORE_SWITCH_STACK | |
| rts | |
| ENTRY(sys_sigreturn) | |
| SAVE_SWITCH_STACK | |
| jbsr do_sigreturn | |
| RESTORE_SWITCH_STACK | |
| rts | |
| ENTRY(sys_rt_sigreturn) | |
| SAVE_SWITCH_STACK | |
| jbsr do_rt_sigreturn | |
| RESTORE_SWITCH_STACK | |
| rts | |