]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] common m68knommu arch entry.S
authorGreg Ungerer <gerg@snapgear.com>
Mon, 13 Jan 2003 13:02:14 +0000 (05:02 -0800)
committerLinus Torvalds <torvalds@home.transmeta.com>
Mon, 13 Jan 2003 13:02:14 +0000 (05:02 -0800)
This patch is the first in a series that groups the common
m68knommu entry.S code into a common entry.S file (this is
instead of having several similar files in lower sub-architecture
directories). The whole idea is to reduce code duplication.

arch/m68knommu/kernel/entry.S [new file with mode: 0644]

diff --git a/arch/m68knommu/kernel/entry.S b/arch/m68knommu/kernel/entry.S
new file mode 100644 (file)
index 0000000..8f22a29
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+ *  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)
+       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
+