diff -x '*.mk' -x '*~' -x CVS -x .svn -x configure -x config.h.in -Nurp ../../grub2/conf/i386-ieee1275.rmk ./conf/i386-ieee1275.rmk --- ../../grub2/conf/i386-ieee1275.rmk 1970-01-01 01:00:00.000000000 +0100 +++ ./conf/i386-ieee1275.rmk 2008-01-12 03:04:50.000000000 +0100 @@ -0,0 +1,117 @@ +# -*- makefile -*- + +COMMON_ASFLAGS = -m32 -nostdinc -fno-builtin +COMMON_CFLAGS = -ffreestanding -mrtd -mregparm=3 +COMMON_LDFLAGS = -nostdlib -static -lgcc + +# Images. +pkglib_PROGRAMS = kernel.elf + +# For kernel.elf. +kernel_elf_SOURCES = kern/i386/ieee1275/startup.S kern/i386/ieee1275/init.c \ + kern/powerpc/ieee1275/init.c \ + kern/powerpc/ieee1275/cmain.c kern/powerpc/ieee1275/openfw.c \ + kern/main.c kern/device.c \ + kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \ + kern/misc.c kern/mm.c kern/loader.c kern/rescue.c kern/term.c \ + kern/i386/dl.c kern/parser.c kern/partition.c \ + kern/env.c \ + kern/ieee1275/ieee1275.c \ + term/ieee1275/ofconsole.c disk/ieee1275/ofdisk.c \ + symlist.c +kernel_elf_HEADERS = arg.h cache.h device.h disk.h dl.h elf.h elfload.h \ + env.h err.h file.h fs.h kernel.h loader.h misc.h mm.h net.h parser.h \ + partition.h pc_partition.h rescue.h symbol.h term.h time.h types.h \ + ieee1275/ieee1275.h +kernel_elf_CFLAGS = $(COMMON_CFLAGS) +kernel_elf_LDFLAGS = $(COMMON_LDFLAGS) -Wl,-N,-S,-Ttext,0x100000,-Bstatic + +MOSTLYCLEANFILES += symlist.c kernel_syms.lst +DEFSYMFILES += kernel_syms.lst + +symlist.c: $(addprefix include/grub/,$(kernel_elf_HEADERS)) config.h gensymlist.sh + /bin/sh gensymlist.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1) + +kernel_syms.lst: $(addprefix include/grub/,$(kernel_elf_HEADERS)) config.h genkernsyms.sh + /bin/sh genkernsyms.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1) + +# Utilities. +bin_UTILITIES = grub-mkimage +sbin_UTILITIES = grub-mkdevicemap grub-probe +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) + +# For grub-mkdevicemap. +grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c \ + util/i386/get_disk_name.c + +# For grub-probe. +util/grub-probe.c_DEPENDENCIES = grub_probe_init.h +grub_probe_SOURCES = util/grub-probe.c \ + util/biosdisk.c util/misc.c util/getroot.c \ + kern/device.c kern/disk.c kern/err.c kern/misc.c fs/fat.c \ + fs/ext2.c kern/parser.c kern/partition.c \ + partmap/pc.c partmap/apple.c partmap/gpt.c \ + fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c fs/ntfs.c fs/ntfscomp.c \ + fs/xfs.c fs/affs.c fs/sfs.c fs/hfsplus.c \ + kern/fs.c \ + kern/env.c fs/fshelp.c \ + disk/lvm.c disk/raid.c grub_probe_init.c + +# For grub-emu. +grub_emu_DEPENDENCIES = grub_script.tab.c grub_script.tab.h \ + grub_emu_init.h +grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c \ + commands/configfile.c commands/echo.c commands/help.c \ + commands/terminal.c commands/ls.c commands/test.c \ + commands/search.c commands/blocklist.c commands/hexdump.c \ + commands/i386/pc/halt.c commands/i386/pc/reboot.c \ + commands/i386/cpuid.c \ + disk/host.c disk/loopback.c disk/raid.c disk/lvm.c \ + fs/affs.c fs/ext2.c fs/fat.c fs/fshelp.c fs/hfs.c fs/iso9660.c \ + fs/jfs.c fs/minix.c fs/sfs.c fs/ufs.c fs/xfs.c fs/hfsplus.c \ + fs/ntfs.c fs/ntfscomp.c fs/cpio.c \ + io/gzio.c \ + kern/device.c kern/disk.c kern/dl.c kern/elf.c kern/env.c \ + kern/err.c \ + normal/execute.c kern/file.c kern/fs.c normal/lexer.c \ + kern/loader.c kern/main.c kern/misc.c kern/parser.c \ + grub_script.tab.c kern/partition.c kern/rescue.c kern/term.c \ + normal/arg.c normal/cmdline.c normal/command.c normal/function.c\ + normal/completion.c normal/main.c \ + normal/menu.c normal/menu_entry.c normal/misc.c normal/script.c \ + normal/color.c \ + partmap/amiga.c partmap/apple.c partmap/pc.c partmap/sun.c \ + partmap/acorn.c partmap/gpt.c \ + util/console.c util/hostfs.c util/grub-emu.c util/misc.c \ + util/biosdisk.c util/getroot.c \ + util/i386/pc/misc.c grub_emu_init.c + +grub_emu_LDFLAGS = $(LIBCURSES) + +# Modules. +pkglib_MODULES = normal.mod cpuid.mod + +# For normal.mod. +normal_mod_DEPENDENCIES = grub_script.tab.c grub_script.tab.h +normal_mod_SOURCES = normal/arg.c normal/cmdline.c normal/command.c \ + normal/completion.c normal/execute.c \ + normal/function.c normal/lexer.c normal/main.c normal/menu.c \ + normal/menu_entry.c normal/misc.c grub_script.tab.c \ + normal/script.c normal/i386/setjmp.S normal/color.c +normal_mod_CFLAGS = $(COMMON_CFLAGS) +normal_mod_ASFLAGS = $(COMMON_ASFLAGS) +normal_mod_LDFLAGS = $(COMMON_LDFLAGS) + +# For cpuid.mod. +cpuid_mod_SOURCES = commands/i386/cpuid.c +cpuid_mod_CFLAGS = $(COMMON_CFLAGS) +cpuid_mod_LDFLAGS = $(COMMON_LDFLAGS) + +include $(srcdir)/conf/common.mk diff -x '*.mk' -x '*~' -x CVS -x .svn -x configure -x config.h.in -Nurp ../../grub2/configure.ac ./configure.ac --- ../../grub2/configure.ac 2007-12-25 10:09:42.000000000 +0100 +++ ./configure.ac 2008-01-12 03:27:24.000000000 +0100 @@ -1,6 +1,6 @@ # Process this file with autoconf to produce a configure script. -# Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc. +# Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Free Software Foundation, Inc. # # This configure.ac is free software; the author # gives unlimited permission to copy and/or distribute it, @@ -79,6 +79,7 @@ case "$target_cpu"-"$platform" in i386-efi) ;; i386-pc) ;; i386-linuxbios) ;; + i386-ieee1275) ;; powerpc-ieee1275) ;; sparc64-ieee1275) ;; *) AC_MSG_ERROR([unsupported machine type]) ;; diff -x '*.mk' -x '*~' -x CVS -x .svn -x configure -x config.h.in -Nurp ../../grub2/include/grub/i386/ieee1275/console.h ./include/grub/i386/ieee1275/console.h --- ../../grub2/include/grub/i386/ieee1275/console.h 1970-01-01 01:00:00.000000000 +0100 +++ ./include/grub/i386/ieee1275/console.h 2008-01-12 00:00:56.000000000 +0100 @@ -0,0 +1 @@ +#include diff -x '*.mk' -x '*~' -x CVS -x .svn -x configure -x config.h.in -Nurp ../../grub2/include/grub/i386/ieee1275/ieee1275.h ./include/grub/i386/ieee1275/ieee1275.h --- ../../grub2/include/grub/i386/ieee1275/ieee1275.h 1970-01-01 01:00:00.000000000 +0100 +++ ./include/grub/i386/ieee1275/ieee1275.h 2008-01-12 00:01:36.000000000 +0100 @@ -0,0 +1 @@ +#include diff -x '*.mk' -x '*~' -x CVS -x .svn -x configure -x config.h.in -Nurp ../../grub2/include/grub/i386/ieee1275/kernel.h ./include/grub/i386/ieee1275/kernel.h --- ../../grub2/include/grub/i386/ieee1275/kernel.h 1970-01-01 01:00:00.000000000 +0100 +++ ./include/grub/i386/ieee1275/kernel.h 2008-01-12 00:01:13.000000000 +0100 @@ -0,0 +1 @@ +#include diff -x '*.mk' -x '*~' -x CVS -x .svn -x configure -x config.h.in -Nurp ../../grub2/include/grub/i386/ieee1275/time.h ./include/grub/i386/ieee1275/time.h --- ../../grub2/include/grub/i386/ieee1275/time.h 1970-01-01 01:00:00.000000000 +0100 +++ ./include/grub/i386/ieee1275/time.h 2008-01-11 23:59:29.000000000 +0100 @@ -0,0 +1 @@ +#include diff -x '*.mk' -x '*~' -x CVS -x .svn -x configure -x config.h.in -Nurp ../../grub2/kern/i386/ieee1275/init.c ./kern/i386/ieee1275/init.c --- ../../grub2/kern/i386/ieee1275/init.c 1970-01-01 01:00:00.000000000 +0100 +++ ./kern/i386/ieee1275/init.c 2008-01-12 03:26:35.000000000 +0100 @@ -0,0 +1,35 @@ +/* init.c -- Initialize GRUB on Open Firmware. */ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2003, 2004, 2005, 2007 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 . + */ + +#include + +void +grub_exit (void) +{ + /* Trap to Open Firmware. */ + /* FIXME. */ + + for (;;); +} + +void +grub_arch_sync_caches (void *address __attribute__ ((unused)), + grub_size_t len __attribute__ ((unused))) +{ +} diff -x '*.mk' -x '*~' -x CVS -x .svn -x configure -x config.h.in -Nurp ../../grub2/kern/i386/ieee1275/startup.S ./kern/i386/ieee1275/startup.S --- ../../grub2/kern/i386/ieee1275/startup.S 1970-01-01 01:00:00.000000000 +0100 +++ ./kern/i386/ieee1275/startup.S 2008-01-12 03:27:13.000000000 +0100 @@ -0,0 +1,38 @@ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 1999,2000,2001,2002,2003,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 . + */ + +#define ASM_FILE 1 + +#include + +/* + * Note: GRUB is compiled with the options -mrtd and -mregparm=3. + * So the first three arguments are passed in %eax, %edx, and %ecx, + * respectively, and if a function has a fixed number of arguments + * and the number if greater than three, the function must return + * with "ret $N" where N is ((the number of arguments) - 3) * 4. + */ + + .file "startup.S" + .text + .globl start, _start + +start: +_start: + movl %eax, EXT_C(grub_ieee1275_entry_fn) + jmp EXT_C(cmain) diff -x '*.mk' -x '*~' -x CVS -x .svn -x configure -x config.h.in -Nurp ../../grub2/kern/main.c ./kern/main.c --- ../../grub2/kern/main.c 2008-01-05 13:04:35.000000000 +0100 +++ ./kern/main.c 2008-01-12 03:03:04.000000000 +0100 @@ -120,7 +120,7 @@ grub_main (void) /* Load pre-loaded modules and free the space. */ grub_register_exported_symbols (); - grub_load_modules (); +// grub_load_modules (); /* It is better to set the root device as soon as possible, for convenience. */ diff -x '*.mk' -x '*~' -x CVS -x .svn -x configure -x config.h.in -Nurp ../../grub2/kern/powerpc/ieee1275/cmain.c ./kern/powerpc/ieee1275/cmain.c --- ../../grub2/kern/powerpc/ieee1275/cmain.c 2007-12-30 09:52:05.000000000 +0100 +++ ./kern/powerpc/ieee1275/cmain.c 2008-01-12 03:12:01.000000000 +0100 @@ -58,7 +58,7 @@ grub_ieee1275_find_options (void) grub_ieee1275_finddevice ("/options", &options); rc = grub_ieee1275_get_property (options, "real-mode?", &realmode, sizeof realmode, 0); - if ((rc >= 0) && realmode) +// if ((rc >= 0) && realmode) grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_REAL_MODE); grub_ieee1275_finddevice ("/openprom", &openprom); @@ -102,12 +102,9 @@ grub_ieee1275_find_options (void) } } -void cmain (uint32_t r3, uint32_t r4, uint32_t r5); void -cmain (UNUSED uint32_t r3, UNUSED uint32_t r4, uint32_t r5) +cmain (void) { - grub_ieee1275_entry_fn = (int (*)(void *)) r5; - grub_ieee1275_finddevice ("/chosen", &grub_ieee1275_chosen); grub_ieee1275_find_options (); diff -x '*.mk' -x '*~' -x CVS -x .svn -x configure -x config.h.in -Nurp ../../grub2/kern/powerpc/ieee1275/init.c ./kern/powerpc/ieee1275/init.c --- ../../grub2/kern/powerpc/ieee1275/init.c 2008-01-03 23:43:46.000000000 +0100 +++ ./kern/powerpc/ieee1275/init.c 2008-01-12 03:26:06.000000000 +0100 @@ -52,15 +52,6 @@ grub_millisleep (grub_uint32_t ms) grub_millisleep_generic (ms); } -void -grub_exit (void) -{ - /* Trap to Open Firmware. */ - asm ("trap"); - - for (;;); -} - /* Translate an OF filesystem path (separated by backslashes), into a GRUB path (separated by forward slashes). */ static void diff -x '*.mk' -x '*~' -x CVS -x .svn -x configure -x config.h.in -Nurp ../../grub2/kern/powerpc/ieee1275/openfw.c ./kern/powerpc/ieee1275/openfw.c --- ../../grub2/kern/powerpc/ieee1275/openfw.c 2007-12-30 09:52:05.000000000 +0100 +++ ./kern/powerpc/ieee1275/openfw.c 2008-01-12 02:53:01.000000000 +0100 @@ -163,18 +163,18 @@ grub_err_t grub_available_iterate (int ( /* Decode each entry and call `hook'. */ i = 0; - while (i < sizeof (available)) + while (i < sizeof (available) && available[i]) { grub_uint64_t address; grub_uint64_t size; - address = available[i++]; + address = grub_be_to_cpu32 (available[i++]); if (address_cells == 2) - address = (address << 32) | available[i++]; + address = (address << 32) | grub_be_to_cpu32 (available[i++]); - size = available[i++]; + size = grub_be_to_cpu32 (available[i++]); if (size_cells == 2) - size = (size << 32) | available[i++]; + size = (size << 32) | grub_be_to_cpu32 (available[i++]); if (hook (address, size)) break; diff -x '*.mk' -x '*~' -x CVS -x .svn -x configure -x config.h.in -Nurp ../../grub2/term/ieee1275/ofconsole.c ./term/ieee1275/ofconsole.c --- ../../grub2/term/ieee1275/ofconsole.c 2007-12-25 12:10:47.000000000 +0100 +++ ./term/ieee1275/ofconsole.c 2008-01-12 03:09:02.000000000 +0100 @@ -369,9 +369,6 @@ static struct grub_term grub_ofconsole_t .getwh = grub_ofconsole_getwh, .gotoxy = grub_ofconsole_gotoxy, .cls = grub_ofconsole_cls, - .setcolorstate = grub_ofconsole_setcolorstate, - .setcolor = grub_ofconsole_setcolor, - .getcolor = grub_ofconsole_getcolor, .setcursor = grub_ofconsole_setcursor, .refresh = grub_ofconsole_refresh, .flags = 0,