Subject: Re: New bootconfig structure proposal
To: Reinoud Zandijk <imago@kabel065011.kabel.utwente.nl>
From: Chris Gilbert <chris@paradox.demon.co.uk>
List: port-arm32
Date: 02/16/2001 23:25:07
On Friday 16 February 2001 11:01 pm, Reinoud Zandijk wrote:
> Hi Chris,
>
> On 16 Feb 2001, Chris G. Demetriou wrote:
> > imago@kabel065011.kabel.utwente.nl (Reinoud Zandijk) writes:
> > > This means ofcource that compatibility with the old bootloader is
> > > broken .... I'm thinking of a complilation option to allow kernels
> > > still to be made for the old bootloader by selecting a different
> > > bootconfig.h and patching up the old rpc_machdep.c if desired....
> >
> > perhaps this is a naive question, but why would the kernel detect one
> > version or the other, convert old to new if necessary, _by default_.
>
> Well.... i dont know if you have seen the difference in the two
> rpc_machdep.c but yes they are VERY different and pity enough VERY
> different.
>
> The basic difference is not as much as how they pass on data (well yes in
> the new version) but on how their memory map and booting goes... the old
> one relies on rhe RISC OS page tables being hacked and relocates itself in
> the running kernel and the new one gets up nice and clean on the correct
> place... it makes it RO version independent...
>
> ebsa, rc7500, shark and cats are not affected with it... their machdep's
> only need a little addition thats all.
>
> > You should be able to compile that code out, but by default new
> > kernels should interoperate with old boot loaders unless things are
> > irreparably broken in the way the old boot loaders pass in data...
>
> They really can't :(( ... but the two bootloaders can easily exist next to
> eachother so a netbsd.old kernel can be booted with the old bootloader and
> a netbsd kernel can be booted by the new one....

Couldn't you have a wrapper function that checks the magic in the bootconfig, 
depending on the contents it calls the correct bootup function, the final 
result of initarm is the same, a running kernel in the correct place in 
memory?

Cheers,
Chris