Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6
[linux-2.6.git] / arch / m68knommu / kernel / entry.S
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
46 ENTRY(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
55 ENTRY(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
67 ENTRY(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
77 ENTRY(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
85 ENTRY(ret_from_fork)
86         movel   %d1,%sp@-
87         jsr     schedule_tail
88         addql   #4,%sp
89         jra     ret_from_exception
90
91 ENTRY(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
99 ENTRY(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
107 ENTRY(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
115 ENTRY(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
123 ENTRY(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
131 ENTRY(sys_sigreturn)
132         SAVE_SWITCH_STACK
133         jbsr    do_sigreturn
134         RESTORE_SWITCH_STACK
135         rts
136
137 ENTRY(sys_rt_sigreturn)
138         SAVE_SWITCH_STACK
139         jbsr    do_rt_sigreturn
140         RESTORE_SWITCH_STACK
141         rts
142
143 ENTRY(ret_from_user_signal)
144         moveq #__NR_sigreturn,%d0
145         trap #0
146
147 ENTRY(ret_from_user_rt_signal)
148         move #__NR_rt_sigreturn,%d0
149         trap #0
150