8xx v2.6 TLB problems and suggested workaround

Joakim Tjernlund joakim.tjernlund at lumentis.se
Sat Apr 9 00:29:51 EST 2005

> -----Original Message-----
> From: Dan Malek [mailto:dan at embeddededge.com]
> On Apr 8, 2005, at 4:01 AM, Joakim Tjernlund wrote:
> > I was looking at the DTLB Error excetion(p. 7-15) in the MPC860 User's 
> > Manual. There
> Yeah, well what the manual says and what really happens seems to be
> two different things.

Yep, the manual really sucks sometimes. The manual errata is huge
so it would be more than welcome if Freesacle actually updated the
maunal with the errata items.

> > .... There is also a 8xx specific test with bit 3(0x1000000) in 
> > fault.c but
> > bit 3 is always zero according the MPC860 Manual for a DTLB Error.
> Read the comment.  It really happens.  I spent lots and lots of time 
> sorting
> out how the 8xx works, setting up precise test cases and examining the
> results.  Stop reading the manual too closely and create test cases to
> see what exactly happens.

OK, fine. Just wanted to hear that.

> > Then we end up with bit 1(invalid TLB) and bit 6(store operation) set. 
> > Maybe one
> > could make the DTLB Error handler test if bit 1 is set and then branch 
> > to
> > DataAccess and then deal with the problem in fault.c?
> No.  That is adding even more code to the "normal" path.  The TLB miss
> should simply take a value from memory and load it into the TLB.  
> Nothing
> more.  It should emulate what a hardware implementation would do ...
> eight instructions, no branches, if done properly :-)

I was talking about the TLB Error handler. The TLB Miss handler should be kept as small
as possible.

Any ideas on how to fix the problem Marcelo reported?


> Thanks.
> 	-- Dan

More information about the Linuxppc-embedded mailing list