Port-powerpc archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Relocating an amigappc kernel by the boot loader



... does *not* work! :(

I spent a day to make my boot loader parse the ELF relocations, which I
included in the kernel by linking with the -q option. For simplicity I
chose a TEXTADDR of 0, so I just had to add the real base address in all
relocations.

(Lots of problems had to be solved in this process, like relocating linker
symbols, although they are absolute, but I will exclude that here.)

First it seemed to work fine, but when using commands like "vmstat -m"
I'm getting trouble. Programs which are accessing the kernel's nlists
through the kvm(3) interface fail miserably, because the file /netbsd is
not relocated to the same address space as the current kernel in RAM.


Other options:

- Turning on the MMU early to translate all addresses doesn't work either,
  as exception handling and pmap may disable the MMU. So just PA==VA BAT
  settings are supported.

- The last option, using different config files and kernels for the various
  memory configurations makes no sense as there are just too many RAM base
  addresses possible for an A1200 with BlizzardPPC.

So the only option to make NetBSD/amigappc support the A1200 would be to
have the user compile his own kernel, based on the current memory
configurations.

Or did I forget anything?

-- 
Frank Wille


Home | Main Index | Thread Index | Old Index