Exactly that I need, but I don't think it is implemented properly for mips.
It simply flushes all the caches, no matter what options you gives it.
Ralf Baechle wrote:
> On Mon, Jan 08, 2001 at 05:23:20PM +0100, Carsten Langgaard wrote:
> > What we need is a mechanism to partial invalidate the I-cache and a
> > mechanism
> > to write-back and/or invalidate the D-cache.
> There is this nice little man page which should even be installed on your
> Linux/Inhell box:
> CACHEFLUSH(2) Linux Programmer's Manual CACHEFLUSH(2)
> cacheflush - flush contents of instruction and/or data
> #include <asm/cachectl.h>
> int cacheflush(char *addr, int nbytes, int cache);
> cacheflush flushes contents of indicated cache(s) for user
> addresses in the range addr to (addr+nbytes-1). Cache may
> be one of:
> ICACHE Flush the instruction cache.
> DCACHE Write back to memory and invalidate the affected
> valid cache lines.
> BCACHE Same as (ICACHE|DCACHE).
> RETURN VALUE
> cacheflush returns 0 on success or -1 on error. If errors
> are detected, errno will indicate the error.
> EINVAL cache parameter is not one of ICACHE, DCACHE, or
> EFAULT Some or all of the address range addr to
> (addr+nbytes-1) is not accessible.
> The current implementation ignores the addr and nbytes
> parameters. Therefore always the whole cache is flushed.
> This system call is only available on MIPS based systems.
> It should not be used in programs intended to be portable.
> Linux 2.0.32 27 June 95 1
_ _ ____ ___ Carsten Langgaard Mailto:firstname.lastname@example.org
|\ /|||___)(___ MIPS Denmark Direct: +45 4486 5527
| \/ ||| ____) Lautrupvang 4B Switch: +45 4486 5555
TECHNOLOGIES 2750 Ballerup Fax...: +45 4486 5556