+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,
#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);
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);
}
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);