- Reinstall the "dynamic page table length" that was removed some
years ago.
- Limit the user page table submap to max 5% of available memory.
- Free the page table space when a process is swapped out.
- If the UPT submap runs out of space, throw away pmap mappings
using the same algorithm as for swapping processes.
As a result of this, 4MB machines are useable again and it's even possible
to compile a kernel for 2MB machines (but it will be slow... :-)
Still to do:
- Multiprocessor fixes.
- More profiling.
tell nothing in the acorn32 port was using this version of
MEMORY_DISK_SIZE but I've left the code here incase the portmaster
wants it.
* rename MINIROOTSIZE to MEMORY_DISK_SIZE, so that all md(4) options
are consistently named
* fold opt_mdsize.h into opt_md.h
look for a block of free virtual memory big enough to hold all sections. The
blocks starts at the beginning of the first section and ends at the end of
the last section. In the previous version the block ended at the beginning
of the last section, hence creating situations where there was not enough
free space to map the section.
even bother probing for an FPA. If ARMFPE is configured, always use it,
even if there's an FPA (since it provides the FPA support code). Move all
printfs about FPAs into armfpe_init.c.
This means I can delete the last two elements from struct _cpu, so that the
structure, and the whole of <arm/cpus.h> is redundant and can be deleted.
if we actually need them for 80/128-bit support.
I'm not sure this is Right, but I suspect the #ifdefs around here need
revising to handle sparc64 nicely anyway. Still, it compiles on ARM again
now.
for the registers, which was true, but actually the same as the driver
did without this option.
What it realy did is work around a stupid bug in the driver that did not
use the "offset" result from the pcmcia_mem_map call mapping the CIS memory.
We got away with this for a long time since on i386 and typical pcmcia
bridged the offset returned will be 0. It always failed (without
RAY_USE_AMEM=1) if the check for a different function CCR aliases in pcmcia.c
failed and mapped the CCR base new - this time at the CCR base of this
function (0xf00), so all register acceses (that had 0xf00 added) happened
way off in neverland.
Now we do not hardcode the CCR base to the register definitions, but
instead use the offset returned by pcmcia_mem_map. This makes the driver
work with and without CCR base aliases being found.