From: marco_g Date: Mon, 31 Jan 2005 21:28:34 +0000 (+0000) Subject: 2005-01-30 Marco Gerards X-Git-Tag: 1.98~2157 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0f79cdc1dbc793259fdcc0c1b9af5577727d6af1;p=thirdparty%2Fgrub.git 2005-01-30 Marco Gerards * 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. --- diff --git a/ChangeLog b/ChangeLog index 3b6977faf..48769265b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2005-01-30 Marco Gerards + + * 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 * include/grub/misc.h (memmove): New prototype. diff --git a/boot/powerpc/ieee1275/ieee1275.c b/boot/powerpc/ieee1275/ieee1275.c index 528b83d36..2d0c50463 100644 --- a/boot/powerpc/ieee1275/ieee1275.c +++ b/boot/powerpc/ieee1275/ieee1275.c @@ -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 index 000000000..58edd09c6 --- /dev/null +++ b/commands/ieee1275/halt.c @@ -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 +#include +#include +#include + +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; +} + + +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 index 000000000..52c8436ef --- /dev/null +++ b/commands/ieee1275/reboot.c @@ -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 +#include +#include +#include + +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; +} + + +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"); +} diff --git a/commands/ieee1275/suspend.c b/commands/ieee1275/suspend.c index d8811afbe..7566b34e0 100644 --- a/commands/ieee1275/suspend.c +++ b/commands/ieee1275/suspend.c @@ -24,32 +24,16 @@ #include 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; } -#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 */ diff --git a/conf/powerpc-ieee1275.rmk b/conf/powerpc-ieee1275.rmk index 6398f0802..9103e8d76 100644 --- a/conf/powerpc-ieee1275.rmk +++ b/conf/powerpc-ieee1275.rmk @@ -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) diff --git a/include/grub/powerpc/ieee1275/ieee1275.h b/include/grub/powerpc/ieee1275/ieee1275.h index b394506d8..8928ae6db 100644 --- a/include/grub/powerpc/ieee1275/ieee1275.h +++ b/include/grub/powerpc/ieee1275/ieee1275.h @@ -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,