Greetings,
I solved that for payloads built from the baremetal toolkit. They create a simple data structure at the top of RAM with a signature in it so that the first payload to run will know to set it up.
Each payload is expected to take what it needs from the top of available memory and alter the structure to reflect the new top of available memory. Upon exit, the old value is written back to release the memory.
A 'terminal' target such as linux ignores the structure since it will never return anyway.
G'day, sjames
On Sat, 9 Aug 2003, SONE Takeshi wrote:
On Fri, Aug 08, 2003 at 10:51:23AM -0600, Eric W. Biederman wrote:
Now if we want to have a way to choose seperate ELF payloads or direct linking them in at build time, that makes lots of sense to me. We can try to look at that.
I am not certain about multiple payloads.
I've seen there is no way to ensure images to not overwrite each other. When LinuxBIOS loads ELF image at the same location as itself, it moves itself to top of memory (below 4GB). Etherboot (>=5.1) relocates itself to the same top memory, since it is usually safe place when loading kernel. Other future bootloaders would do the same.
Probably this could be resolved by indicating LinuxBIOS's location in the memory map of LinuxBIOS table?
Taking boot loaders to the next step is a very interesting question. For the normal case where traditional BIOS's work ADLO looks to be a very satisfying solution.
If ADLO works at all.
For things to think about. The reason traditional BIOS's are 16bit real mode beasts is because Windows runs parts of them in vm86 mode. Which is why 32bit extensions are not common.
I've been thinking about the same thing. I guess you refer to the DOS-based Windows (-95/98/Me). Of couse the DOS applications like EMM386 and things like DPMI won't run with a BIOS which does it's job in 32-bit. And nowadays nobody uses those application.
Open source applications I've seen so far (setup of Linux, GRUB, Etherboot, LILO...) are calling BIOS from pure real mode, so they won't notice if the BIOS services they are calling are in fact 32-bit code. I'm not sure but I guess NT-based Windows and its bootloader are like Linux and its bootloaders.
If we cut off some of lagacy applications, we can implement a clean 32-bit minimum legacy layer.
Linuxbios mailing list Linuxbios@clustermatic.org http://www.clustermatic.org/mailman/listinfo/linuxbios