Subject: Re: ARM port organisation (was: Re: NetBSD/hpcarm snap code)
To: None <thorpej@zembu.com>
From: Richard Earnshaw <rearnsha@buzzard.freeserve.co.uk>
List: tech-kern
Date: 02/18/2001 00:08:49
> On Sat, Feb 17, 2001 at 06:47:39PM +0000, Richard Earnshaw wrote:
> 
>  > > Oh, yah, the WinCE hack -- I don't think we want to use that feature
>  > > on the FCS-capable chips.
>  > 
>  > On handhelds (like the Ipaq), this may be exactly what is wanted.  On a 
>  > desktop machine I agree, it's unlikely to be of use because of the 
>  > restrictions it imposes.
> 
> Well, 32M is a pretty small address space -- it's going to affect where
> you put the stack, is certainly going to affect shared libraries, etc.,
> and may constitute a new ABI.
> 
> What would be really nice is if future ARM chips included *real* address
> space IDs (a'la MIPS).

With the normal layout, yes, it would be a tight fit (mainly because the 
normal layout leaves a lot of large holes.

I don't know whether it's possible to achieve the following layout, but if 
we can, and if the processor can cope with a process growing from sub-32M 
to more than that (I haven't read the docs carefully enough to know), then 
the following order might work.

0x00008000  		prog base
top of prog data	shared libs
0x017fffff		stack top
0x01800000		heap base
0x02000000		small-proc limit

this would allow most procs to run within the limit with the proviso that 
the stack does not grow down into the shared libs.  Processes could grow 
their heap to any size provided that they can move from being small to 
large procs.  The cpu can fast context switch from any small proc to any 
other small proc, and only needs a cache flush if either old or new 
process is a large proc.  On the assumption that most processes will not 
be large, this should make cache flushes for this reason quite rare.