2008-08-14 Robert Millan <rmh@aybabtu.com>

* conf/common.rmk (bin_UTILITIES): Add `grub-mkelfimage'.
        (grub_mkelfimage_SOURCES): New variable.
        (util/elf/grub-mkimage.c_DEPENDENCIES): Likewise.

        * conf/i386-coreboot.rmk (bin_UTILITIES, grub_mkimage_SOURCES)
        (grub_mkimage_LDFLAGS, util/elf/grub-mkimage.c_DEPENDENCIES): Remove.
        * conf/powerpc-ieee1275.rmk: Likewise.
        * conf/i386-ieee1275.rmk: Likewise.

        * kern/ieee1275/init.c: Include `<grub/cpu/kernel.h>'.
        * kern/i386/coreboot/init.c: Likewise.

        * kern/i386/ieee1275/startup.S: Replace `<grub/machine/kernel.h>'
        with `<grub/cpu/kernel.h>'.
        (GRUB_KERNEL_MACHINE_PREFIX, GRUB_KERNEL_MACHINE_DATA_END): Renamed
        to ...
        (GRUB_KERNEL_CPU_PREFIX, GRUB_KERNEL_CPU_DATA_END): ... this.
        * kern/i386/coreboot/startup.S: Likewise.

        * include/grub/powerpc/ieee1275/kernel.h (GRUB_MOD_ALIGN)
        (GRUB_MOD_GAP): Remove.
        * include/grub/powerpc/kernel.h: New file.
        * include/grub/i386/ieee1275/kernel.h (GRUB_KERNEL_MACHINE_PREFIX)
        (GRUB_KERNEL_MACHINE_DATA_END): Remove.
        * include/grub/i386/kernel.h: New file.
        * include/grub/i386/coreboot/kernel.h (GRUB_MOD_ALIGN)
        (GRUB_MOD_GAP, GRUB_KERNEL_MACHINE_PREFIX)
        (GRUB_KERNEL_MACHINE_DATA_END): Remove.

        * util/ieee1275/grub-install.in (grub_mkimage): Initialize to use
        `grub-mkelfimage'.
        Use --directory when invoking grub_mkimage.

        * util/elf/grub-mkimage.c: Include `<grub/cpu/kernel.h>'.
        (add_segments): Replace GRUB_KERNEL_MACHINE_DATA_END and
        GRUB_KERNEL_MACHINE_PREFIX with GRUB_KERNEL_CPU_DATA_END
        and GRUB_KERNEL_CPU_PREFIX.
This commit is contained in:
robertmh 2008-08-14 18:59:33 +00:00
parent b86408f869
commit eba0ce9f97
16 changed files with 84 additions and 49 deletions

View file

@ -142,6 +142,7 @@ include/grub/i386/ieee1275/machine.h
include/grub/i386/ieee1275/memory.h include/grub/i386/ieee1275/memory.h
include/grub/i386/ieee1275/serial.h include/grub/i386/ieee1275/serial.h
include/grub/i386/io.h include/grub/i386/io.h
include/grub/i386/kernel.h
include/grub/i386/linux.h include/grub/i386/linux.h
include/grub/i386/loader.h include/grub/i386/loader.h
include/grub/i386/pc/biosdisk.h include/grub/i386/pc/biosdisk.h
@ -190,6 +191,7 @@ include/grub/powerpc/ieee1275/kernel.h
include/grub/powerpc/ieee1275/loader.h include/grub/powerpc/ieee1275/loader.h
include/grub/powerpc/ieee1275/time.h include/grub/powerpc/ieee1275/time.h
include/grub/powerpc/ieee1275/util/biosdisk.h include/grub/powerpc/ieee1275/util/biosdisk.h
include/grub/powerpc/kernel.h
include/grub/powerpc/libgcc.h include/grub/powerpc/libgcc.h
include/grub/powerpc/setjmp.h include/grub/powerpc/setjmp.h
include/grub/powerpc/time.h include/grub/powerpc/time.h

View file

@ -1,5 +1,11 @@
# -*- makefile -*- # -*- 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. # For grub-probe.
sbin_UTILITIES += grub-probe sbin_UTILITIES += grub-probe
util/grub-probe.c_DEPENDENCIES = grub_probe_init.h util/grub-probe.c_DEPENDENCIES = grub_probe_init.h

View file

@ -45,18 +45,11 @@ kernel_syms.lst: $(addprefix include/grub/,$(kernel_elf_HEADERS)) config.h genke
/bin/sh genkernsyms.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1) /bin/sh genkernsyms.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1)
# Utilities. # Utilities.
bin_UTILITIES = grub-mkimage
sbin_UTILITIES = grub-mkdevicemap sbin_UTILITIES = grub-mkdevicemap
ifeq ($(enable_grub_emu), yes) ifeq ($(enable_grub_emu), yes)
sbin_UTILITIES += grub-emu sbin_UTILITIES += grub-emu
endif 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. # For grub-mkdevicemap.
grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \ grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \
util/i386/get_disk_name.c util/i386/get_disk_name.c

View file

@ -42,18 +42,11 @@ kernel_syms.lst: $(addprefix include/grub/,$(kernel_elf_HEADERS)) config.h genke
/bin/sh genkernsyms.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1) /bin/sh genkernsyms.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1)
# Utilities. # Utilities.
bin_UTILITIES = grub-mkimage
sbin_UTILITIES = grub-mkdevicemap sbin_UTILITIES = grub-mkdevicemap
ifeq ($(enable_grub_emu), yes) ifeq ($(enable_grub_emu), yes)
sbin_UTILITIES += grub-emu sbin_UTILITIES += grub-emu
endif 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. # For grub-mkdevicemap.
grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \ grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \
util/i386/get_disk_name.c util/i386/get_disk_name.c

View file

@ -28,17 +28,11 @@ kernel_syms.lst: $(addprefix include/grub/,$(kernel_elf_HEADERS)) config.h genke
pkglib_PROGRAMS = kernel.elf pkglib_PROGRAMS = kernel.elf
# Utilities. # Utilities.
bin_UTILITIES = grub-mkimage
sbin_UTILITIES = grub-mkdevicemap sbin_UTILITIES = grub-mkdevicemap
ifeq ($(enable_grub_emu), yes) ifeq ($(enable_grub_emu), yes)
sbin_UTILITIES += grub-emu sbin_UTILITIES += grub-emu
endif 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. # For grub-mkdevicemap.
grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \ grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \
util/ieee1275/get_disk_name.c util/ieee1275/get_disk_name.c

View file

@ -21,16 +21,8 @@
#include <grub/symbol.h> #include <grub/symbol.h>
#define GRUB_MOD_ALIGN 0x1000
/* Non-zero value is only needed for some IEEE-1275 platforms. */
#define GRUB_MOD_GAP 0
#ifndef ASM_FILE #ifndef ASM_FILE
extern char grub_prefix[]; extern char grub_prefix[];
#endif #endif
#define GRUB_KERNEL_MACHINE_PREFIX 0x2
#define GRUB_KERNEL_MACHINE_DATA_END 0x42
#endif /* ! GRUB_KERNEL_MACHINE_HEADER */ #endif /* ! GRUB_KERNEL_MACHINE_HEADER */

View file

@ -1,4 +1 @@
#include <grub/powerpc/ieee1275/kernel.h> #include <grub/powerpc/ieee1275/kernel.h>
#define GRUB_KERNEL_MACHINE_PREFIX 0x2
#define GRUB_KERNEL_MACHINE_DATA_END 0x42

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#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

View file

@ -21,13 +21,6 @@
#include <grub/symbol.h> #include <grub/symbol.h>
#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 #ifndef ASM_FILE
void EXPORT_FUNC (grub_reboot) (void); void EXPORT_FUNC (grub_reboot) (void);

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#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

View file

@ -33,6 +33,7 @@
#include <grub/time.h> #include <grub/time.h>
#include <grub/symbol.h> #include <grub/symbol.h>
#include <grub/cpu/io.h> #include <grub/cpu/io.h>
#include <grub/cpu/kernel.h>
#define GRUB_FLOPPY_REG_DIGITAL_OUTPUT 0x3f2 #define GRUB_FLOPPY_REG_DIGITAL_OUTPUT 0x3f2

View file

@ -19,9 +19,9 @@
#define ASM_FILE 1 #define ASM_FILE 1
#include <grub/symbol.h> #include <grub/symbol.h>
#include <grub/machine/kernel.h>
#include <grub/machine/memory.h> #include <grub/machine/memory.h>
#include <grub/cpu/linux.h> #include <grub/cpu/linux.h>
#include <grub/cpu/kernel.h>
#include <multiboot.h> #include <multiboot.h>
#include <multiboot2.h> #include <multiboot2.h>
@ -44,7 +44,7 @@ _start:
* This is a special data area at a fixed offset from the beginning. * 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) VARIABLE(grub_prefix)
/* to be filled by grub-mkimage */ /* to be filled by grub-mkimage */
@ -53,7 +53,7 @@ VARIABLE(grub_prefix)
* Leave some breathing room for the prefix. * 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 #if 0
/* /*

View file

@ -19,9 +19,9 @@
#define ASM_FILE 1 #define ASM_FILE 1
#include <grub/symbol.h> #include <grub/symbol.h>
#include <grub/machine/kernel.h>
#include <grub/machine/memory.h> #include <grub/machine/memory.h>
#include <grub/cpu/linux.h> #include <grub/cpu/linux.h>
#include <grub/cpu/kernel.h>
#include <multiboot.h> #include <multiboot.h>
#include <multiboot2.h> #include <multiboot2.h>
@ -45,7 +45,7 @@ _start:
* This is a special data area at a fixed offset from the beginning. * 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) VARIABLE(grub_prefix)
/* to be filled by grub-mkimage */ /* to be filled by grub-mkimage */
@ -54,7 +54,7 @@ VARIABLE(grub_prefix)
* Leave some breathing room for the prefix. * Leave some breathing room for the prefix.
*/ */
. = EXT_C(start) + GRUB_KERNEL_MACHINE_DATA_END . = EXT_C(start) + GRUB_KERNEL_CPU_DATA_END
codestart: codestart:
movl %eax, EXT_C(grub_ieee1275_entry_fn) movl %eax, EXT_C(grub_ieee1275_entry_fn)

View file

@ -30,6 +30,7 @@
#include <grub/time.h> #include <grub/time.h>
#include <grub/machine/console.h> #include <grub/machine/console.h>
#include <grub/machine/kernel.h> #include <grub/machine/kernel.h>
#include <grub/cpu/kernel.h>
#include <grub/ieee1275/ofdisk.h> #include <grub/ieee1275/ofdisk.h>
#include <grub/ieee1275/ieee1275.h> #include <grub/ieee1275/ieee1275.h>

View file

@ -30,7 +30,7 @@
#include <grub/util/misc.h> #include <grub/util/misc.h>
#include <grub/util/resolve.h> #include <grub/util/resolve.h>
#include <grub/kernel.h> #include <grub/kernel.h>
#include <grub/machine/kernel.h> #include <grub/cpu/kernel.h>
#define GRUB_IEEE1275_NOTE_NAME "PowerPC" #define GRUB_IEEE1275_NOTE_NAME "PowerPC"
#define GRUB_IEEE1275_NOTE_TYPE 0x1275 #define GRUB_IEEE1275_NOTE_TYPE 0x1275
@ -297,9 +297,9 @@ add_segments (char *dir, char *prefix, FILE *out, int chrp, char *mods[], char *
if (prefix) 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_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); free (phdrs);

View file

@ -34,7 +34,7 @@ target_cpu=@target_cpu@
platform=@platform@ platform=@platform@
pkglibdir=${libdir}/`echo ${PACKAGE_TARNAME}/${target_cpu}-${platform} | sed ${transform}` 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_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}`
grub_probe=${sbindir}/`echo grub-probe | sed ${transform}` grub_probe=${sbindir}/`echo grub-probe | sed ${transform}`
rootdir= rootdir=
@ -182,7 +182,7 @@ devabstraction_module=`$grub_probe --target=abstraction --device-map=${device_ma
modules="$modules $fs_module $partmap_module $devabstraction_module" modules="$modules $fs_module $partmap_module $devabstraction_module"
# Now perform the installation. # 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 if test $update_nvram = yes; then
set $ofpathname dummy set $ofpathname dummy