mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-26 17:19:22 +00:00
2008-08-02 Robert Millan <rmh@aybabtu.com>
* disk/memdisk.c (memdisk_size): Don't initialize.
(GRUB_MOD_INIT(memdisk)): Find memdisk using grub_module_iterate().
* include/grub/i386/pc/kernel.h
(GRUB_KERNEL_MACHINE_MEMDISK_IMAGE_SIZE): Remove macro.
(GRUB_KERNEL_MACHINE_PREFIX, GRUB_KERNEL_MACHINE_DATA_END): Shift.
(grub_memdisk_image_size, grub_arch_memdisk_addr)
(grub_arch_memdisk_size): Remove.
* include/grub/kernel.h (struct grub_module_header): Remove `offset'
field (was only used to transfer a constant). Add `type' field to
support multiple module types.
(grub_module_iterate): New function.
* kern/device.c (grub_device_open): Do not hide error messages
when grub_disk_open() fails. Use grub_print_error() instead.
* kern/i386/pc/init.c (grub_arch_modules_addr)
(grub_arch_memdisk_size): Remove functions.
(grub_arch_modules_addr): Return the module address in high memory
(now that it isn't copied anymore).
* kern/i386/pc/startup.S (grub_memdisk_image_size): Remove variable.
(codestart): Don't add grub_memdisk_image_size to %ecx in LZMA
decompression routine (grub_total_module_size already includes that
now). Don't copy modules back to low memory.
* kern/main.c: Include `<grub/mm.h>'.
(grub_load_modules): Split out (and use) ...
(grub_module_iterate): ... this function, which iterates through
module objects and runs a hook.
Comment out grub_mm_init_region() call, as it would cause non-ELF
modules to be overwritten.
* util/i386/pc/grub-mkimage.c (generate_image): Instead of appending
the memdisk image in its own region, make it part of the module list.
* util/elf/grub-mkimage.c (options): Add "memdisk"|'m' option.
(main): Parse --memdisk|-m option, and pass user-provided path as
parameter to generate_image().
(add_segments): Pass `memdisk_path' down to load_modules().
(load_modules): Embed memdisk image in module section when requested.
* util/i386/efi/grub-mkimage.c (make_mods_section): Initialize
`header.type' instead of `header.offset'.
* conf/powerpc-ieee1275.rmk (pkglib_MODULES): Add `memdisk.mod'.
(memdisk_mod_SOURCES, memdisk_mod_CFLAGS)
(memdisk_mod_LDFLAGS): New variables.
* conf/i386-coreboot.rmk: Likewise.
* conf/i386-ieee1275.rmk: Likewise.
This commit is contained in:
1 parent
a927cc7383
commit
3bd0a12aca
17 files changed
+368
-79
No files matched your search
@@ -96,8 +96,6 @@ VARIABLE(grub_install_dos_part)
|
||||
.long 0xFFFFFFFF
|
||||
VARIABLE(grub_install_bsd_part)
|
||||
.long 0xFFFFFFFF
|
||||
VARIABLE(grub_memdisk_image_size)
|
||||
.long 0
|
||||
VARIABLE(grub_prefix)
|
||||
/* to be filled by grub-mkimage */
|
||||
|
||||
@@ -211,7 +209,6 @@ codestart:
|
||||
call lzo1x_decompress
|
||||
addl $12, %esp
|
||||
|
||||
/* copy back the decompressed part */
|
||||
movl %eax, %ecx
|
||||
cld
|
||||
#elif defined(ENABLE_LZMA)
|
||||
@@ -221,19 +218,22 @@ codestart:
|
||||
pushl %esi
|
||||
movl EXT_C(grub_kernel_image_size), %ecx
|
||||
addl EXT_C(grub_total_module_size), %ecx
|
||||
addl EXT_C(grub_memdisk_image_size), %ecx
|
||||
subl $GRUB_KERNEL_MACHINE_RAW_SIZE, %ecx
|
||||
pushl %ecx
|
||||
leal (%edi, %ecx), %ebx
|
||||
call _LzmaDecodeA
|
||||
/* _LzmaDecodeA clears DF, so no need to run cld */
|
||||
popl %ecx
|
||||
popl %edi
|
||||
popl %esi
|
||||
#endif
|
||||
|
||||
/* copy back the decompressed part (except the modules) */
|
||||
subl EXT_C(grub_total_module_size), %ecx
|
||||
rep
|
||||
movsb
|
||||
|
||||
#if 0
|
||||
/* copy modules before cleaning out the bss */
|
||||
movl EXT_C(grub_total_module_size), %ecx
|
||||
movl EXT_C(grub_kernel_image_size), %esi
|
||||
@@ -246,6 +246,7 @@ codestart:
|
||||
std
|
||||
rep
|
||||
movsb
|
||||
#endif
|
||||
|
||||
/* clean out the bss */
|
||||
movl $BSS_START_SYMBOL, %edi
|
||||
|
||||
Reference in new issue
Block a user