Thread (5 messages) 5 messages, 4 authors, 2002-07-12

Re: mips32_flush_cache routine corrupts CP0_STATUS with gcc-2.96

From: Ralf Baechle <hidden>
Date: 2002-07-11 15:57:15

Possibly related (same subject, not in this thread)

On Thu, Jul 11, 2002 at 02:06:30PM +0400, Gleb O. Raiko wrote:
quoted
quoted
Unfortunately, it's required by manuals for some processors. As I know,
IDT HW manuals clearly state cache flush routines must operate from
uncached code and must access uncached data only. Examples are R30x1 CPU
series.
Yes, that's true.
But that code belongs in the R30xx specific cache routines, not in the
MIPS32 cache routines.
I don't wonder if other IDT CPUs also require this, including those that
conform MIPS32.
Basically, requirement of uncached run makes hadrware logic much simpler
and allows  to save silicon a bit.
The R3000 cache manipulation mechanism is implemented by giving magic
meaning to store instruction while the isolate cache and swap cache bits
are in use.  By their very implementation they're both incompatible with
normal operation of caches and therefore can only be used from uncached
space.

For most part of it the situation for R4000 class CPUs is easier; a cache
instruction either hits or fails.  The only problem I could imagine an
access conflict in the i-cache when both normal instruction fetch and the
cache instruction are going to operate on the i-cache and that sounds like
a less likely problem to me.

Of course not having read the RTL of all CPUs there is a bit of speculation
here :)

  Ralf
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help