Subject: Re: cpufunc.h
To: John Fremlin , <port-arm@netbsd.org>
From: Chris Gilbert <chris@paradox.demon.co.uk>
List: port-arm
Date: 05/27/2001 23:53:46
On Sunday 27 May 2001  6:48 pm, John Fremlin wrote:
> I've converted a few functions in cpufunc.h to inline assembly, as is
> suggested by comments in their implementations. Notably
>
>         GetCPSR
>         SetSPSR
>         get_stackptr
>         set_stackptr
>
> Introduced are three new functions
>
>         __SetCPSR /* Force the CPSR to a certain value */
>         __set_stackptr /* set_stackptr without changing mode */
>         __get_stackptr /* get_stackptr without changing mode */
>
> the first of which is helpful.
>
> Would this patch be accepted? Further, is there any reason cpu_reset
> has to be written in assembly?

I'd probably say yes, get to see the patch first ;)

cpu_reset is probably in asm as it's mostly manipulating mmu stuff, if you 
code a version I can't think of any reason to object though.

note that I'm saying this after having spent 2 days getting my head around 
pmap, and only now starting to get to grips with it's finer details, however 
I see some places that definetly need fixing, eg we call uvm_pagealloc 
without a uvm object or an anon object, (which according to the man page 
isn't allowed :)  And I can see advantages to using a uvm_object for the L2 
page tables, as it means we know we've freed them all up.  I've also been 
staring at how we could map all of the ptes in (ala i386) so that when we 
need to alter a mapping more than once we don't keep remapping it back in.

Anyway enough random pmap mumblings.

Chris