linux-mips
[Top] [All Lists]

__flush_cache_all() miscellany

To: linux-mips@oss.sgi.com
Subject: __flush_cache_all() miscellany
From: "Justin Carlson" <justinca@cs.cmu.edu>
Date: 29 May 2002 09:50:52 -0700
Sender: owner-linux-mips@oss.sgi.com
Looking at the cache routines, I've noticed that there's been a
relatively recent introduction of a __flush_cache_all() routine. 
Looking at oss.sgi.com's cvs logs, I see this comment:

>Introduce __flush_cache_all() which flushes the cache no matter if
>this operation is necessary from the mm point of view or not.

Some questions:

Which caches does this apply to?  It looks like the current
implementations assume L1 only.

Would anyone have a problem with renaming this function?  To me, at
least, it's rather confusing to have all of:

flush_cache_all()
_flush_cache_all()
__flush_cache_all()
___flush_cache_all()

defined, especially when the latter two mean something significantly
different from the former two.  I'd prefer calling the new one
{_}force_flush_l1_caches() or somesuch.

In a related note, one of the few places this routine is called is the
kgdb stub routines (in arch/mips/kernel/gdb-stub.c):

void set_async_breakpoint(unsigned int epc)
{
        int cpu = smp_processor_id();

        async_bp[cpu].addr = epc;
        async_bp[cpu].val  = *(unsigned *)epc;
        *(unsigned *)epc = BP;
        __flush_cache_all();
}

Shouldn't that be a flush_icache_range() call anyways?

Thanks,
  Justin



<Prev in Thread] Current Thread [Next in Thread>