On Mon, Oct 17, 2011 at 07:36:11PM +0800, loody wrote:
> Dear all:
> I have some questions about local_flush_tlb_one.
> 1. what will happen if I use local_flush_tlb_one to flush a page that
> doesn't exist in translation lookaside buffer entries.
> The index return by read_c0_index(), should be negative.
> but this function seems not handle the case that idx < 0.
> 2. as I know, translation lookaside buffer is a place to keep record
> the memory mapping, it doesn't like cache have place to store the
> a. If the entry is cacheable, what we only to do is flush the cache?
> b. if the entry is uncached, there is nothing to do?
> if above b is correct, what will happen if we have an entry that is
> uncached and dirty?
If c0_index contains a value < 0 (or rather one with bit 31 set) then
there is nothing that needs to be flushed.
Note that MIPS D-cache (I-caches don't get written back so are not of
concern) are tagged with a physical address so cache handling is no
consideration for local_flush_tlb_one or any of the other TLB flush