[OpenBIOS] [commit] r727 - in trunk/openbios-devel/arch: sparc32 sparc64 x86

repository service svn at openbios.org
Fri Apr 2 15:29:12 CEST 2010


Author: mcayland
Date: Fri Apr  2 15:29:12 2010
New Revision: 727
URL: http://tracker.coreboot.org/trac/openbios/changeset/727

Log:
Since the original boot code had been previously refactored to make use of saved-program-state, we can take the existing code 
and with only slight modification use it as a C implementation of the go word.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at siriusit.co.uk>

Modified:
   trunk/openbios-devel/arch/sparc32/boot.c
   trunk/openbios-devel/arch/sparc32/boot.h
   trunk/openbios-devel/arch/sparc64/boot.c
   trunk/openbios-devel/arch/sparc64/boot.h
   trunk/openbios-devel/arch/x86/boot.c
   trunk/openbios-devel/arch/x86/boot.h

Modified: trunk/openbios-devel/arch/sparc32/boot.c
==============================================================================
--- trunk/openbios-devel/arch/sparc32/boot.c	Fri Apr  2 15:01:10 2010	(r726)
+++ trunk/openbios-devel/arch/sparc32/boot.c	Fri Apr  2 15:29:12 2010	(r727)
@@ -22,13 +22,14 @@
 uint32_t qemu_cmdline;
 uint32_t cmdline_size;
 char boot_device;
+static const void *romvec;
 static int (*entry)(const void *romvec_ptr, int p2, int p3, int p4, int p5);
 
-static int try_path(const char *path, char *param, const void *romvec)
+
+static int try_path(const char *path, char *param)
 {
 	void *boot_notes = NULL;
-	ucell valid, address, type, size;
-	int image_retval = 0;
+	ucell valid;
 
         push_str(path);
         fword("pathres-resolve-aliases");
@@ -78,6 +79,16 @@
 
 
 start_image:
+	go();
+	return -1;
+}
+
+
+void go(void)
+{
+	ucell address, type, size;
+	int image_retval = 0;
+
 	/* Get the entry point and the type (see forth/debugging/client.fs) */
 	feval("saved-program-state >sps.entry @");
 	address = POP();
@@ -122,8 +133,6 @@
 	}
 
 	printk("Image returned with return value %#x\n", image_retval);
-
-	return -1;
 }
 
 
@@ -132,7 +141,6 @@
         char *path = pop_fstr_copy(), *param, altpath[256];
         const char *oldpath = path;
         int unit = 0;
-        const void *romvec;
 	int result;
 
 	if(!path) {
@@ -209,7 +217,7 @@
 	else
 		printk("without parameters.\n");
 
-        result = try_path(path, param, romvec);
+        result = try_path(path, param);
 	if (!result) {
 		push_str(path);
 		PUSH(':');
@@ -218,7 +226,7 @@
 		POP();
 		POP();
 	
-		try_path(altpath, param, romvec);
+		try_path(altpath, param);
 	}
 
 	printk("Unsupported image format\n");

Modified: trunk/openbios-devel/arch/sparc32/boot.h
==============================================================================
--- trunk/openbios-devel/arch/sparc32/boot.h	Fri Apr  2 15:01:10 2010	(r726)
+++ trunk/openbios-devel/arch/sparc32/boot.h	Fri Apr  2 15:29:12 2010	(r727)
@@ -19,7 +19,8 @@
 // boot.c
 extern struct sys_info sys_info;
 extern const char *bootpath;
-void boot(void);
+extern void boot(void);
+extern void go(void);
 
 // sys_info.c
 extern unsigned int qemu_mem_size;

Modified: trunk/openbios-devel/arch/sparc64/boot.c
==============================================================================
--- trunk/openbios-devel/arch/sparc64/boot.c	Fri Apr  2 15:01:10 2010	(r726)
+++ trunk/openbios-devel/arch/sparc64/boot.c	Fri Apr  2 15:29:12 2010	(r727)
@@ -26,8 +26,7 @@
 static int try_path(const char *path, char *param)
 {
 	void *boot_notes = NULL;
-	ucell valid, address, type, size;
-	int image_retval = 0;
+	ucell valid;
 
 #ifdef CONFIG_LOADER_ELF
 	/* ELF Boot loader */
@@ -72,6 +71,16 @@
 
 
 start_image:
+	go();
+	return -1;
+}
+
+
+void go(void)
+{
+	ucell address, type, size;
+	int image_retval = 0;
+
 	/* Get the entry point and the type (see forth/debugging/client.fs) */
 	feval("saved-program-state >sps.entry @");
 	address = POP();
@@ -85,7 +94,7 @@
 	switch (type) {
 		case 0x0:
 			/* Start ELF boot image */
-			image_retval = start_elf(address, (uint64_t)boot_notes);
+			image_retval = start_elf(address, (uint64_t)NULL);
 			break;
 
 		case 0x5:
@@ -112,10 +121,9 @@
 	}
 
 	printk("Image returned with return value %#x\n", image_retval);
-
-	return -1;
 }
 
+
 void boot(void)
 {
 	char *path=pop_fstr_copy(), *param;

Modified: trunk/openbios-devel/arch/sparc64/boot.h
==============================================================================
--- trunk/openbios-devel/arch/sparc64/boot.h	Fri Apr  2 15:01:10 2010	(r726)
+++ trunk/openbios-devel/arch/sparc64/boot.h	Fri Apr  2 15:29:12 2010	(r727)
@@ -21,7 +21,8 @@
 extern uint64_t qemu_cmdline;
 extern uint64_t cmdline_size;
 extern char boot_device;
-void boot(void);
+extern void boot(void);
+extern void go(void);
 
 // sys_info.c
 extern uint64_t qemu_mem_size;

Modified: trunk/openbios-devel/arch/x86/boot.c
==============================================================================
--- trunk/openbios-devel/arch/x86/boot.c	Fri Apr  2 15:01:10 2010	(r726)
+++ trunk/openbios-devel/arch/x86/boot.c	Fri Apr  2 15:29:12 2010	(r727)
@@ -23,8 +23,7 @@
 static int try_path(const char *path, char *param)
 {
 	void *boot_notes = NULL;
-	ucell valid, address, type, size;
-	int image_retval = 0;;
+	ucell valid;
 
 #ifdef CONFIG_LOADER_ELF
 	/* ELF Boot loader */
@@ -69,6 +68,16 @@
 
 
 start_image:
+	go();
+	return -1;
+}
+
+
+void go(void)
+{
+	ucell address, type, size;
+	int image_retval = 0;
+
 	/* Get the entry point and the type (see forth/debugging/client.fs) */
 	feval("saved-program-state >sps.entry @");
 	address = POP();
@@ -109,10 +118,9 @@
 	}
 
 	printk("Image returned with return value %#x\n", image_retval);
-
-	return -1;
 }
 
+
 void boot(void)
 {
 	char *path=pop_fstr_copy(), *param;

Modified: trunk/openbios-devel/arch/x86/boot.h
==============================================================================
--- trunk/openbios-devel/arch/x86/boot.h	Fri Apr  2 15:01:10 2010	(r726)
+++ trunk/openbios-devel/arch/x86/boot.h	Fri Apr  2 15:29:12 2010	(r727)
@@ -15,4 +15,5 @@
 
 /* boot.c */
 extern struct sys_info sys_info;
-void boot(void);
+extern void boot(void);
+extern void go(void);



More information about the OpenBIOS mailing list