DaveM pointed out that my 2.4.0-test8-pre1 do_fork patch would generate better sparc assembler if the extra parameter to do_fork was added at the end instead of in the middle. So change all do_fork(flags,sp,0,®s) to do_fork(flags,sp,®s,0); I'm not going to mail the complete patch again, you can get it from ftp://ftp.ocs.com.au/pub/do_fork-2.4.0-test8-take2.gz. The only significant difference is this bit to IA64, untested. Index: 0-test8-pre1.1/arch/ia64/kernel/entry.S --- 0-test8-pre1.1/arch/ia64/kernel/entry.S Tue, 15 Aug 2000 17:50:48 +1000 kaos (linux-2.4/c/c/16_entry.S 1.3.1.1.1.2 644) +++ 0-test8-pre1.2(w)/arch/ia64/kernel/entry.S Sat, 02 Sep 2000 12:49:16 +1100 kaos +(linux-2.4/c/c/16_entry.S 1.3.1.1.1.2 644) @@ -68,8 +68,8 @@ mov loc1=r16 // save ar.pfs across do_fork UNW(.body) mov out1=in1 - mov out2=in2 - adds out3=IA64_SWITCH_STACK_SIZE+16,sp // out3 = ®s + mov out3=in2 + adds out2=IA64_SWITCH_STACK_SIZE+16,sp // out2 = ®s mov out0=in0 // out0 = clone_flags br.call.sptk.few rp=do_fork .ret1: UNW(.restore sp) @@ -87,8 +87,8 @@ mov loc1=r16 // save ar.pfs across do_fork UNW(.body) mov out1=in1 - mov out2=0 - adds out3=IA64_SWITCH_STACK_SIZE+16,sp // out3 = ®s + mov out3=0 + adds out2=IA64_SWITCH_STACK_SIZE+16,sp // out2 = ®s mov out0=in0 // out0 = clone_flags br.call.sptk.few rp=do_fork .ret2: UNW(.restore sp) Index: 0-test8-pre1.1/arch/ia64/ia32/ia32_entry.S --- 0-test8-pre1.1/arch/ia64/ia32/ia32_entry.S Tue, 15 Aug 2000 17:50:48 +1000 kaos (linux-2.4/c/c/25_ia32_entry 1.3.1.1 644) +++ 0-test8-pre1.2(w)/arch/ia64/ia32/ia32_entry.S Sat, 02 Sep 2000 12:49:58 +1100 kaos +(linux-2.4/c/c/25_ia32_entry 1.3.1.1 644) @@ -91,8 +91,8 @@ UNW(.body) mov out1=0 - mov out2=0 - adds out3=IA64_SWITCH_STACK_SIZE+16,sp + mov out3=0 + adds out2=IA64_SWITCH_STACK_SIZE+16,sp // out2 = ®s br.call.sptk.few rp=do_fork .ret3: mov ar.pfs=loc1 UNW(.restore sp) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] Please read the FAQ at http://www.tux.org/lkml/