On 06/10/2013 11:28 PM, Daniel Müller wrote:
Hi,
On 06/10/13 18:09, Julian Stecklina wrote:
This is problem is caused by the way bootstrap works on 64-bit systems. If there is a module at 0x2d0000, bootstrap will overwrite that with its own 64-bit code and then figure out later that things are b0rken.
Thanks for the explanation. Does this mean this is a general problem for 64 bit? And it is on the side of bootstrap? That sounds to me like the
It is a bootstrap implementation problem. Could be fixed. You may volunteer. ;)
fix should be on that side as well. Why not change the 0x2d0000 address? Anyway, so could I just insert a dummy module and set the overlap_allowed flag (or whatever the name is) in the source code?
Adam's grub ( https://os.inf.tu-dresden.de/~adam/grub/ ) can load modules at higher addresses via the modaddr command, which probably also solves your problem.
I don't know a good workaround for this, except having a bootloader that moves modules out of the way. You might try bender in my firewire toolchain: https://github.com/TUD-OS/morbo
I might give it a try but I'd rather prefer staying with a more mainstream one.
It is not a bootloader per se. It is a multiboot-compliant chainloader that (among other things) relocates modules to a safe place. So usage in a e.g. grub would be:
kernel /morbo module /bootstrap module /fiasco ...
Julian