Manipulate mbi in abstract way
PATCH 1/1 Manipulate mbi in abstract way
It cleans up some mess in grub_multiboot and allows easier code sharing with upcomming tagged mbi
Signature · 2 lines
Regards Vladimir 'φ-coder/phcoder' Serbinenko
=== added file 'ChangeLog.abstractmbi'
ChangeLog.abstractmbi +25 -0
@@ -0,0 +1,25 @@ +2010-01-10 Vladimir Serbinenko <[email protected]> + + * conf/i386-coreboot.rmk (multiboot_mod_SOURCES): + Add loader/i386/multiboot_mbi.c. + (multiboot2_mod_SOURCES): Likewise. + * conf/i386-pc.rmk (multiboot_mod_SOURCES): Likewise. + (multiboot2_mod_SOURCES): Likewise. + * include/grub/multiboot.h (grub_multiboot_get_mbi_size): New proto. + (grub_multiboot_make_mbi): Likewise. + (grub_multiboot_free_mbi): Likewise. + (grub_multiboot_init_mbi): Likewise. + (grub_multiboot_add_module): Likewise. + (grub_multiboot_set_bootdev): Likewise. + * loader/i386/multiboot.c (mbi): Removed. + (mbi_dest): Likewise. + (alloc_mbi): New variable. + (grub_multiboot_payload_size): Removed. All users updated. + (grub_multiboot_pure_size): New variable. + (grub_multiboot_boot): Use grub_multiboot_make_mbi. + (grub_multiboot_unload): Use grub_multiboot_free_mbi. + (grub_get_multiboot_mmap_len): Moved to loader/i386/multiboot_mbi.c. + (grub_fill_multiboot_mmap): Likewise. + (grub_multiboot_get_bootdev): Likewise. + (grub_multiboot): Use multiboot_mbi functions. + * loader/i386/multiboot_mbi.c: New file.
=== modified file 'conf/i386-coreboot.rmk'
i386-coreboot.rmk +4 -2
@@ -142,14 +142,16 @@ pkglib_MODULES += multiboot.mod multiboot_mod_SOURCES = loader/i386/multiboot.c \ - loader/multiboot_loader.c + loader/i386/multiboot_mbi.c \ + loader/multiboot_loader.c multiboot_mod_CFLAGS = $(COMMON_CFLAGS) multiboot_mod_LDFLAGS = $(COMMON_LDFLAGS) multiboot_mod_ASFLAGS = $(COMMON_ASFLAGS) pkglib_MODULES += multiboot2.mod multiboot2_mod_SOURCES = loader/i386/multiboot.c \ - loader/multiboot_loader.c + loader/multiboot_loader.c \ + loader/i386/multiboot_mbi.c multiboot2_mod_CFLAGS = $(COMMON_CFLAGS) -DGRUB_USE_MULTIBOOT2 multiboot2_mod_LDFLAGS = $(COMMON_LDFLAGS) multiboot2_mod_ASFLAGS = $(COMMON_ASFLAGS)
=== modified file 'conf/i386-pc.rmk'
i386-pc.rmk +3 -1
@@ -203,6 +203,7 @@ pkglib_MODULES += multiboot.mod multiboot_mod_SOURCES = loader/i386/multiboot.c \ + loader/i386/multiboot_mbi.c \ loader/multiboot_loader.c multiboot_mod_CFLAGS = $(COMMON_CFLAGS) multiboot_mod_LDFLAGS = $(COMMON_LDFLAGS)
@@ -210,7 +211,8 @@ pkglib_MODULES += multiboot2.mod multiboot2_mod_SOURCES = loader/i386/multiboot.c \ - loader/multiboot_loader.c + loader/i386/multiboot_mbi.c \ + loader/multiboot_loader.c multiboot2_mod_CFLAGS = $(COMMON_CFLAGS) -DGRUB_USE_MULTIBOOT2 multiboot2_mod_LDFLAGS = $(COMMON_LDFLAGS) multiboot2_mod_ASFLAGS = $(COMMON_ASFLAGS)
=== modified file 'include/grub/multiboot.h'
grub/multiboot.h +13 -0
@@ -29,7 +29,20 @@#include <multiboot.h> #endif +#include <grub/types.h> +#include <grub/err.h> +void grub_multiboot (int argc,char *argv[]);void grub_module (int argc,char *argv[]); +grub_size_t grub_multiboot_get_mbi_size (void ); +grub_err_t grub_multiboot_make_mbi (void *orig,grub_uint32_t dest, +grub_off_t buf_off,grub_size_t bufsize); +void grub_multiboot_free_mbi (void ); +grub_err_t grub_multiboot_init_mbi (int argc,char *argv[]); +grub_err_t grub_multiboot_add_module (grub_addr_t start,grub_size_t size, +int argc,char *argv[]); +void grub_multiboot_set_bootdev (void ); + +#endif /* ! GRUB_MULTIBOOT_HEADER */
=== modified file 'loader/i386/multiboot.c'
i386/multiboot.c +70 -252
430 lines not on this page · raw message
=== modified file 'loader/i386/multiboot_elfxx.c'
i386/multiboot_elfxx.c +3 -2
@@ -100,10 +100,11 @@ code_size = (phdr (highest_segment)->p_paddr +phdr (highest_segment)->p_memsz) -phdr (lowest_segment)->p_paddr; grub_multiboot_payload_dest =phdr (lowest_segment)->p_paddr; - grub_multiboot_payload_size += code_size; + grub_multiboot_pure_size += code_size; + alloc_mbi =grub_multiboot_get_mbi_size (); grub_multiboot_payload_orig - =grub_relocator32_alloc (grub_multiboot_payload_size); + =grub_relocator32_alloc (grub_multiboot_pure_size + alloc_mbi);if (!grub_multiboot_payload_orig)return grub_errno;
=== added file 'loader/i386/multiboot_mbi.c'
i386/multiboot_mbi.c +336 -0
336 lines not on this page · raw message
Quoted 4 lines · Vladimir 'φ-coder/phcoder' Serbinenko
It cleans up some mess in
grub_multibootand allows easier code sharing with upcomming tagged mbi
Reviewed on IRC, tested with Hurd and NetBSD. Comitted
Signature · 2 lines
Regards Vladimir 'φ-coder/phcoder' Serbinenko