]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2005-01-30 Marco Gerards <metgerards@student.han.nl>
authormarco_g <marco_g@localhost>
Mon, 31 Jan 2005 21:28:34 +0000 (21:28 +0000)
committermarco_g <marco_g@localhost>
Mon, 31 Jan 2005 21:28:34 +0000 (21:28 +0000)
* boot/powerpc/ieee1275/ieee1275.c (grub_ieee1275_interpret): New
function.
* commands/ieee1275/halt.c: New file.
* commands/ieee1275/reboot.c: Likewise.
* commands/ieee1275/suspend.c (grub_cmd_suspend): Use
`__attribute__ ((unused))'.  Some GCS related fixed.
(grub_suspend_init) [GRUB_UTIL]: Function removed.
(grub_suspend_fini): Likewise.
* conf/powerpc-ieee1275.rmk (pkgdata_MODULES): Add `reboot.mod'
and `halt.mod'.
(reboot_mod_SOURCES, reboot_mod_CFLAGS, halt_mod_SOURCES)
(halt_mod_CFLAGS): New variables.
* include/grub/powerpc/ieee1275/ieee1275.h
(grub_ieee1275_interpret): New prototype.

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

index 3b6977faf1d762fa9d7352ea4dae565b4d41f573..48769265b8171afb0d46e1b61d7733deb37992a7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2005-01-30  Marco Gerards  <metgerards@student.han.nl>
+
+       * boot/powerpc/ieee1275/ieee1275.c (grub_ieee1275_interpret): New
+       function.
+       * commands/ieee1275/halt.c: New file.
+       * commands/ieee1275/reboot.c: Likewise.
+       * commands/ieee1275/suspend.c (grub_cmd_suspend): Use
+       `__attribute__ ((unused))'.  Some GCS related fixed.
+       (grub_suspend_init) [GRUB_UTIL]: Function removed.
+       (grub_suspend_fini): Likewise.
+       * conf/powerpc-ieee1275.rmk (pkgdata_MODULES): Add `reboot.mod'
+       and `halt.mod'.
+       (reboot_mod_SOURCES, reboot_mod_CFLAGS, halt_mod_SOURCES)
+       (halt_mod_CFLAGS): New variables.
+       * include/grub/powerpc/ieee1275/ieee1275.h
+       (grub_ieee1275_interpret): New prototype.
+
 2005-01-29  Yoshinori K. Okuji  <okuji@enbug.org>
 
        * include/grub/misc.h (memmove): New prototype.
index 528b83d366e4a83fb4b11c382a5e57470bbf10e2..2d0c50463498e1e10070fe6914b4f0242ca34018 100644 (file)
@@ -331,6 +331,25 @@ grub_ieee1275_parent (grub_ieee1275_phandle_t node,
   return 0;
 }
 
+int
+grub_ieee1275_interpret (const char *command, int *catch)
+{
+  struct enter_args {
+    struct grub_ieee1275_common_hdr common;
+    const char *command;
+    int catch;
+  } args;
+
+  INIT_IEEE1275_COMMON (&args.common, "interpret", 1, 1);
+  args.command = command;
+
+  if (IEEE1275_CALL_ENTRY_FN (&args) == -1)
+    return -1;
+  if (catch)
+    *catch = args.catch;
+  return 0;
+}
+
 int
 grub_ieee1275_enter (void)
 {
diff --git a/commands/ieee1275/halt.c b/commands/ieee1275/halt.c
new file mode 100644 (file)
index 0000000..58edd09
--- /dev/null
@@ -0,0 +1,48 @@
+/* halt.c - command to halt the computer.  */
+/*
+ *  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_halt (struct grub_arg_list *state __attribute__ ((unused)),
+              int argc __attribute__ ((unused)),
+              char **args __attribute__ ((unused)))
+{
+  grub_ieee1275_interpret ("shut-down", 0);
+  return 0;
+}
+
+\f
+GRUB_MOD_INIT
+{
+  (void)mod;                   /* To stop warning. */
+  grub_register_command ("halt", grub_cmd_halt, GRUB_COMMAND_FLAG_BOTH,
+                        "halt", "halts the computer.  This command does not"
+                        " work on every firmware.", 0);
+}
+
+GRUB_MOD_FINI
+{
+  grub_unregister_command ("halt");
+}
+
diff --git a/commands/ieee1275/reboot.c b/commands/ieee1275/reboot.c
new file mode 100644 (file)
index 0000000..52c8436
--- /dev/null
@@ -0,0 +1,46 @@
+/* reboot.c - command to reboot the computer.  */
+/*
+ *  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_reboot (struct grub_arg_list *state __attribute__ ((unused)),
+                int argc __attribute__ ((unused)),
+                char **args __attribute__ ((unused)))
+{
+  grub_ieee1275_interpret ("reset-all", 0);
+  return 0;
+}
+
+\f
+GRUB_MOD_INIT
+{
+  (void)mod;                   /* To stop warning. */
+  grub_register_command ("reboot", grub_cmd_reboot, GRUB_COMMAND_FLAG_BOTH,
+                        "reboot", "Reboot the computer", 0);
+}
+
+GRUB_MOD_FINI
+{
+  grub_unregister_command ("reboot");
+}
index d8811afbeab8ccc9526bef4ce177388497380543..7566b34e053988d2b8d259e874948f33f076161d 100644 (file)
 #include <grub/machine/ieee1275.h>
 
 static grub_err_t
-grub_cmd_suspend (struct grub_arg_list *state, int argc, char **args)
+grub_cmd_suspend (struct grub_arg_list *state  __attribute__ ((unused)),
+                 int argc __attribute__ ((unused)),
+                 char **args __attribute__ ((unused)))
 {
-  (void)state;
-  (void)argc;
-  (void)args;
-
-  grub_printf("Run 'go' to resume GRUB.\n");
-  grub_ieee1275_enter();
+  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. */
@@ -61,4 +45,3 @@ GRUB_MOD_FINI
 {
   grub_unregister_command ("suspend");
 }
-#endif /* ! GRUB_UTIL */
index 6398f080245cb234530281e788c86566d7452a2f..9103e8d76ffc06ecf2c5303c7cac63293a9b2ebe 100644 (file)
@@ -65,7 +65,7 @@ genmoddep_SOURCES = util/genmoddep.c
 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 suspend.mod loopback.mod
+       pc.mod suspend.mod loopback.mod reboot.mod halt.mod
 
 # For fshelp.mod.
 fshelp_mod_SOURCES = fs/fshelp.c
@@ -160,3 +160,11 @@ loopback_mod_CFLAGS = $(COMMON_CFLAGS)
 # For suspend.mod
 suspend_mod_SOURCES = commands/ieee1275/suspend.c
 suspend_mod_CFLAGS = $(COMMON_CFLAGS)
+
+# For reboot.mod
+reboot_mod_SOURCES = commands/ieee1275/reboot.c
+reboot_mod_CFLAGS = $(COMMON_CFLAGS)
+
+# For halt.mod
+halt_mod_SOURCES = commands/ieee1275/halt.c
+halt_mod_CFLAGS = $(COMMON_CFLAGS)
index b394506d8cc06fbb6defa4a160c6061b7bbb6d16..8928ae6db2aea4862718d1335b5a1511856d76b5 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_interpret) (const char *command, int *catch);
 int EXPORT_FUNC(grub_ieee1275_enter) (void);
 int EXPORT_FUNC(grub_ieee1275_exit) (void);
 int EXPORT_FUNC(grub_ieee1275_open) (char *node,