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.
This commit is contained in:
hollisb 2005-01-21 02:45:03 +00:00
parent b38551dabe
commit 6f1c18bd82
5 changed files with 96 additions and 1 deletions

View file

@ -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__

View 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)
{

View file

@ -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;
}
#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 */

View 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)

View 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);