On Tue, 10 Aug 2004, Kumba wrote: > > Date: Tue, 10 Aug 2004 04:30:00 -0400 > > From: Kumba > > To: Peter Fuerst > > Subject: Re: IP28 Patch > > > > ... > > As far as I can tell, all the trap errors occured at line 541 in > > do_pipe, and line 594 in d_alloc every time. All also reference > > register $13 everytime. ... The trap routine just looks into $13 only, because this was the only register in the memcpy Oops, that contained the invalid address, and i wanted to find out, how it got there. I only asked about the line number 541, to make sure, that the trap occurs at the same statement in my kernel version and yours. Namely, immediately after the sprintf, but before the trap-call preceding the d_alloc call. If so, since the second trap (545) is not reached, either the trap aborts the current (user) process (but your build goes on unimpressed ?), or the register is clean again at the 2nd trap. I guess, you can abolish the traps again. Probably a8000000a0503dee and the like are created in vsprintf, but how it comes to $13 or causes an Oops many instructions later (in memcpy) likely will remain a mystery... Currently i'm inspecting the *.S sources to insert the needed barriers (it's a pity to clutter these handcrafted, optimized code with cache barriers, but there seems no way around :-(), I'll let you know, when it is done. with kind regards pf