blob: 2783f25e38bda453345bfc4994cc0853bb071965 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
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
Linus Torvalds1da177e2005-04-16 15:20:36 -070027#include <linux/sys.h>
28#include <linux/linkage.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070029#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>
Wilson Callan2d7f16d2008-05-01 12:16:28 +100034#include <asm/unistd.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070035
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
Greg Ungererc84b5642009-09-20 21:32:32 +100049 movel %d0,%sp@(PT_OFF_ORIG_D0)
Linus Torvalds1da177e2005-04-16 15:20:36 -070050 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
Greg Ungererc84b5642009-09-20 21:32:32 +100058 movel %d0,%sp@(PT_OFF_ORIG_D0)
Linus Torvalds1da177e2005-04-16 15:20:36 -070059 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
Greg Ungererc84b5642009-09-20 21:32:32 +100070 movel %d0,%sp@(PT_OFF_ORIG_D0)
Linus Torvalds1da177e2005-04-16 15:20:36 -070071 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
Linus Torvalds1da177e2005-04-16 15:20:36 -0700115ENTRY(sys_sigreturn)
116 SAVE_SWITCH_STACK
117 jbsr do_sigreturn
118 RESTORE_SWITCH_STACK
119 rts
120
121ENTRY(sys_rt_sigreturn)
122 SAVE_SWITCH_STACK
123 jbsr do_rt_sigreturn
124 RESTORE_SWITCH_STACK
125 rts
126
Wilson Callan2d7f16d2008-05-01 12:16:28 +1000127ENTRY(ret_from_user_signal)
128 moveq #__NR_sigreturn,%d0
129 trap #0
130
131ENTRY(ret_from_user_rt_signal)
Maxim Kuvyrkov760d6e72009-09-23 01:25:44 +0400132 movel #__NR_rt_sigreturn,%d0
Wilson Callan2d7f16d2008-05-01 12:16:28 +1000133 trap #0
134