Subject: Re: [PATCH] Fixup for Amigas with memory at 0x200000
From: Ignatios Souvatzis <email@example.com>
Date: 01/07/2003 20:44:25
On Tue, Jan 07, 2003 at 01:28:11AM +0100, Aymeric Vincent wrote:
> Booting is now done this way:
> - start_c() is called. It sets the page tables up.
> - locore.s takes over to:
> - copy the small code that switches the MMU on into chip memory
> (so that for this small chunk, PA == VA)
> - switch on the MMU
> - jump to the final virtual location of the kernel
> - start_c_finish() (formerly start_c_cleanup) does all the rest that
> start_c() could do thanks to the dual mappings which do not exist
> No more shadow pointers or anything else.
> The only thing is that it requires to have some physical memory near
> address 0 (because we know locore.o is linked at the beginning of the
> kernel) and I guess this is the case even on the Draco. (?)
No. No memory at all at zero, unless the AmigaOS MMU setup is still active,
and then it's only virtual.
DraCo memory starts at 0x4000 0000, 0x4200 0000, 0x4400 0000, 0x4600 0000,
with at least 4 MB in the first slot, and not more than 32 MB in each slot.
The AmigaOS MMU table is somewhere in the first 2 MB.
a full 128 MB DraCO looks like this with NetBSD:
memory segment 0 at 40000000 size 00200000
memory segment 1 at 40200000 size 07e00000
(memory split by the bootloader to be able to copy the kernel to the start of
a virtual segment.)
Any ideas how to fit this into your scheme?