13 #include <linux/errno.h>
14 #include <linux/module.h>
15 #include <linux/sched.h>
16 #include <linux/kernel.h>
18 #include <linux/slab.h>
21 #include <linux/stddef.h>
23 #include <linux/ptrace.h>
25 #include <linux/reboot.h>
30 #include <asm/uaccess.h>
31 #include <asm/traps.h>
32 #include <asm/machdep.h>
33 #include <asm/setup.h>
34 #include <asm/pgtable.h>
49 return ((
unsigned long *)sw->
a6)[1];
60 #if defined(MACH_ATARI_ONLY)
62 __asm__(
"stop #0x2200" : : :
"cc");
64 __asm__(
"stop #0x2000" : : :
"cc");
81 while (!need_resched())
115 printk(
"Format %02x Vector: %04x PC: %08lx Status: %04x %s\n",
117 printk(
"ORIG_D0: %08lx D0: %08lx A2: %08lx A1: %08lx\n",
119 printk(
"A0: %08lx D5: %08lx D4: %08lx\n",
120 regs->
a0, regs->
d5, regs->
d4);
121 printk(
"D3: %08lx D2: %08lx D1: %08lx\n",
122 regs->
d3, regs->
d2, regs->
d1);
124 printk(
"USP: %08lx\n", rdusp());
132 unsigned long zero = 0;
133 asm volatile(
"frestore %0": :
"m" (
zero));
162 unsigned long clone_flags;
164 int __user *parent_tidptr, *child_tidptr;
167 clone_flags = regs->
d1;
169 parent_tidptr = (
int __user *)regs->
d3;
170 child_tidptr = (
int __user *)regs->
d4;
173 return do_fork(clone_flags, newsp, regs, 0,
174 parent_tidptr, child_tidptr);
202 childstack->
a3 = usp;
203 childstack->
d7 =
arg;
220 asm volatile (
"fsave %0" : :
"m" (p->
thread.fpstate[0]) :
"memory");
224 asm volatile (
"fmovemd %/fp0-%/fp7,%0\n\t"
225 "fmovel %/fpiar,%1\n\t"
226 "fmovel %/fpcr,%2\n\t"
230 "m" (p->
thread.fpcntl[0]),
231 "m" (p->
thread.fpcntl[1]),
235 asm volatile (
"fmovemx %/fp0-%/fp7,%0\n\t"
236 "fmoveml %/fpiar/%/fpcr/%/fpsr,%1"
245 asm volatile (
"frestore %0" : :
"m" (p->
thread.fpstate[0]));
266 for (i = 0; i < 24; i += 3)
267 fpu->
fpregs[i] = ((fpu->
fpregs[i] & 0xffff0000) << 15) |
268 ((fpu->
fpregs[
i] & 0x0000ffff) << 16);
273 asm volatile (
"fsave %0" ::
"m" (fpustate[0]) :
"memory");
274 if (!
CPU_IS_060 ? !fpustate[0] : !fpustate[2])
278 asm volatile (
"fmovel %/fpiar,%0\n\t"
279 "fmovel %/fpcr,%1\n\t"
280 "fmovel %/fpsr,%2\n\t"
281 "fmovemd %/fp0-%/fp7,%3"
289 asm volatile (
"fmovem %/fpiar/%/fpcr/%/fpsr,%0"
293 asm volatile (
"fmovemx %/fp0-%/fp7,%0"
306 unsigned long fp,
pc;
307 unsigned long stack_page;
316 fp >= 8184+stack_page)
318 pc = ((
unsigned long *)fp)[1];
321 fp = *(
unsigned long *) fp;
322 }
while (count++ < 16);