Thread (51 messages) flat view 51 messages, 4 authors, 2003-05-09

RE: dcbz works on 862 everywhere!

From: Joakim Tjernlund <hidden>
Date: 2003-03-24 12:25:45

Hi list

I have been researching why I can't use dcbz and friends on 8xx CPU.
Till Strauman found out long ago that the dcxx instuctions did not update
the DAR register and that was the key I needed.

After a lot of testing/reading I found a 2 instruction workaround
that lets me use dcbz in copy_tofrom_user().
I can also used dcbz in a user space app without problems. I even
removed the TLB change bit hack by Tom Rini and everything works.

By copying the MD_EPN register to the DAR register in the DTLB Miss handler
just before MD_RPN is written everything just works. The only explanation that
makes sense to me is that the MD_RPN has a undocumented dependency to the DAR
register, the 20 msb of MD_EPN and DAR needs to be the same before MD_RPN is written.
hmm, this is not quite correct. I can copy MD_EPN to DAR after the write to MD_RPN
and it still works. Seems like DAR must be correct when rfi is executed. I wonder
why?

 Jocke


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help