[OpenBIOS] Reducing OpenBIOS memory footprint
mark.cave-ayland at siriusit.co.uk
Tue Nov 30 22:14:35 CET 2010
Andreas Färber wrote:
>> It's taken me a lot longer to get to grips with moving SPARC32 to
>> OFMEM than expected, mostly due to problems with the increased BSS
>> size of the resulting image causing several large headaches.
> Not reading any replies to this yet, maybe you could explain the problem
> in more detail for those of us not as familiar with it? 256K sound like
> peanuts compared to ~128M default RAM size for SS-5. ;)
> Until recently ppc memory layout didn't scale with RAM size either, so
> that I had to reorganize the ppc ofmem code.
> So what exactly is stored in BSS on sparc32, and can't it be moved to
> memory below/above OpenBIOS itself if you remember to claim that memory?
Firstly, the Open Firmware SPARC bindings specifies "When a client
program begins execution, an Open Firmware implementation’s use of any
virtual address space outside of the ranges 0xffd0.0000-0xffef.ffff and
0xfe00.0000-0xfeff.ffff shall have ceased, except for the virtual
address space and associated memory that is allocated for the client
program’s code and data, as specified in the client program header.".
It seems that the second 0xfe00 range is not recommended for general
use, and the specification suggests that any allocations from this
region should be made from the top downwards.
OpenBIOS is currently set to reside in the 0xffd0.0000-0xffef.ffff
memory range giving 2MB space. Currently on SPARC32 the allocation
breakdown is roughly this:
Basic OpenBIOS image (inc. Forth dictionary): 100K
SPARC32 page tables: 256K (some losses due to alignment)
Forth (alloc-mem) area: 128K
Forth internal malloc() area: 256K
Relocated copy of Forth dictionary: 256K
IOMEM: 1MB (768K VGA framebuffer + 256K other)
I see that for PPC in packages/video.c::init_video the framebuffer is
allocated using OFMEM and then mapped 1:1. Blue has suggested that if
direct access to the framebuffer is not required then we could try a
similar dynamic allocation for SPARC - does anyone how/where OpenBoot
stores its VGA framebuffer?
Mark Cave-Ayland - Senior Technical Architect
PostgreSQL - PostGIS
Sirius Corporation plc - control through freedom
t: +44 870 608 0063
Sirius Labs: http://www.siriusit.co.uk/labs
More information about the OpenBIOS