From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DVJmo-0007Ou-Ku for mharc-grub-devel@gnu.org; Mon, 09 May 2005 21:43:50 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DVJmm-0007OJ-C8 for grub-devel@gnu.org; Mon, 09 May 2005 21:43:48 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DVJmi-0007M9-Q9 for grub-devel@gnu.org; Mon, 09 May 2005 21:43:45 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DVJmi-0007Km-EJ for grub-devel@gnu.org; Mon, 09 May 2005 21:43:44 -0400 Received: from [207.217.121.183] (helo=pop-a065c05.pas.sa.earthlink.net) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DVJqL-0005kI-Lo for grub-devel@gnu.org; Mon, 09 May 2005 21:47:30 -0400 Received: from user-0vvde2g.cable.mindspring.com ([63.246.184.80] helo=miracle) by pop-a065c05.pas.sa.earthlink.net with esmtp (Exim 3.36 #10) id 1DVJkF-00035n-00 for grub-devel@gnu.org; Mon, 09 May 2005 18:41:12 -0700 Received: from hollis by miracle with local (Exim 3.36 #1 (Debian)) id 1DVJij-0005Gl-00 for ; Mon, 09 May 2005 20:39:37 -0500 Date: Mon, 9 May 2005 20:39:36 -0500 To: grub-devel@gnu.org Message-ID: <20050510013936.GA20230@miracle> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.6+20040907i From: Hollis Blanchard Subject: [ppc] [patch] more cleanups X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 May 2005 01:43:49 -0000 I've found a few more things that needed cleaning, so here is the updated patch. I have tested it. - instead of needing to find "/chosen" in a variety of places, we find it once and save it in a global. - some of the functions in boot/powerpc/ieee1275/ieee1275.c had slightly inconsistent prototypes. - we were initializing initrd_addr to 0xc0000000 even when we didn't have one loaded. I will resist the urge to keep growing this patch. ;) -Hollis 2005-05-08 Hollis Blanchard * boot/powerpc/ieee1275/cmain.c (module_info): Remove definition. (grub_ieee1275_chosen): New variable. (cmain): Initialize and use `grub_ieee1275_chosen' instead of `chosen'. * boot/powerpc/ieee1275/crt0.S (init_stack): Remove stack space. * boot/powerpc/ieee1275/ieee1275.c (grub_ieee1275_get_property): Rename first argument to `phandle' for consistency. (grub_ieee1275_get_property_length): Likewise. (grub_ieee1275_next_property): Likewise. Change type of first argument to grub_ieee1275_phandle_t. * include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_entry_fn): Move export next to declaration. (grub_ieee1275_chosen): New variable. * include/grub/powerpc/ieee1275/kernel.h (GRUB_IEEE1275_MODULE_BASE): Correct cosmetic typo. * kern/powerpc/ieee1275/init.c (grub_set_prefix): Use `grub_ieee1275_chosen'. * kern/powerpc/ieee1275/openfw.c (grub_map): Likewise. * loader/powerpc/ieee1275/linux.c (grub_linux_boot): Likewise. (grub_rescue_cmd_linux): Set `initrd_addr' to 0. * term/powerpc/ieee1275/ofconsole.c (grub_ofconsole_refresh): Use `grub_ieee1275_chosen'. Index: boot/powerpc/ieee1275/cmain.c =================================================================== RCS file: /cvsroot/grub/grub2/boot/powerpc/ieee1275/cmain.c,v retrieving revision 1.7 diff -u -p -r1.7 cmain.c --- boot/powerpc/ieee1275/cmain.c 1 May 2005 03:45:35 -0000 1.7 +++ boot/powerpc/ieee1275/cmain.c 10 May 2005 01:27:33 -0000 @@ -24,15 +24,11 @@ #include #include -struct module_info -{ - uint32_t start; - uint32_t end; -}; - /* OpenFirmware entry point passed to us from the real bootloader. */ intptr_t (*grub_ieee1275_entry_fn) (void *); +grub_ieee1275_phandle_t grub_ieee1275_chosen; + static grub_uint32_t grub_ieee1275_flags; @@ -77,7 +73,6 @@ void cmain (uint32_t r3, uint32_t r4 __attribute__((unused)), uint32_t r5) { char **argv, args[256]; - grub_ieee1275_phandle_t chosen; int argc = 0, actual; if (r5 == 0xdeadbeef) @@ -111,8 +106,8 @@ cmain (uint32_t r3, uint32_t r4 __attrib be null (just the nul-character), so check that the size is actually greater than one. */ - grub_ieee1275_finddevice ("/chosen", &chosen); - if (grub_ieee1275_get_property (chosen, "bootargs", args, + grub_ieee1275_finddevice ("/chosen", &grub_ieee1275_chosen); + if (grub_ieee1275_get_property (grub_ieee1275_chosen, "bootargs", args, sizeof args, &actual) == 0 && actual > 1) { Index: boot/powerpc/ieee1275/crt0.S =================================================================== RCS file: /cvsroot/grub/grub2/boot/powerpc/ieee1275/crt0.S,v retrieving revision 1.5 diff -u -p -r1.5 crt0.S --- boot/powerpc/ieee1275/crt0.S 4 Jan 2005 14:01:45 -0000 1.5 +++ boot/powerpc/ieee1275/crt0.S 10 May 2005 01:27:33 -0000 @@ -41,8 +41,3 @@ _start: bl cmain 1: b 1b - - .section ".bss" - .lcomm _ppc_init_stack, 4096*2, 16 -init_stack: - Index: boot/powerpc/ieee1275/ieee1275.c =================================================================== RCS file: /cvsroot/grub/grub2/boot/powerpc/ieee1275/ieee1275.c,v retrieving revision 1.11 diff -u -p -r1.11 ieee1275.c --- boot/powerpc/ieee1275/ieee1275.c 31 Jan 2005 21:28:34 -0000 1.11 +++ boot/powerpc/ieee1275/ieee1275.c 10 May 2005 01:27:33 -0000 @@ -56,7 +56,7 @@ grub_ieee1275_finddevice (char *name, gr } int -grub_ieee1275_get_property (grub_ieee1275_phandle_t handle, +grub_ieee1275_get_property (grub_ieee1275_phandle_t phandle, const char *property, void *buf, grub_size_t size, grub_size_t *actual) { @@ -70,7 +70,7 @@ grub_ieee1275_get_property (grub_ieee127 } args; INIT_IEEE1275_COMMON (&args.common, "getprop", 4, 1); - args.phandle = handle; + args.phandle = phandle; args.prop = property; args.buf = buf; args.buflen = size; @@ -85,8 +85,8 @@ grub_ieee1275_get_property (grub_ieee127 } int -grub_ieee1275_next_property (int handle, char *prev_prop, char *prop, - int *flags) +grub_ieee1275_next_property (grub_ieee1275_phandle_t phandle, char *prev_prop, + char *prop, int *flags) { struct get_property_args { struct grub_ieee1275_common_hdr common; @@ -97,7 +97,7 @@ grub_ieee1275_next_property (int handle, } args; INIT_IEEE1275_COMMON (&args.common, "nextprop", 3, 1); - args.phandle = handle; + args.phandle = phandle; args.prev_prop = prev_prop; args.next_prop = prop; args.flags = -1; @@ -110,7 +110,7 @@ grub_ieee1275_next_property (int handle, } int -grub_ieee1275_get_property_length (grub_ieee1275_phandle_t handle, +grub_ieee1275_get_property_length (grub_ieee1275_phandle_t phandle, const char *prop, grub_size_t *length) { struct get_property_args { @@ -121,7 +121,7 @@ grub_ieee1275_get_property_length (grub_ } args; INIT_IEEE1275_COMMON (&args.common, "getproplen", 2, 1); - args.phandle = handle; + args.phandle = phandle; args.prop = prop; args.length = -1; Index: include/grub/powerpc/ieee1275/ieee1275.h =================================================================== RCS file: /cvsroot/grub/grub2/include/grub/powerpc/ieee1275/ieee1275.h,v retrieving revision 1.17 diff -u -p -r1.17 ieee1275.h --- include/grub/powerpc/ieee1275/ieee1275.h 1 May 2005 03:45:35 -0000 1.17 +++ include/grub/powerpc/ieee1275/ieee1275.h 10 May 2005 01:27:36 -0000 @@ -39,8 +39,6 @@ struct grub_ieee1275_mem_region unsigned int size; }; -extern intptr_t(* EXPORT_VAR(grub_ieee1275_entry_fn)) (void *); - #ifndef IEEE1275_CALL_ENTRY_FN #define IEEE1275_CALL_ENTRY_FN(args) (*grub_ieee1275_entry_fn) (args) #endif @@ -64,7 +62,10 @@ struct grub_ieee1275_common_hdr typedef intptr_t grub_ieee1275_ihandle_t; typedef intptr_t grub_ieee1275_phandle_t; +extern grub_ieee1275_phandle_t grub_ieee1275_chosen; +extern grub_ieee1275_phandle_t EXPORT_VAR(grub_ieee1275_chosen); extern intptr_t (*grub_ieee1275_entry_fn) (void *); +extern intptr_t (* EXPORT_VAR(grub_ieee1275_entry_fn)) (void *); enum grub_ieee1275_flag { Index: include/grub/powerpc/ieee1275/kernel.h =================================================================== RCS file: /cvsroot/grub/grub2/include/grub/powerpc/ieee1275/kernel.h,v retrieving revision 1.1 diff -u -p -r1.1 kernel.h --- include/grub/powerpc/ieee1275/kernel.h 4 Jan 2005 14:01:45 -0000 1.1 +++ include/grub/powerpc/ieee1275/kernel.h 10 May 2005 01:27:36 -0000 @@ -21,6 +21,6 @@ #define GRUB_KERNEL_MACHINE_HEADER 1 /* Where grub-mkimage places the core modules in memory. */ -#define GRUB_IEEE1275_MODULE_BASE 0x0300000 +#define GRUB_IEEE1275_MODULE_BASE 0x00300000 #endif /* ! GRUB_KERNEL_MACHINE_HEADER */ Index: kern/powerpc/ieee1275/init.c =================================================================== RCS file: /cvsroot/grub/grub2/kern/powerpc/ieee1275/init.c,v retrieving revision 1.17 diff -u -p -r1.17 init.c --- kern/powerpc/ieee1275/init.c 1 May 2005 03:45:36 -0000 1.17 +++ kern/powerpc/ieee1275/init.c 10 May 2005 01:27:36 -0000 @@ -68,10 +68,8 @@ grub_set_prefix (void) char bootpath[64]; /* XXX check length */ char *filename; char *prefix; - grub_ieee1275_phandle_t chosen; - grub_ieee1275_finddevice ("/chosen", &chosen); - if (grub_ieee1275_get_property (chosen, "bootpath", &bootpath, + if (grub_ieee1275_get_property (grub_ieee1275_chosen, "bootpath", &bootpath, sizeof (bootpath), 0)) { /* Should never happen. */ Index: kern/powerpc/ieee1275/openfw.c =================================================================== RCS file: /cvsroot/grub/grub2/kern/powerpc/ieee1275/openfw.c,v retrieving revision 1.10 diff -u -p -r1.10 openfw.c --- kern/powerpc/ieee1275/openfw.c 1 May 2005 03:45:36 -0000 1.10 +++ kern/powerpc/ieee1275/openfw.c 10 May 2005 01:27:36 -0000 @@ -165,14 +165,10 @@ grub_map (grub_addr_t phys, grub_addr_t int catch_result; } args; grub_ieee1275_ihandle_t mmu; - grub_ieee1275_ihandle_t chosen; int len; - grub_ieee1275_finddevice ("/chosen", &chosen); - if (chosen == 0) - return -1; - - grub_ieee1275_get_property (chosen, "mmu", &mmu, sizeof mmu, &len); + grub_ieee1275_get_property (grub_ieee1275_chosen, "mmu", &mmu, sizeof mmu, + &len); if (len != sizeof mmu) return -1; Index: loader/powerpc/ieee1275/linux.c =================================================================== RCS file: /cvsroot/grub/grub2/loader/powerpc/ieee1275/linux.c,v retrieving revision 1.6 diff -u -p -r1.6 linux.c --- loader/powerpc/ieee1275/linux.c 14 Feb 2005 18:41:33 -0000 1.6 +++ loader/powerpc/ieee1275/linux.c 10 May 2005 01:27:36 -0000 @@ -47,13 +47,10 @@ static grub_err_t grub_linux_boot (void) { kernel_entry_t linuxmain; - grub_ieee1275_phandle_t chosen; grub_size_t actual; - grub_ieee1275_finddevice ("/chosen", &chosen); - /* Set the command line arguments. */ - grub_ieee1275_set_property (chosen, "bootargs", linux_args, + grub_ieee1275_set_property (grub_ieee1275_chosen, "bootargs", linux_args, grub_strlen (linux_args) + 1, &actual); /* Boot the kernel. */ @@ -236,7 +233,7 @@ grub_rescue_cmd_linux (int argc, char *a else { grub_loader_set (grub_linux_boot, grub_linux_unload); - initrd_addr = 0xc0000000; + initrd_addr = 0; loaded = 1; } Index: term/powerpc/ieee1275/ofconsole.c =================================================================== RCS file: /cvsroot/grub/grub2/term/powerpc/ieee1275/ofconsole.c,v retrieving revision 1.6 diff -u -p -r1.6 ofconsole.c --- term/powerpc/ieee1275/ofconsole.c 26 Mar 2005 17:34:50 -0000 1.6 +++ term/powerpc/ieee1275/ofconsole.c 10 May 2005 01:27:36 -0000 @@ -241,23 +241,19 @@ grub_ofconsole_refresh (void) static grub_err_t grub_ofconsole_init (void) { - grub_ieee1275_phandle_t chosen; char data[4]; grub_size_t actual; int col; - if (grub_ieee1275_finddevice ("/chosen", &chosen)) - return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "Cannot find /chosen"); - - if (grub_ieee1275_get_property (chosen, "stdout", data, sizeof data, - &actual) + if (grub_ieee1275_get_property (grub_ieee1275_chosen, "stdout", data, + sizeof data, &actual) || actual != sizeof data) return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "Cannot find stdout"); stdout_ihandle = grub_ieee1275_decode_int_4 (data); - if (grub_ieee1275_get_property (chosen, "stdin", data, sizeof data, - &actual) + if (grub_ieee1275_get_property (grub_ieee1275_chosen, "stdin", data, + sizeof data, &actual) || actual != sizeof data) return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "Cannot find stdin");