Subject: Re: Kernel copyin/out optimizations for ARM...
To: David Laight <david@l8s.co.uk>
From: Reinoud Zandijk <reinoud@netbsd.org>
List: port-arm
Date: 03/16/2002 00:11:19
On Fri, Mar 15, 2002 at 04:07:25PM +0000, David Laight wrote:
> On Fri, Mar 15, 2002 at 10:03:17AM +0000, Richard Earnshaw wrote:
> > > Looks pretty good, though I haven't tried it.
Me neither :-/
> I've done some local optimisations:
> - Removed the swp
> - filled many of the delay slots
> - removed the 16byte align code from kcopy
>
> All 3 routines seem to work as copy routines, but my ARM system
> doesn't run netBSD so I can't test the fault handling.
>
> I have a slight doubt over the copyout code:
> ldmia r0!, {r4, r5, r6, r14}
> strt r4, [r1], #4 /* need user perms here... */
> stmia r1!, {r5, r6, r14} /* ... kernel ones ok here */
> Now r1 is 16 byte aligned so that the strt and stmia are
> guaranteed to be in the same page - so it is basiclaay sound.
One idea though .... shouldn't we use `strt' _ONCE_ every page? i.e. either
the whole page is OK or the whole page is not .... doing it multiple times
is a bit silly....
> Anyway new file on www.l8s.co.uk then netbsd/bcopyinout.S
Dunno if i try them soon :) but i've just fixed a nasty ARM 6/7 specific
problem ... an instruction that couldn't be fixed up in f.e. the late abort
handler would _allways_ panic the kernel ... even when the instruction was
in userland :( ... appears to have been the case since 1994 when Mark
Brinicombe started on it ...
Cheers,
Reinoud