[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: working xfree86 4.1.0?



On Sat, Jan 19, 2002 at 03:03:15PM +0100, Richard Zidlicky wrote:
> the cacheflush syscall has been changed to work "reasonably"(*), ie if you
> tell it to flush more than 3 pages using cache line flush it will use page
> flush instead. Of course if the program does 2000 little lineflushes
> that won't help, you get terrible performance.

The other architectures cache flushing code is called for every relocation,
so that would indeed amount to lots of little lineflushes. But how is the 
length argument defined? Is it the number of lines for line flush, the
number of pages for page flush?

> You can't flush caches section-wise on m68k but you can do a full cache 
> flush - sys_cacheflush does it if you specifiy size more than 10 pagesizes
> (you still need to supply a legal address for this).
> 
> My 060 manual lists these times:
> 	CPUSHL  <= 26 
> 	CPUSHP  <= 2838
> 	CPUSHA  == 5394
> 
> for a single syscall add ~300 cycles (060 again). The full flush has the
> additional cost that everything has to be fetched again into cache and 
> interrupts are disabled for 5400 clock cycles (would it be worth 
> changing that?).
> So I would say if you flush more than 15-20 entries go for the full flush.

How do I know how much entries I'm flushing? I only have a virtual address
and the size of the section I just relocated.

Kars.



Reply to: