On Thu, Apr 17, 2008 at 10:21:14PM -0400, Pavel Roskin wrote:
> Quoting Robert Millan <[EMAIL PROTECTED]>:
>
> >Now that I think of it, is there any reason for doing all the cmain()
> >cruft before grub_main() ? Getting to grub_main() only requires a working
> >stack, which we have, and grub_main() inmediately returns control back to
> >architecture-specific code in grub_machine_init().
> >
> >So why not move from:
> >
> > _start -> cmain -> grub_main
> >
> >to:
> >
> > _start -> grub_main -> grub_machine_init -> cmain
> >
> >?
>
> I think it would be great. We should try to make the code for
> different architectures more uniform to simplify maintenance.
Here. Unfortunately I can't test it as I have no ieee1275 at hand currently.
Anyone?
--
Robert Millan
<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call… if you are unable to speak?
(as seen on /.)
diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -urp ../grub2/include/grub/ieee1275/ieee1275.h ./include/grub/ieee1275/ieee1275.h
--- ../grub2/include/grub/ieee1275/ieee1275.h 2008-01-24 09:21:43.000000000 +0100
+++ ./include/grub/ieee1275/ieee1275.h 2008-04-18 13:31:27.000000000 +0200
@@ -97,6 +97,7 @@ extern void EXPORT_FUNC(grub_ieee1275_se
+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,
diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -urp ../grub2/kern/i386/ieee1275/startup.S ./kern/i386/ieee1275/startup.S
--- ../grub2/kern/i386/ieee1275/startup.S 2008-01-23 10:57:26.000000000 +0100
+++ ./kern/i386/ieee1275/startup.S 2008-04-18 13:29:57.000000000 +0200
@@ -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
diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -urp ../grub2/kern/ieee1275/cmain.c ./kern/ieee1275/cmain.c
--- ../grub2/kern/ieee1275/cmain.c 2008-04-12 23:09:35.000000000 +0200
+++ ./kern/ieee1275/cmain.c 2008-04-18 13:30:43.000000000 +0200
@@ -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. */
}
diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -urp ../grub2/kern/ieee1275/init.c ./kern/ieee1275/init.c
--- ../grub2/kern/ieee1275/init.c 2008-04-12 23:09:36.000000000 +0200
+++ ./kern/ieee1275/init.c 2008-04-18 13:31:51.000000000 +0200
@@ -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 ();
diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -urp ../grub2/kern/powerpc/ieee1275/crt0.S ./kern/powerpc/ieee1275/crt0.S
--- ../grub2/kern/powerpc/ieee1275/crt0.S 2008-01-19 12:41:00.000000000 +0100
+++ ./kern/powerpc/ieee1275/crt0.S 2008-04-18 13:30:12.000000000 +0200
@@ -42,5 +42,5 @@ _start:
lis 9, [EMAIL PROTECTED]
stw 5, [EMAIL PROTECTED](9)
- bl cmain
+ bl grub_main
1: b 1b
_______________________________________________
Grub-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/grub-devel