2008-04-18 Robert Millan <rmh@aybabtu.com>

Restructures early code path on ieee1275 to unify grub_main() as
        the first C function that is executed in every platform.

        * include/grub/ieee1275/ieee1275.h (grub_ieee1275_init): New prototype.
        * kern/i386/ieee1275/startup.S (_start): Jump to grub_main() instead of
        cmain().
        * kern/powerpc/ieee1275/crt0.S (_start): Likewise.
        * kern/ieee1275/cmain.c (cmain): Rename to ...
        * kern/ieee1275/cmain.c (grub_ieee1275_init): ... this.
        * kern/ieee1275/init.c (grub_machine_init): Call grub_ieee1275_init()
        at the beginning.
This commit is contained in:
robertmh 2008-04-18 15:53:20 +00:00
parent 57490c2bd6
commit 602566f64a
6 changed files with 20 additions and 9 deletions

View file

@ -1,3 +1,17 @@
2008-04-18 Robert Millan <rmh@aybabtu.com>
Restructures early code path on ieee1275 to unify grub_main() as
the first C function that is executed in every platform.
* include/grub/ieee1275/ieee1275.h (grub_ieee1275_init): New prototype.
* kern/i386/ieee1275/startup.S (_start): Jump to grub_main() instead of
cmain().
* kern/powerpc/ieee1275/crt0.S (_start): Likewise.
* kern/ieee1275/cmain.c (cmain): Rename to ...
* kern/ieee1275/cmain.c (grub_ieee1275_init): ... this.
* kern/ieee1275/init.c (grub_machine_init): Call grub_ieee1275_init()
at the beginning.
2008-04-18 Robert Millan <rmh@aybabtu.com>
* util/update-grub.in: Fix syntax error when setting

View file

@ -97,6 +97,7 @@ extern void EXPORT_FUNC(grub_ieee1275_set_flag) (enum grub_ieee1275_flag flag);
void EXPORT_FUNC(grub_ieee1275_init) (void);
int EXPORT_FUNC(grub_ieee1275_finddevice) (char *name,
grub_ieee1275_phandle_t *phandlep);
int EXPORT_FUNC(grub_ieee1275_get_property) (grub_ieee1275_phandle_t phandle,

View file

@ -39,7 +39,7 @@
start:
_start:
movl %eax, EXT_C(grub_ieee1275_entry_fn)
jmp EXT_C(cmain)
jmp EXT_C(grub_main)
/*
* This call is special... it never returns... in fact it should simply

View file

@ -151,9 +151,8 @@ grub_ieee1275_find_options (void)
#undef SF
#undef OHW
void cmain (void);
void
cmain (void)
grub_ieee1275_init (void)
{
grub_ieee1275_finddevice ("/chosen", &grub_ieee1275_chosen);
@ -162,9 +161,4 @@ cmain (void)
grub_ieee1275_mmu = 0;
grub_ieee1275_find_options ();
/* Now invoke the main function. */
grub_main ();
/* Never reached. */
}

View file

@ -180,6 +180,8 @@ grub_machine_init (void)
char args[256];
int actual;
grub_ieee1275_init ();
grub_console_init ();
#ifdef __i386__
grub_keyboard_controller_init ();

View file

@ -42,5 +42,5 @@ _start:
lis 9, grub_ieee1275_entry_fn@ha
stw 5, grub_ieee1275_entry_fn@l(9)
bl cmain
bl grub_main
1: b 1b