+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.
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)
{
--- /dev/null
+/* 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");
+}
+
--- /dev/null
+/* 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");
+}
#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. */
{
grub_unregister_command ("suspend");
}
-#endif /* ! GRUB_UTIL */
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
# 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)
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,