Index: conf/common.rmk =================================================================== --- conf/common.rmk (revision 1767) +++ conf/common.rmk (working copy) @@ -1,5 +1,11 @@ # -*- makefile -*- +# For grub-mkelfimage. +bin_UTILITIES += grub-mkelfimage +grub_mkelfimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \ + util/resolve.c +util/elf/grub-mkimage.c_DEPENDENCIES = Makefile + # For grub-probe. sbin_UTILITIES += grub-probe util/grub-probe.c_DEPENDENCIES = grub_probe_init.h Index: conf/i386-coreboot.rmk =================================================================== --- conf/i386-coreboot.rmk (revision 1767) +++ conf/i386-coreboot.rmk (working copy) @@ -39,18 +39,11 @@ /bin/sh genkernsyms.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1) # Utilities. -bin_UTILITIES = grub-mkimage sbin_UTILITIES = grub-mkdevicemap ifeq ($(enable_grub_emu), yes) sbin_UTILITIES += grub-emu endif -# For grub-mkimage. -grub_mkimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \ - util/resolve.c -grub_mkimage_LDFLAGS = $(LIBLZO) -util/elf/grub-mkimage.c_DEPENDENCIES = Makefile - # For grub-mkdevicemap. grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \ util/i386/get_disk_name.c Index: conf/powerpc-ieee1275.rmk =================================================================== --- conf/powerpc-ieee1275.rmk (revision 1767) +++ conf/powerpc-ieee1275.rmk (working copy) @@ -28,17 +28,11 @@ pkglib_PROGRAMS = kernel.elf # Utilities. -bin_UTILITIES = grub-mkimage sbin_UTILITIES = grub-mkdevicemap ifeq ($(enable_grub_emu), yes) sbin_UTILITIES += grub-emu endif -# For grub-mkimage. -grub_mkimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \ - util/resolve.c -util/elf/grub-mkimage.c_DEPENDENCIES = Makefile - # For grub-mkdevicemap. grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \ util/ieee1275/get_disk_name.c Index: conf/i386-ieee1275.rmk =================================================================== --- conf/i386-ieee1275.rmk (revision 1767) +++ conf/i386-ieee1275.rmk (working copy) @@ -40,18 +40,11 @@ /bin/sh genkernsyms.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1) # Utilities. -bin_UTILITIES = grub-mkimage sbin_UTILITIES = grub-mkdevicemap ifeq ($(enable_grub_emu), yes) sbin_UTILITIES += grub-emu endif -# For grub-mkimage. -grub_mkimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \ - util/resolve.c -grub_mkimage_LDFLAGS = $(LIBLZO) -util/elf/grub-mkimage.c_DEPENDENCIES = Makefile - # For grub-mkdevicemap. grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \ util/i386/get_disk_name.c Index: kern/ieee1275/init.c =================================================================== --- kern/ieee1275/init.c (revision 1767) +++ kern/ieee1275/init.c (working copy) @@ -30,6 +30,7 @@ #include #include #include +#include #include #include Index: kern/i386/ieee1275/startup.S =================================================================== --- kern/i386/ieee1275/startup.S (revision 1767) +++ kern/i386/ieee1275/startup.S (working copy) @@ -19,9 +19,9 @@ #define ASM_FILE 1 #include -#include #include #include +#include #include #include @@ -45,7 +45,7 @@ * This is a special data area at a fixed offset from the beginning. */ - . = EXT_C(start) + GRUB_KERNEL_MACHINE_PREFIX + . = EXT_C(start) + GRUB_KERNEL_CPU_PREFIX VARIABLE(grub_prefix) /* to be filled by grub-mkimage */ @@ -54,7 +54,7 @@ * Leave some breathing room for the prefix. */ - . = EXT_C(start) + GRUB_KERNEL_MACHINE_DATA_END + . = EXT_C(start) + GRUB_KERNEL_CPU_DATA_END codestart: movl %eax, EXT_C(grub_ieee1275_entry_fn) Index: kern/i386/linuxbios/startup.S =================================================================== --- kern/i386/linuxbios/startup.S (revision 1767) +++ kern/i386/linuxbios/startup.S (working copy) @@ -19,9 +19,9 @@ #define ASM_FILE 1 #include -#include #include #include +#include #include #include @@ -44,7 +44,7 @@ * This is a special data area at a fixed offset from the beginning. */ - . = EXT_C(start) + GRUB_KERNEL_MACHINE_PREFIX + . = EXT_C(start) + GRUB_KERNEL_CPU_PREFIX VARIABLE(grub_prefix) /* to be filled by grub-mkimage */ @@ -53,7 +53,7 @@ * Leave some breathing room for the prefix. */ - . = EXT_C(start) + GRUB_KERNEL_MACHINE_DATA_END + . = EXT_C(start) + GRUB_KERNEL_CPU_DATA_END #if 0 /* Index: kern/i386/linuxbios/init.c =================================================================== --- kern/i386/linuxbios/init.c (revision 1767) +++ kern/i386/linuxbios/init.c (working copy) @@ -33,6 +33,7 @@ #include #include #include +#include #define GRUB_FLOPPY_REG_DIGITAL_OUTPUT 0x3f2 Index: include/grub/powerpc/ieee1275/kernel.h =================================================================== --- include/grub/powerpc/ieee1275/kernel.h (revision 1767) +++ include/grub/powerpc/ieee1275/kernel.h (working copy) @@ -21,13 +21,6 @@ #include -#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 - #ifndef ASM_FILE void EXPORT_FUNC (grub_reboot) (void); Index: include/grub/powerpc/kernel.h =================================================================== --- include/grub/powerpc/kernel.h (revision 0) +++ include/grub/powerpc/kernel.h (revision 0) @@ -0,0 +1,33 @@ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2005,2006,2007,2008 Free Software Foundation, Inc. + * + * GRUB is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GRUB is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB. If not, see . + */ + +#ifndef GRUB_KERNEL_CPU_HEADER +#define GRUB_KERNEL_CPU_HEADER 1 + +#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 + +/* prefix not supported on powerpc yet. */ +#define GRUB_KERNEL_CPU_PREFIX 0 +#define GRUB_KERNEL_CPU_DATA_END 0 + +#endif Index: include/grub/i386/ieee1275/kernel.h =================================================================== --- include/grub/i386/ieee1275/kernel.h (revision 1767) +++ include/grub/i386/ieee1275/kernel.h (working copy) @@ -1,4 +1 @@ #include - -#define GRUB_KERNEL_MACHINE_PREFIX 0x2 -#define GRUB_KERNEL_MACHINE_DATA_END 0x42 Index: include/grub/i386/kernel.h =================================================================== --- include/grub/i386/kernel.h (revision 0) +++ include/grub/i386/kernel.h (revision 0) @@ -0,0 +1,30 @@ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2005,2006,2007,2008 Free Software Foundation, Inc. + * + * GRUB is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GRUB is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB. If not, see . + */ + +#ifndef GRUB_KERNEL_CPU_HEADER +#define GRUB_KERNEL_CPU_HEADER 1 + +#define GRUB_MOD_ALIGN 0x1000 + +/* Non-zero value is only needed for PowerMacs. */ +#define GRUB_MOD_GAP 0x0 + +#define GRUB_KERNEL_CPU_PREFIX 0x2 +#define GRUB_KERNEL_CPU_DATA_END 0x42 + +#endif Index: include/grub/i386/coreboot/kernel.h =================================================================== --- include/grub/i386/coreboot/kernel.h (revision 1767) +++ include/grub/i386/coreboot/kernel.h (working copy) @@ -21,16 +21,8 @@ #include -#define GRUB_MOD_ALIGN 0x1000 - -/* Non-zero value is only needed for some IEEE-1275 platforms. */ -#define GRUB_MOD_GAP 0 - #ifndef ASM_FILE extern char grub_prefix[]; #endif -#define GRUB_KERNEL_MACHINE_PREFIX 0x2 -#define GRUB_KERNEL_MACHINE_DATA_END 0x42 - #endif /* ! GRUB_KERNEL_MACHINE_HEADER */ Index: util/ieee1275/grub-install.in =================================================================== --- util/ieee1275/grub-install.in (revision 1767) +++ util/ieee1275/grub-install.in (working copy) @@ -34,7 +34,7 @@ address@hidden@ pkglibdir=${libdir}/`echo ${PACKAGE_TARNAME}/${target_cpu}-${platform} | sed ${transform}` -grub_mkimage=${bindir}/`echo grub-mkimage | sed ${transform}` +grub_mkimage=${bindir}/`echo grub-mkelfimage | sed ${transform}` grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}` grub_probe=${sbindir}/`echo grub-probe | sed ${transform}` rootdir= @@ -182,7 +182,7 @@ modules="$modules $fs_module $partmap_module $devabstraction_module" # Now perform the installation. -"$grub_mkimage" --output=${grubdir}/grub $modules || exit 1 +"$grub_mkimage" --directory=${pkglibdir} --output=${grubdir}/grub $modules || exit 1 if test $update_nvram = yes; then set $ofpathname dummy Index: util/elf/grub-mkimage.c =================================================================== --- util/elf/grub-mkimage.c (revision 1767) +++ util/elf/grub-mkimage.c (working copy) @@ -30,7 +30,7 @@ #include #include #include -#include +#include #define GRUB_IEEE1275_NOTE_NAME "PowerPC" #define GRUB_IEEE1275_NOTE_TYPE 0x1275 @@ -297,9 +297,9 @@ if (prefix) { - if (GRUB_KERNEL_MACHINE_PREFIX + strlen (prefix) + 1 > GRUB_KERNEL_MACHINE_DATA_END) + if (GRUB_KERNEL_CPU_PREFIX + strlen (prefix) + 1 > GRUB_KERNEL_CPU_DATA_END) grub_util_error ("prefix too long"); - grub_util_write_image_at (prefix, strlen (prefix) + 1, first_segment + GRUB_KERNEL_MACHINE_PREFIX, out); + grub_util_write_image_at (prefix, strlen (prefix) + 1, first_segment + GRUB_KERNEL_CPU_PREFIX, out); } free (phdrs); Index: conf/common.rmk =================================================================== --- conf/common.rmk (revision 1787) +++ conf/common.rmk (working copy) @@ -1,5 +1,11 @@ # -*- makefile -*- +# For grub-mkelfimage. +bin_UTILITIES += grub-mkelfimage +grub_mkelfimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \ + util/resolve.c +util/elf/grub-mkimage.c_DEPENDENCIES = Makefile + # For grub-probe. sbin_UTILITIES += grub-probe util/grub-probe.c_DEPENDENCIES = grub_probe_init.h Index: conf/powerpc-ieee1275.rmk =================================================================== --- conf/powerpc-ieee1275.rmk (revision 1787) +++ conf/powerpc-ieee1275.rmk (working copy) @@ -28,17 +28,11 @@ pkglib_PROGRAMS = kernel.elf # Utilities. -bin_UTILITIES = grub-mkimage sbin_UTILITIES = grub-mkdevicemap ifeq ($(enable_grub_emu), yes) sbin_UTILITIES += grub-emu endif -# For grub-mkimage. -grub_mkimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \ - util/resolve.c -util/elf/grub-mkimage.c_DEPENDENCIES = Makefile - # For grub-mkdevicemap. grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \ util/ieee1275/get_disk_name.c Index: conf/i386-coreboot.rmk =================================================================== --- conf/i386-coreboot.rmk (revision 1787) +++ conf/i386-coreboot.rmk (working copy) @@ -44,18 +44,11 @@ /bin/sh genkernsyms.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1) # Utilities. -bin_UTILITIES = grub-mkimage sbin_UTILITIES = grub-mkdevicemap ifeq ($(enable_grub_emu), yes) sbin_UTILITIES += grub-emu endif -# For grub-mkimage. -grub_mkimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \ - util/resolve.c -grub_mkimage_LDFLAGS = $(LIBLZO) -util/elf/grub-mkimage.c_DEPENDENCIES = Makefile - # For grub-mkdevicemap. grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \ util/i386/get_disk_name.c Index: conf/i386-ieee1275.rmk =================================================================== --- conf/i386-ieee1275.rmk (revision 1787) +++ conf/i386-ieee1275.rmk (working copy) @@ -41,18 +41,11 @@ /bin/sh genkernsyms.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1) # Utilities. -bin_UTILITIES = grub-mkimage sbin_UTILITIES = grub-mkdevicemap ifeq ($(enable_grub_emu), yes) sbin_UTILITIES += grub-emu endif -# For grub-mkimage. -grub_mkimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \ - util/resolve.c -grub_mkimage_LDFLAGS = $(LIBLZO) -util/elf/grub-mkimage.c_DEPENDENCIES = Makefile - # For grub-mkdevicemap. grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \ util/i386/get_disk_name.c Index: kern/ieee1275/init.c =================================================================== --- kern/ieee1275/init.c (revision 1787) +++ kern/ieee1275/init.c (working copy) @@ -30,6 +30,7 @@ #include #include #include +#include #include #include Index: kern/i386/ieee1275/startup.S =================================================================== --- kern/i386/ieee1275/startup.S (revision 1787) +++ kern/i386/ieee1275/startup.S (working copy) @@ -19,9 +19,9 @@ #define ASM_FILE 1 #include -#include #include #include +#include #include #include @@ -45,7 +45,7 @@ * This is a special data area at a fixed offset from the beginning. */ - . = EXT_C(start) + GRUB_KERNEL_MACHINE_PREFIX + . = EXT_C(start) + GRUB_KERNEL_CPU_PREFIX VARIABLE(grub_prefix) /* to be filled by grub-mkimage */ @@ -54,7 +54,7 @@ * Leave some breathing room for the prefix. */ - . = EXT_C(start) + GRUB_KERNEL_MACHINE_DATA_END + . = EXT_C(start) + GRUB_KERNEL_CPU_DATA_END codestart: movl %eax, EXT_C(grub_ieee1275_entry_fn) Index: kern/i386/linuxbios/startup.S =================================================================== --- kern/i386/linuxbios/startup.S (revision 1787) +++ kern/i386/linuxbios/startup.S (working copy) @@ -19,9 +19,9 @@ #define ASM_FILE 1 #include -#include #include #include +#include #include #include @@ -44,7 +44,7 @@ * This is a special data area at a fixed offset from the beginning. */ - . = EXT_C(start) + GRUB_KERNEL_MACHINE_PREFIX + . = EXT_C(start) + GRUB_KERNEL_CPU_PREFIX VARIABLE(grub_prefix) /* to be filled by grub-mkimage */ @@ -53,7 +53,7 @@ * Leave some breathing room for the prefix. */ - . = EXT_C(start) + GRUB_KERNEL_MACHINE_DATA_END + . = EXT_C(start) + GRUB_KERNEL_CPU_DATA_END #if 0 /* Index: kern/i386/linuxbios/init.c =================================================================== --- kern/i386/linuxbios/init.c (revision 1787) +++ kern/i386/linuxbios/init.c (working copy) @@ -33,6 +33,7 @@ #include #include #include +#include #define GRUB_FLOPPY_REG_DIGITAL_OUTPUT 0x3f2 Index: include/grub/powerpc/ieee1275/kernel.h =================================================================== --- include/grub/powerpc/ieee1275/kernel.h (revision 1787) +++ include/grub/powerpc/ieee1275/kernel.h (working copy) @@ -21,13 +21,6 @@ #include -#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 - #ifndef ASM_FILE void EXPORT_FUNC (grub_reboot) (void); Index: include/grub/powerpc/kernel.h =================================================================== --- include/grub/powerpc/kernel.h (revision 0) +++ include/grub/powerpc/kernel.h (revision 0) @@ -0,0 +1,33 @@ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2005,2006,2007,2008 Free Software Foundation, Inc. + * + * GRUB is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GRUB is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB. If not, see . + */ + +#ifndef GRUB_KERNEL_CPU_HEADER +#define GRUB_KERNEL_CPU_HEADER 1 + +#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 + +/* prefix not supported on powerpc yet. */ +#define GRUB_KERNEL_CPU_PREFIX 0 +#define GRUB_KERNEL_CPU_DATA_END 0 + +#endif Index: include/grub/i386/ieee1275/kernel.h =================================================================== --- include/grub/i386/ieee1275/kernel.h (revision 1787) +++ include/grub/i386/ieee1275/kernel.h (working copy) @@ -1,4 +1 @@ #include - -#define GRUB_KERNEL_MACHINE_PREFIX 0x2 -#define GRUB_KERNEL_MACHINE_DATA_END 0x42 Index: include/grub/i386/kernel.h =================================================================== --- include/grub/i386/kernel.h (revision 0) +++ include/grub/i386/kernel.h (revision 0) @@ -0,0 +1,30 @@ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2005,2006,2007,2008 Free Software Foundation, Inc. + * + * GRUB is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GRUB is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB. If not, see . + */ + +#ifndef GRUB_KERNEL_CPU_HEADER +#define GRUB_KERNEL_CPU_HEADER 1 + +#define GRUB_MOD_ALIGN 0x1000 + +/* Non-zero value is only needed for PowerMacs. */ +#define GRUB_MOD_GAP 0x0 + +#define GRUB_KERNEL_CPU_PREFIX 0x2 +#define GRUB_KERNEL_CPU_DATA_END 0x42 + +#endif Index: include/grub/i386/coreboot/kernel.h =================================================================== --- include/grub/i386/coreboot/kernel.h (revision 1787) +++ include/grub/i386/coreboot/kernel.h (working copy) @@ -21,16 +21,8 @@ #include -#define GRUB_MOD_ALIGN 0x1000 - -/* Non-zero value is only needed for some IEEE-1275 platforms. */ -#define GRUB_MOD_GAP 0 - #ifndef ASM_FILE extern char grub_prefix[]; #endif -#define GRUB_KERNEL_MACHINE_PREFIX 0x2 -#define GRUB_KERNEL_MACHINE_DATA_END 0x42 - #endif /* ! GRUB_KERNEL_MACHINE_HEADER */ Index: util/ieee1275/grub-install.in =================================================================== --- util/ieee1275/grub-install.in (revision 1787) +++ util/ieee1275/grub-install.in (working copy) @@ -34,7 +34,7 @@ address@hidden@ pkglibdir=${libdir}/`echo ${PACKAGE_TARNAME}/${target_cpu}-${platform} | sed ${transform}` -grub_mkimage=${bindir}/`echo grub-mkimage | sed ${transform}` +grub_mkimage=${bindir}/`echo grub-mkelfimage | sed ${transform}` grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}` grub_probe=${sbindir}/`echo grub-probe | sed ${transform}` rootdir= @@ -182,7 +182,7 @@ modules="$modules $fs_module $partmap_module $devabstraction_module" # Now perform the installation. -"$grub_mkimage" --output=${grubdir}/grub $modules || exit 1 +"$grub_mkimage" --directory=${pkglibdir} --output=${grubdir}/grub $modules || exit 1 if test $update_nvram = yes; then set $ofpathname dummy Index: util/elf/grub-mkimage.c =================================================================== --- util/elf/grub-mkimage.c (revision 1787) +++ util/elf/grub-mkimage.c (working copy) @@ -30,7 +30,7 @@ #include #include #include -#include +#include #define GRUB_IEEE1275_NOTE_NAME "PowerPC" #define GRUB_IEEE1275_NOTE_TYPE 0x1275 @@ -297,9 +297,9 @@ if (prefix) { - if (GRUB_KERNEL_MACHINE_PREFIX + strlen (prefix) + 1 > GRUB_KERNEL_MACHINE_DATA_END) + if (GRUB_KERNEL_CPU_PREFIX + strlen (prefix) + 1 > GRUB_KERNEL_CPU_DATA_END) grub_util_error ("prefix too long"); - grub_util_write_image_at (prefix, strlen (prefix) + 1, first_segment + GRUB_KERNEL_MACHINE_PREFIX, out); + grub_util_write_image_at (prefix, strlen (prefix) + 1, first_segment + GRUB_KERNEL_CPU_PREFIX, out); } free (phdrs);