[OpenBIOS] r325 - in openbios-devel: arch/ppc/qemu modules

svn at openbios.org svn at openbios.org
Thu Dec 25 11:38:40 CET 2008


Author: blueswirl
Date: 2008-12-25 11:38:40 +0100 (Thu, 25 Dec 2008)
New Revision: 325

Modified:
   openbios-devel/arch/ppc/qemu/main.c
   openbios-devel/modules/filesystems.c
   openbios-devel/modules/mac-parts.c
Log:
Allow yaboot to read files from cdrom (Laurent Vivier)

Modified: openbios-devel/arch/ppc/qemu/main.c
===================================================================
--- openbios-devel/arch/ppc/qemu/main.c	2008-12-25 10:36:19 UTC (rev 324)
+++ openbios-devel/arch/ppc/qemu/main.c	2008-12-25 10:38:40 UTC (rev 325)
@@ -61,10 +61,12 @@
 	/* the ELF-image (usually) starts at offset 0x4000 */
 	if( (elf_offs=find_elf(fd)) < 0 ) {
                 ELF_DPRINTF("----> %s is not an ELF image\n", get_file_path(fd));
-		exit(1);
+		return -1;
 	}
-	if( !(phdr=elf_readhdrs(fd, elf_offs, &ehdr)) )
-		fatal_error("elf_readhdrs failed\n");
+	if( !(phdr=elf_readhdrs(fd, elf_offs, &ehdr)) ) {
+		ELF_DPRINTF("elf_readhdrs failed\n");
+		return -1;
+	}
 
 	*elf_entry = ehdr.e_entry;
 
@@ -89,8 +91,10 @@
 			fatal_error("Claim failed!\n");
 
 		addr = (char*)phdr[i].p_vaddr;
-		if( read_io(fd, addr, s) != s )
-			fatal_error("read failed\n");
+		if( read_io(fd, addr, s) != s ) {
+			ELF_DPRINTF("read failed\n");
+			return -1;
+		}
 
 		flush_icache_range( addr, addr+s );
 
@@ -116,14 +120,16 @@
 try_path(const char *path, const char *param)
 {
     ulong elf_entry;
-    int fd;
+    int fd, ret;
 
     ELF_DPRINTF("Trying %s %s\n", path, param);
     if ((fd = open_io(path)) == -1) {
         ELF_DPRINTF("Can't open %s\n", path);
         return;
     }
-    (void) load_elf_rom( &elf_entry, fd );
+    ret = load_elf_rom( &elf_entry, fd );
+    if (ret < 0)
+        return;
     close_io( fd );
     encode_bootpath( path, param );
 
@@ -258,8 +264,8 @@
                     POP();
                     param = pop_fstr_copy();
                 }
+                try_path(path, param);
                 try_bootinfo(path);
-                try_path(path, param);
             } else {
                 char boot_device = nvram_read(0x34);
 

Modified: openbios-devel/modules/filesystems.c
===================================================================
--- openbios-devel/modules/filesystems.c	2008-12-25 10:36:19 UTC (rev 324)
+++ openbios-devel/modules/filesystems.c	2008-12-25 10:38:40 UTC (rev 325)
@@ -256,6 +256,12 @@
 }
 
 static void
+files_block_size( files_info_t *dummy )
+{
+	PUSH(512);
+}
+
+static void
 files_initializer( files_info_t *dummy )
 {
 	fword("register-fs-package");
@@ -269,6 +275,7 @@
 	{ "write",		files_write 		},
 	{ "seek",		files_seek 		},
 	{ "tell",		files_tell		},
+	{ "block-size",		files_block_size	},
 
 	/* special */
 	{ "reopen",		files_reopen 		},

Modified: openbios-devel/modules/mac-parts.c
===================================================================
--- openbios-devel/modules/mac-parts.c	2008-12-25 10:36:19 UTC (rev 324)
+++ openbios-devel/modules/mac-parts.c	2008-12-25 10:38:40 UTC (rev 325)
@@ -55,7 +55,7 @@
 		free( str );
 	}
 	if( parnum < 0 )
-		parnum = 1;
+		parnum = 0;
 
 	DPRINTF("macparts_open %d\n", parnum);
 	SEEK( 0 );




More information about the OpenBIOS mailing list