On Wed, 11 Jul 2001, John D. Davis wrote: > I have been able to natively build kernels 2.4.0,2,3,4,5 on an Indy with > without the CD-ROM support. I have only been able to boot 2.4.2 and 2.4.3. > Previously, I was running 2.4.0-test9. 2.4.4 and 5 have ext2_fs inode > problems. 2.4.0 hangs at cleaning the /tmp directory. > > Extracting tar files causes an illegal instruction on 2.4.2 and 3. Is > there a patch for this. Furthermore, are there patches available for all > the various kernel versions and how do I get them for each version of the > kernel. Finally, I have read some email on stress tests. Are those > publicly available? Hi, the illigal instruction problem is known and a workaround has been implemented by several ppl. Personally I'm using the patch which lolo made (I have attached it to this mail). It should apply cleanly against any 2.4.x kernel. About the stress tests I don't know ... CU, Klaus -- Full Name : Klaus Naumann | (http://www.mgnet.de/) (Germany) Nickname : Spock | Org.: Mad Guys Network Phone / FAX : ++49/177/7862964 | E-Mail: (spock@mgnet.de) PGP Key : www.mgnet.de/keys/key_spock.txt
diff -Nur linux.orig/arch/mips/kernel/Makefile linux/arch/mips/kernel/Makefile --- linux.orig/arch/mips/kernel/Makefile Mon Apr 9 00:23:08 2001 +++ linux/arch/mips/kernel/Makefile Mon Apr 9 00:23:34 2001 @@ -20,7 +20,7 @@ obj-y += branch.o process.o signal.o entry.o \ traps.o ptrace.o vm86.o ioport.o reset.o \ semaphore.o setup.o syscall.o sysmips.o \ - ipc.o scall_o32.o unaligned.o + ipc.o scall_o32.o unaligned.o fast-sysmips.o obj-$(CONFIG_MODULES) += mips_ksyms.o ifdef CONFIG_CPU_R3000 @@ -69,5 +69,6 @@ entry.o: entry.S head.o: head.S +fast-sysmips.o: fast-sysmips.S include $(TOPDIR)/Rules.make diff -Nur linux.orig/arch/mips/kernel/fast-sysmips.S linux/arch/mips/kernel/fast-sysmips.S --- linux.orig/arch/mips/kernel/fast-sysmips.S Thu Jan 1 01:00:00 1970 +++ linux/arch/mips/kernel/fast-sysmips.S Mon Apr 9 00:28:20 2001 @@ -0,0 +1,85 @@ +/* + * MIPS_ATOMIC_SET asm implementation for ll/sc capable cpus + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 2001 Florian Lohoff <flo@rfc822.org> + * + */ +#include <asm/asm.h> +#include <asm/mipsregs.h> +#include <asm/regdef.h> +#include <asm/stackframe.h> +#include <asm/isadep.h> +#include <asm/unistd.h> +#include <asm/sysmips.h> +#include <asm/offset.h> +#include <asm/errno.h> + +#define PT_TRACESYS 0x00000002 + + EXPORT(fast_sysmips) + + .set noreorder + + li t0, MIPS_ATOMIC_SET + beq a0, t0, 1f + nop + j sys_sysmips + nop + +1: + + # a0 - MIPS_ATOMIC_SET + # a1 - mem ptr + # a2 - value + + addiu sp, sp, -8 # Reserve space + sw a0, (sp) # Save arg0 + + addiu a0, a1, 4 # addr+size + ori v0, a1, 4 # addr | size + lw v1, THREAD_CURDS(gp) # current->thread.current_ds + or v0, v0, a0 # addr | size | (addr+size) + and v1, v1, v0 # (mask)&(addr | size | (addr+size) + bltz v1, 5f + nop + +2: + ll v0, (a1) + move t0, a2 + sc t0, (a1) + beqz t0, 2b + nop + + sw v0, PT_R2+8(sp) # Result value + sw zero, PT_R7+8(sp) # Success indicator + + lw t0, TASK_PTRACE(gp) # syscall tracing enabled? + andi t0, PT_TRACESYS + bnez t0, 3f + nop + +4: + lw a0, (sp) # Restore arg0 + addiu sp, sp, 8 # Restore sp + + j o32_ret_from_sys_call + nop + +3: + sw ra, 4(sp) + jal syscall_trace + nop + lw ra, 4(sp) + j 4b + nop + +5: + lw a0, (sp) # Restore arg0 + addiu sp, sp, 8 # Restore sp + j ra + li v0, -EFAULT + diff -Nur linux.orig/arch/mips/kernel/irix5sys.h linux/arch/mips/kernel/irix5sys.h --- linux.orig/arch/mips/kernel/irix5sys.h Mon Apr 9 00:16:29 2001 +++ linux/arch/mips/kernel/irix5sys.h Sun Apr 8 21:21:16 2001 @@ -69,7 +69,7 @@ SYS(irix_getgid, 0) /* 1047 getgid() V*/ SYS(irix_unimp, 0) /* 1048 (XXX IRIX 4 ssig) V*/ SYS(irix_msgsys, 6) /* 1049 sys_msgsys V*/ -SYS(sys_sysmips, 4) /* 1050 sysmips() HV*/ +SYS(fast_sysmips, 4) /* 1050 sysmips() HV*/ SYS(irix_unimp, 0) /* 1051 XXX sysacct() IV*/ SYS(irix_shmsys, 5) /* 1052 sys_shmsys V*/ SYS(irix_semsys, 0) /* 1053 sys_semsys V*/ diff -Nur linux.orig/arch/mips/kernel/syscalls.h linux/arch/mips/kernel/syscalls.h --- linux.orig/arch/mips/kernel/syscalls.h Mon Apr 9 00:16:30 2001 +++ linux/arch/mips/kernel/syscalls.h Sun Apr 8 21:21:43 2001 @@ -163,7 +163,7 @@ SYS(sys_writev, 3) SYS(sys_cacheflush, 3) SYS(sys_cachectl, 3) -SYS(sys_sysmips, 4) +SYS(fast_sysmips, 4) SYS(sys_ni_syscall, 0) /* 4150 */ SYS(sys_getsid, 1) SYS(sys_fdatasync, 0)