> On Wed, Jan 08, 2003 at 02:27:05PM +0100, Maciej W. Rozycki wrote:
> > 32-bit R4k TLB flush functions use KSEG0 as an impossible (unmapped) VPN2
> > value for invalidated TLB entries. 64-bit ones use KSEG0 as well, but
> > here KSEG0 is a valid XKSEG (mapped) value as it gets interpreted as
> > 0xc00000ff80000000 when written into cp0.EntryHi. The correct impossible
> > (unmapped) VPN2 value for the 64-bit mode is XKPHYS.
> That's a funny one. Historically the idea was to use KSEG0 because the
> for KSEG0 the TLB is not used for translation. That already failed for
> the Sibyte SB1 which is why we have to use different KSEG0 addresses for
> each entry there.
Amplification: some MIPS CPUs really hate having the same "virtual
address" in more than one TLB entry. Some of MIPS Technologies' own
cores are the same.
It's probably better to use legal kuseg virtual addresses (but with
the invalid bit set) for initialising TLBs. And to make them all