blob: 1b4289061a64a6ea261e2bce71eed7f2fb573e87 [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/linkage.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070028#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>
Wilson Callan2d7f16d2008-05-01 12:16:28 +100033#include <asm/unistd.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070034
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)
Greg Ungerer61619b12011-06-22 13:50:44 +100046 SAVE_ALL_INT
Linus Torvalds1da177e2005-04-16 15:20:36 -070047 moveq #-1,%d0
Greg Ungererc84b5642009-09-20 21:32:32 +100048 movel %d0,%sp@(PT_OFF_ORIG_D0)
Linus Torvalds1da177e2005-04-16 15:20:36 -070049 movel %sp,%sp@- /* stack frame pointer argument */
50 jsr buserr_c
51 addql #4,%sp
52 jra ret_from_exception
53
54ENTRY(trap)
Greg Ungerer61619b12011-06-22 13:50:44 +100055 SAVE_ALL_INT
Linus Torvalds1da177e2005-04-16 15:20:36 -070056 moveq #-1,%d0
Greg Ungererc84b5642009-09-20 21:32:32 +100057 movel %d0,%sp@(PT_OFF_ORIG_D0)
Linus Torvalds1da177e2005-04-16 15:20:36 -070058 movel %sp,%sp@- /* stack frame pointer argument */
59 jsr trap_c
60 addql #4,%sp
61 jra ret_from_exception
62
63#ifdef TRAP_DBG_INTERRUPT
64
65.globl dbginterrupt
66ENTRY(dbginterrupt)
Greg Ungerer61619b12011-06-22 13:50:44 +100067 SAVE_ALL_INT
Linus Torvalds1da177e2005-04-16 15:20:36 -070068 moveq #-1,%d0
Greg Ungererc84b5642009-09-20 21:32:32 +100069 movel %d0,%sp@(PT_OFF_ORIG_D0)
Linus Torvalds1da177e2005-04-16 15:20:36 -070070 movel %sp,%sp@- /* stack frame pointer argument */
71 jsr dbginterrupt_c
72 addql #4,%sp
73 jra ret_from_exception
74#endif
75
76ENTRY(reschedule)
77 /* save top of frame */
78 pea %sp@
79 jbsr set_esp0
80 addql #4,%sp
81 pea ret_from_exception
82 jmp schedule
83
84ENTRY(ret_from_fork)
85 movel %d1,%sp@-
86 jsr schedule_tail
87 addql #4,%sp
88 jra ret_from_exception
89
90ENTRY(sys_fork)
91 SAVE_SWITCH_STACK
92 pea %sp@(SWITCH_STACK_SIZE)
93 jbsr m68k_fork
94 addql #4,%sp
95 RESTORE_SWITCH_STACK
96 rts
97
98ENTRY(sys_vfork)
99 SAVE_SWITCH_STACK
100 pea %sp@(SWITCH_STACK_SIZE)
101 jbsr m68k_vfork
102 addql #4,%sp
103 RESTORE_SWITCH_STACK
104 rts
105
106ENTRY(sys_clone)
107 SAVE_SWITCH_STACK
108 pea %sp@(SWITCH_STACK_SIZE)
109 jbsr m68k_clone
110 addql #4,%sp
111 RESTORE_SWITCH_STACK
112 rts
113
Linus Torvalds1da177e2005-04-16 15:20:36 -0700114ENTRY(sys_sigreturn)
115 SAVE_SWITCH_STACK
116 jbsr do_sigreturn
117 RESTORE_SWITCH_STACK
118 rts
119
120ENTRY(sys_rt_sigreturn)
121 SAVE_SWITCH_STACK
122 jbsr do_rt_sigreturn
123 RESTORE_SWITCH_STACK
124 rts
125
Wilson Callan2d7f16d2008-05-01 12:16:28 +1000126ENTRY(ret_from_user_signal)
127 moveq #__NR_sigreturn,%d0
128 trap #0
129
130ENTRY(ret_from_user_rt_signal)
Maxim Kuvyrkov760d6e72009-09-23 01:25:44 +0400131 movel #__NR_rt_sigreturn,%d0
Wilson Callan2d7f16d2008-05-01 12:16:28 +1000132 trap #0
133