New patch.  Same thing, but includes halt, reboot and suspend commands.

-- 
Robert Millan

<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call, if you are unable to speak?
(as seen on /.)
	* configure.ac: Add `i386-ieee1275' to the list of supported targets.
	* conf/i386-ieee1275.rmk: New file.
	* include/grub/i386/ieee1275/console.h: Likewise.
	* include/grub/i386/ieee1275/ieee1275.h: Likewise.
	* include/grub/i386/ieee1275/kernel.h: Likewise.
	* include/grub/i386/ieee1275/time.h: Likewise.
	* kern/i386/ieee1275/init.c: Likewise.
	* kern/i386/ieee1275/startup.S: Likewise.

diff -Nurp grub2/conf/i386-ieee1275.rmk i386-ofw/conf/i386-ieee1275.rmk
--- grub2/conf/i386-ieee1275.rmk	1970-01-01 01:00:00.000000000 +0100
+++ i386-ofw/conf/i386-ieee1275.rmk	2008-01-15 19:16:14.000000000 +0100
@@ -0,0 +1,132 @@
+# -*- 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 machine/kernel.h
+kernel_elf_CFLAGS = $(COMMON_CFLAGS)
+kernel_elf_LDFLAGS = $(COMMON_LDFLAGS) -Wl,-N,-S,-Ttext,0x10000,-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/ieee1275/halt.c commands/ieee1275/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 halt.mod reboot.mod suspend.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 suspend.mod
+suspend_mod_SOURCES = commands/ieee1275/suspend.c
+suspend_mod_CFLAGS = $(COMMON_CFLAGS)
+suspend_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+# For reboot.mod
+reboot_mod_SOURCES = commands/ieee1275/reboot.c
+reboot_mod_CFLAGS = $(COMMON_CFLAGS)
+reboot_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+# For halt.mod
+halt_mod_SOURCES = commands/ieee1275/halt.c
+halt_mod_CFLAGS = $(COMMON_CFLAGS)
+halt_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 -Nurp grub2/configure.ac i386-ofw/configure.ac
--- grub2/configure.ac	2007-12-25 10:09:42.000000000 +0100
+++ i386-ofw/configure.ac	2008-01-15 19:16:14.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 -Nurp grub2/include/grub/i386/ieee1275/console.h i386-ofw/include/grub/i386/ieee1275/console.h
--- grub2/include/grub/i386/ieee1275/console.h	1970-01-01 01:00:00.000000000 +0100
+++ i386-ofw/include/grub/i386/ieee1275/console.h	2008-01-15 19:16:14.000000000 +0100
@@ -0,0 +1 @@
+#include <grub/powerpc/ieee1275/console.h>
diff -Nurp grub2/include/grub/i386/ieee1275/ieee1275.h i386-ofw/include/grub/i386/ieee1275/ieee1275.h
--- grub2/include/grub/i386/ieee1275/ieee1275.h	1970-01-01 01:00:00.000000000 +0100
+++ i386-ofw/include/grub/i386/ieee1275/ieee1275.h	2008-01-15 19:16:14.000000000 +0100
@@ -0,0 +1 @@
+#include <grub/powerpc/ieee1275/ieee1275.h>
diff -Nurp grub2/include/grub/i386/ieee1275/kernel.h i386-ofw/include/grub/i386/ieee1275/kernel.h
--- grub2/include/grub/i386/ieee1275/kernel.h	1970-01-01 01:00:00.000000000 +0100
+++ i386-ofw/include/grub/i386/ieee1275/kernel.h	2008-01-15 19:16:14.000000000 +0100
@@ -0,0 +1 @@
+#include <grub/powerpc/ieee1275/kernel.h>
diff -Nurp grub2/include/grub/i386/ieee1275/time.h i386-ofw/include/grub/i386/ieee1275/time.h
--- grub2/include/grub/i386/ieee1275/time.h	1970-01-01 01:00:00.000000000 +0100
+++ i386-ofw/include/grub/i386/ieee1275/time.h	2008-01-15 19:16:14.000000000 +0100
@@ -0,0 +1 @@
+#include <grub/powerpc/ieee1275/time.h>
diff -Nurp grub2/kern/i386/ieee1275/init.c i386-ofw/kern/i386/ieee1275/init.c
--- grub2/kern/i386/ieee1275/init.c	1970-01-01 01:00:00.000000000 +0100
+++ i386-ofw/kern/i386/ieee1275/init.c	2008-01-15 19:16:14.000000000 +0100
@@ -0,0 +1,26 @@
+/*  init.c -- Initialize GRUB on Open Firmware.  */
+/*
+ *  GRUB  --  GRand Unified Bootloader
+ *  Copyright (C) 2003,2004,2005,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/>.
+ */
+
+#include <grub/types.h>
+
+void 
+grub_arch_sync_caches (void *address __attribute__ ((unused)),
+		       grub_size_t len __attribute__ ((unused)))
+{
+}
diff -Nurp grub2/kern/i386/ieee1275/startup.S i386-ofw/kern/i386/ieee1275/startup.S
--- grub2/kern/i386/ieee1275/startup.S	1970-01-01 01:00:00.000000000 +0100
+++ i386-ofw/kern/i386/ieee1275/startup.S	2008-01-15 19:16:14.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 <http://www.gnu.org/licenses/>.
+ */
+
+#define ASM_FILE	1
+
+#include <grub/symbol.h>
+
+/*
+ * 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, %ecx
+	jmp EXT_C(cmain)
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to