* include/grub/powerpc/ieee1275/kernel.h: Introduce GRUB_MOD_GAP

to create a gap between _end and the modules added to the image
with grub-mkrescue.  That fixes "CLAIM failed" on PowerMAC.
* kern/powerpc/ieee1275/init.c: Use GRUB_MOD_GAP.
* util/elf/grub-mkimage.c (add_segments): Likewise.
This commit is contained in:
proski 2008-01-27 20:30:58 +00:00
parent 2033f53e0a
commit 3f51de772d
4 changed files with 15 additions and 2 deletions

View file

@ -1,3 +1,11 @@
2008-01-27 Pavel Roskin <proski@gnu.org>
* include/grub/powerpc/ieee1275/kernel.h: Introduce GRUB_MOD_GAP
to create a gap between _end and the modules added to the image
with grub-mkrescue. That fixes "CLAIM failed" on PowerMAC.
* kern/powerpc/ieee1275/init.c: Use GRUB_MOD_GAP.
* util/elf/grub-mkimage.c (add_segments): Likewise.
2008-01-26 Pavel Roskin <proski@gnu.org>
* kern/dl.c (grub_dl_load): Don't abort if prefix is not set,

View file

@ -23,6 +23,11 @@
#define GRUB_MOD_ALIGN 0x1000
/* Minimal gap between _end and the start of the modules. It's a hack
for PowerMac to prevent "CLAIM failed" error. The real fix is to
rewrite grub-mkimage to generate valid ELF files. */
#define GRUB_MOD_GAP 0x8000
void EXPORT_FUNC (grub_reboot) (void);
void EXPORT_FUNC (grub_halt) (void);

View file

@ -242,5 +242,5 @@ grub_get_rtc (void)
grub_addr_t
grub_arch_modules_addr (void)
{
return ALIGN_UP(_end, GRUB_MOD_ALIGN);
return ALIGN_UP(_end + GRUB_MOD_GAP, GRUB_MOD_ALIGN);
}

View file

@ -218,7 +218,7 @@ add_segments (char *dir, FILE *out, int chrp, char *mods[])
grub_addr_t modbase;
/* Place modules just after grub segment. */
modbase = ALIGN_UP(grub_end, GRUB_MOD_ALIGN);
modbase = ALIGN_UP(grub_end + GRUB_MOD_GAP, GRUB_MOD_ALIGN);
/* Construct new segment header for modules. */
phdr = phdrs + grub_target_to_host16 (ehdr.e_phnum);