Subject: Re: flushing write buffer
To: None <simonb@NetBSD.ORG>
From: Toru Nishimura <nisimura@itc.aist-nara.ac.jp>
List: port-mips
Date: 03/28/2000 17:10:52
The intent of my Q was to replace mips1_wbflush() routine found in
locore_mips1.S with one which do 'standard thing' in general cases.

>        you can ensure
>        that the write buffer is empty by performing an uncached load
>        from anywhere (which will stall the CPU until the writes have
>        finished and the load has finished too).  This is inefficient;
>        you can minimize the overhead by loading from the fastest memory
>        available to you.

So, isn't it ok to provide generic but possibly less-optimal default;

	LEAF(mips1_wbflush)
		lui	v0, 0x8000
		lw	v0, 0(v0)
		j	ra
		nop
		END(mips1_wbflush)

For R3000A-or-later model only ports, it'd be nice to have #define for
__asm __volatile making sure KSEG1 load.

>        For those who never want to think about it again, a write
>        to memory followed by an uncached read from the same address
>        (with a `sync' in between the two if you're running on a MIPS
>        III or later CPU) will flush out the write FIFO on any MIPS CPU
>        built to date

Does it mean there is a handy improvement of bus_space_write_N()?

Tohru Nishimura