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:
parent
b86408f869
commit
eba0ce9f97
16 changed files with 84 additions and 49 deletions
2
DISTLIST
2
DISTLIST
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
30
include/grub/i386/kernel.h
Normal file
30
include/grub/i386/kernel.h
Normal 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
|
|
@ -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);
|
||||||
|
|
33
include/grub/powerpc/kernel.h
Normal file
33
include/grub/powerpc/kernel.h
Normal 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
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue