I've taken a second look at the cache flushing, and think maybe this is
a better way to fix what I see as the major problems.
Attached is a patch which does the following:
* Removes __flush_cache_all()
* Adds writeback_inv_dcache_all() and writeback_inv_dcache_range().
these functions force the flushing of the dcache, as opposed to the
flush_cache_* functions, which only flush if needed for coherence.
* Adds better documentation to the function declarations in pgtable.h
* Fixes up gdb-stub.c to use this interface
* Actually implements the more agressive semantics for the cacheflush
system call
* Fixes up the old sysmips system call to use this interface
I've only implemented the actual new routines for the sb1; I'd like to
solicit some feedback as to what other people think of this approach
before taking the plunge to other implementations. Note this patch is
not tested beyond compilability; if people like this approach I'll flesh
it out and resubmit something tested.
Comments?
-Justin
cacheflush.patch
Description: Text document
|