]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2005-01-20 Hollis Blanchard <hollis@penguinppc.org>
authorhollisb <hollisb@localhost>
Fri, 21 Jan 2005 02:45:03 +0000 (02:45 +0000)
committerhollisb <hollisb@localhost>
Fri, 21 Jan 2005 02:45:03 +0000 (02:45 +0000)
* boot/powerpc/ieee1275/ieee1275.c (grub_ieee1275_enter): New
function.
* conf/powerpc-ieee1275.rmk (pkgdata_MODULES): Add suspend.mod.
(suspend_mod_SOURCES): New variable.
(suspend_mod_CFLAGS): Likewise.
* include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_enter):
New prototype.
* commands/ieee1275/suspend.c: New file.

ChangeLog
boot/powerpc/ieee1275/ieee1275.c
commands/ieee1275/suspend.c [new file with mode: 0644]
conf/powerpc-ieee1275.rmk
include/grub/powerpc/ieee1275/ieee1275.h

index 7ccefb7b409e2dbf98aad1b1d11863124f3d56d0..8ed3e06675f052407e4cd09cb947843b0fca5be7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2005-01-20  Hollis Blanchard  <hollis@penguinppc.org>
+
+       * boot/powerpc/ieee1275/ieee1275.c (grub_ieee1275_enter): New
+       function.
+       * conf/powerpc-ieee1275.rmk (pkgdata_MODULES): Add suspend.mod.
+       (suspend_mod_SOURCES): New variable.
+       (suspend_mod_CFLAGS): Likewise.
+       * include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_enter):
+       New prototype.
+       * commands/ieee1275/suspend.c: New file.
+
 2005-01-20  Timothy Baldwin  <T.E.Baldwin99@members.leeds.ac.uk>
 
        * include/grub/dl.h (GRUB_MOD_INIT): Changed `__attribute__
index 6ba7727bb09186c502cec396feff5679b7f64305..528b83d366e4a83fb4b11c382a5e57470bbf10e2 100644 (file)
@@ -331,6 +331,20 @@ grub_ieee1275_parent (grub_ieee1275_phandle_t node,
   return 0;
 }
 
+int
+grub_ieee1275_enter (void)
+{
+  struct enter_args {
+    struct grub_ieee1275_common_hdr common;
+  } args;
+
+  INIT_IEEE1275_COMMON (&args.common, "enter", 0, 0);
+
+  if (IEEE1275_CALL_ENTRY_FN (&args) == -1)
+    return -1;
+  return 0;
+}
+
 int
 grub_ieee1275_exit (void)
 {
diff --git a/commands/ieee1275/suspend.c b/commands/ieee1275/suspend.c
new file mode 100644 (file)
index 0000000..d8811af
--- /dev/null
@@ -0,0 +1,64 @@
+/* suspend.c - command to suspend GRUB and return to Open Firmware  */
+/*
+ *  GRUB  --  GRand Unified Bootloader
+ *  Copyright (C) 2005  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 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <grub/normal.h>
+#include <grub/dl.h>
+#include <grub/misc.h>
+#include <grub/machine/ieee1275.h>
+
+static grub_err_t
+grub_cmd_suspend (struct grub_arg_list *state, int argc, char **args)
+{
+  (void)state;
+  (void)argc;
+  (void)args;
+
+  grub_printf("Run 'go' to resume GRUB.\n");
+  grub_ieee1275_enter();
+  return 0;
+}
+
+\f
+#ifdef GRUB_UTIL
+void
+grub_suspend_init (void)
+{
+  grub_register_command ("suspend", grub_cmd_suspend, GRUB_COMMAND_FLAG_BOTH,
+                        "suspend", "Return to Open Firmware prompt", 0);
+}
+
+void
+grub_suspend_fini (void)
+{
+  grub_unregister_command ("suspend");
+}
+#else /* ! GRUB_UTIL */
+GRUB_MOD_INIT
+{
+  (void)mod;                   /* To stop warning. */
+  grub_register_command ("suspend", grub_cmd_suspend, GRUB_COMMAND_FLAG_BOTH,
+                        "suspend", "Return to Open Firmware prompt", 0);
+}
+
+GRUB_MOD_FINI
+{
+  grub_unregister_command ("suspend");
+}
+#endif /* ! GRUB_UTIL */
index 4732c992ff21d32805304b2d4d9ac23dbb2ee4b3..dfbf798ac41918a149810163cfd3f3bd1981a7df 100644 (file)
@@ -64,7 +64,8 @@ genmoddep_SOURCES = util/genmoddep.c
 # Modules.
 pkgdata_MODULES = _linux.mod linux.mod fat.mod ufs.mod ext2.mod minix.mod \
        hfs.mod jfs.mod normal.mod hello.mod font.mod \
-       boot.mod cmp.mod cat.mod terminal.mod fshelp.mod amiga.mod apple.mod pc.mod
+       boot.mod cmp.mod cat.mod terminal.mod fshelp.mod amiga.mod apple.mod \
+       pc.mod suspend.mod
 
 # For fshelp.mod.
 fshelp_mod_SOURCES = fs/fshelp.c
@@ -151,3 +152,7 @@ apple_mod_CFLAGS = $(COMMON_CFLAGS)
 # For pc.mod
 pc_mod_SOURCES = partmap/pc.c
 pc_mod_CFLAGS = $(COMMON_CFLAGS)
+
+# For suspend.mod
+suspend_mod_SOURCES = commands/ieee1275/suspend.c
+suspend_mod_CFLAGS = $(COMMON_CFLAGS)
index 2cacf43c5265a1fe1a88a10bf5286bcca55c4041..b394506d8cc06fbb6defa4a160c6061b7bbb6d16 100644 (file)
@@ -106,6 +106,7 @@ int EXPORT_FUNC(grub_ieee1275_child) (grub_ieee1275_phandle_t node,
                                      grub_ieee1275_phandle_t *result);
 int EXPORT_FUNC(grub_ieee1275_parent) (grub_ieee1275_phandle_t node,
                                       grub_ieee1275_phandle_t *result);
+int EXPORT_FUNC(grub_ieee1275_enter) (void);
 int EXPORT_FUNC(grub_ieee1275_exit) (void);
 int EXPORT_FUNC(grub_ieee1275_open) (char *node,
                                     grub_ieee1275_ihandle_t *result);