[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Proposal: multiboot-kluge 'load_end' and 'load_bss' fields
From: |
Yuri Zaporogets |
Subject: |
Proposal: multiboot-kluge 'load_end' and 'load_bss' fields |
Date: |
Mon, 13 May 2002 18:06:35 +0300 |
User-agent: |
Mutt/1.2.5i |
Hello guys!
It's quite a generic story - I'm writing a microkernel and use a nice
feature of GRUB called "Multiboot kluge". I use RDOFF2, a NASM
home-grown binary format. In its current version (0.98.31) RDOFF linker
'ldrdf' supports multiboot header "right out of the box" using a special
technique, namely "hardcode the trampoline code into the linker" :)
It's actually a quick-and-dirty hack which I would like to get rid of.
Instead, multiboot header and trampoline code will be in a separate file,
that can be embedded into the kernel header at linking stage.
The problem is that trampoline doesn't know the size of target kernel
image in advance; therefore, it's impossible to initialize 'load_end'
and 'bss_end' fields in the MB header to the correct values.
It would be great if I could specify something like '-1' for these
values. It might be a hint for the boot loader to load *entire* kernel
file and assume there is no BSS. I.e.
if (load_end_addr == -1)
load_end_addr = load_addr + filemax;
if (bss_end_addr == -1)
bss_end_addr = load_end_addr;
I think it's not hard to implement such a feature - only a few lines
in 'boot.c' and 'mbchk.c' need to be changed. If you consider it might
be useful for the future 0.7 Multiboot specification - I would be glad
to send a patch against grub-0.92.
Thanks.
P.S. (in case you're wondering why I need this. RDOFF is Relocatable
Dynamic format; it means that kernel needs to be relocated to its
working area before start. Moreover, kernel lives in low memory;
that's why a special setup code is needed. It's a plain binary, linked
absolutely with org=100000h and it's just glued to the kernel image.
To move this setup to 100000h a special 24-byte trampoline is used,
which is embedded into the kernel together with a multiboot header.. %-)
73!
--
Regards,
Yuri Zaporogets.
pgpkuuAkH9dLD.pgp
Description: PGP signature
- Proposal: multiboot-kluge 'load_end' and 'load_bss' fields,
Yuri Zaporogets <=
- Re: Proposal: multiboot-kluge 'load_end' and 'load_bss' fields, Yoshinori K. Okuji, 2002/05/13
- Re: load_end == bss_end == -1, Yuri Zaporogets, 2002/05/14
- Re: load_end == bss_end == -1, Yoshinori K. Okuji, 2002/05/14
- Re: load_end == bss_end == -1, Yuri Zaporogets, 2002/05/14
- Re: load_end == bss_end == -1, Yoshinori K. Okuji, 2002/05/14
- Re: load_end == bss_end == -1, Yuri Zaporogets, 2002/05/15
- Re: load_end == bss_end == -1, Yoshinori K. Okuji, 2002/05/20