> > It is really surprising to know this. It sounds like a CPU bug to me.
> > some MIPS "gods" clarify if such a behaviour is a bug or allowed?
> > BTW, the CPU in EV96100 is QED RM7000, I believe.
> If you want to be strictly correct you have to execute the code that
> disables caching of KSEG0 in uncached space like KSEG1, then flush the
> caches before you can resume execution in KSEG0. Otherwise you might
> end up with dirty d-caches which when flushed will overwrite more
> uptodate data in memory. The window is very small but yet exists if
> things are just right.
That's one possible failure mode. The other is that there
are dirty lines (those that were brought into the cache and
modified by stores, but never written back to memory) that
are rendered invisible by forcing KSEG0 to go uncached.
This will cause failure of any code that is expecting to see
the results of those stores if said code executes before
some other event causes the write-back - and if the
machine is running with cacheing completely disabled,
as it would be in the case under discussion, such an
event may never occur!