On 12-Nov-00 Jan-Benedict Glaw wrote:
> I see this build failure:
>
> sysmips.c: In function `sys_sysmips':
> sysmips.c:109: warning: implicit declaration of function `syscall_trace'
> {standard input}: Assembler messages:
> {standard input}:337: Error: opcode requires -mips2 or greater `ll'
> {standard input}:339: Error: opcode requires -mips2 or greater `sc'
> {standard input}:340: Error: opcode requires -mips2 or greater `beqzl'
> {standard input}:341: Error: opcode requires -mips2 or greater `ll'
Something like
--- snip here ---
diff -ruN /nfs/cvs/linux-2.3/linux/arch/mips/kernel/sysmips.c
linux/arch/mips/kernel/sysmips.c
--- /nfs/cvs/linux-2.3/linux/arch/mips/kernel/sysmips.c Sun Nov 12 16:05:54 2000
+++ linux/arch/mips/kernel/sysmips.c Mon Nov 13 19:35:46 2000
@@ -73,13 +73,16 @@
case MIPS_ATOMIC_SET: {
unsigned int tmp;
-
+#ifndef CONFIG_CPU_HAS_LLSC
+ unsigned long flags;
+#endif
p = (int *) arg1;
errno = verify_area(VERIFY_WRITE, p, sizeof(*p));
if (errno)
return errno;
errno = 0;
+#ifdef CONFIG_CPU_HAS_LLSC
__asm__(".set\tpush\t\t\t# sysmips(MIPS_ATOMIC, ...)\n\t"
".set\tnoreorder\n\t"
".set\tnoat\n\t"
@@ -100,6 +103,12 @@
: "=&r" (tmp), "=o" (* (u32 *) p), "=r" (errno)
: "r" (arg2), "o" (* (u32 *) p), "2" (errno)
: "$1");
+#else
+ save_and_cli(flags);
+ errno |= __get_user(tmp, p);
+ errno |= __put_user(arg2, p);
+ restore_flags(flags);
+#endif
if (errno)
return -EFAULT;
--- snip here ---
should fix this. However, this patch is untested and should be considered as an
RFD. For unknown reasons my R3000 DECstation doesn't grok elf2ecoffed kernels
any more.
--
Regards,
Harald
|