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 > data. > 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 functions. Ralf