On Mon Nov 08 2010 at 21:40:49 +0000, David Holland wrote:
On Mon, Nov 08, 2010 at 06:09:39PM +0000, Antti Kantee wrote:
> Modified Files:
> src/sys/arch/mips/mips: locore_mips1.S
>
> Log Message:
> In TLBRead, restore PID before doing the saves so that the caller's
> TLB entries are used instead of the PID given as the argument.
>
> from Alessandro Forin
This doesn't make any sense.
As far as I can tell, the real problem is that the code is not
attending to pipeline hazards properly; moving things around until it
experimentally seems to work is just going to create other odd
behavior sometime down the line under different timing circumstances.
I don't have a mips1-specific reference on hand, but my recollection
is that you need *three* nops when messing with cop0 registers for all
effects to flush through.
locore_mips1.S doesn't agree with your recollection, e.g. mips1_TLBUpdate
right above mips1_TLBRead.