[OpenBIOS] [commit] r717 - in trunk/openbios-devel: arch/sparc32 arch/sparc64 arch/x86 config/examples libopenbios packages
repository service
svn at openbios.org
Sun Mar 28 22:18:31 CEST 2010
Author: mcayland
Date: Sun Mar 28 22:18:30 2010
New Revision: 717
URL: http://tracker.coreboot.org/trac/openbios/changeset/717
Log:
Introduce a set of CONFIG_LOADER_* configuration options to allow each architecture to specify the loaders that are to be used.
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/sparc64/boot.c
trunk/openbios-devel/arch/x86/boot.c
trunk/openbios-devel/config/examples/amd64_config.xml
trunk/openbios-devel/config/examples/cross-ppc_config.xml
trunk/openbios-devel/config/examples/cross-sparc32_config.xml
trunk/openbios-devel/config/examples/cross-sparc64_config.xml
trunk/openbios-devel/config/examples/cross-x86_config.xml
trunk/openbios-devel/config/examples/ppc_config.xml
trunk/openbios-devel/config/examples/sparc32_config.xml
trunk/openbios-devel/config/examples/sparc64_config.xml
trunk/openbios-devel/config/examples/x86_config.xml
trunk/openbios-devel/libopenbios/build.xml
trunk/openbios-devel/packages/build.xml
trunk/openbios-devel/packages/elf-loader.c
trunk/openbios-devel/packages/init.c
Modified: trunk/openbios-devel/arch/sparc32/boot.c
==============================================================================
--- trunk/openbios-devel/arch/sparc32/boot.c Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/arch/sparc32/boot.c Sun Mar 28 22:18:30 2010 (r717)
@@ -11,6 +11,8 @@
#include "libopenbios/sys_info.h"
#include "libopenbios/elf_load.h"
#include "libopenbios/aout_load.h"
+#include "libopenbios/fcode_load.h"
+#include "libopenbios/forth_load.h"
#include "openprom.h"
#include "boot.h"
@@ -33,22 +35,44 @@
bootpath = pop_fstr_copy();
printk("Trying %s (%s)\n", path, bootpath);
+#ifdef CONFIG_LOADER_ELF
/* ELF Boot loader */
elf_load(&sys_info, path, param, &boot_notes);
feval("state-valid @");
valid = POP();
if (valid)
goto start_image;
+#endif
/* Linux loader (not using Forth) */
linux_load(&sys_info, path, param);
+#ifdef CONFIG_LOADER_AOUT
/* a.out loader */
aout_load(&sys_info, path);
feval("state-valid @");
valid = POP();
if (valid)
goto start_image;
+#endif
+
+#ifdef CONFIG_LOADER_FCODE
+ /* Fcode loader */
+ fcode_load(path);
+ feval("state-valid @");
+ valid = POP();
+ if (valid)
+ goto start_image;
+#endif
+
+#ifdef CONFIG_LOADER_FORTH
+ /* Forth loader */
+ forth_load(path);
+ feval("state-valid @");
+ valid = POP();
+ if (valid)
+ goto start_image;
+#endif
return 0;
@@ -78,6 +102,23 @@
image_retval = entry(romvec, 0, 0, 0, 0);
break;
+
+ case 0x10:
+ /* Start Fcode image */
+ printk("Evaluating FCode...\n");
+ PUSH(address);
+ PUSH(1);
+ fword("byte-load");
+ image_retval = 0;
+ break;
+
+ case 0x11:
+ /* Start Forth image */
+ PUSH(address);
+ PUSH(size);
+ fword("eval2");
+ image_retval = 0;
+ break;
}
printk("Image returned with return value %#x\n", image_retval);
Modified: trunk/openbios-devel/arch/sparc64/boot.c
==============================================================================
--- trunk/openbios-devel/arch/sparc64/boot.c Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/arch/sparc64/boot.c Sun Mar 28 22:18:30 2010 (r717)
@@ -11,6 +11,7 @@
#include "libopenbios/elf_load.h"
#include "libopenbios/aout_load.h"
#include "libopenbios/fcode_load.h"
+#include "libopenbios/forth_load.h"
#include "boot.h"
struct sys_info sys_info;
@@ -28,29 +29,44 @@
ucell valid, address, type, size;
int image_retval = 0;
+#ifdef CONFIG_LOADER_ELF
/* ELF Boot loader */
elf_load(&sys_info, path, param, &boot_notes);
feval("state-valid @");
valid = POP();
if (valid)
goto start_image;
+#endif
/* Linux loader (not using Forth) */
linux_load(&sys_info, path, param);
+#ifdef CONFIG_LOADER_AOUT
/* a.out loader */
aout_load(&sys_info, path);
feval("state-valid @");
valid = POP();
if (valid)
goto start_image;
+#endif
+#ifdef CONFIG_LOADER_FCODE
/* Fcode loader */
fcode_load(path);
feval("state-valid @");
valid = POP();
if (valid)
goto start_image;
+#endif
+
+#ifdef CONFIG_LOADER_FORTH
+ /* Forth loader */
+ forth_load(path);
+ feval("state-valid @");
+ valid = POP();
+ if (valid)
+ goto start_image;
+#endif
return 0;
@@ -85,6 +101,14 @@
fword("byte-load");
image_retval = 0;
break;
+
+ case 0x11:
+ /* Start Forth image */
+ PUSH(address);
+ PUSH(size);
+ fword("eval2");
+ image_retval = 0;
+ break;
}
printk("Image returned with return value %#x\n", image_retval);
Modified: trunk/openbios-devel/arch/x86/boot.c
==============================================================================
--- trunk/openbios-devel/arch/x86/boot.c Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/arch/x86/boot.c Sun Mar 28 22:18:30 2010 (r717)
@@ -13,6 +13,8 @@
#include "libc/diskio.h"
#include "libopenbios/sys_info.h"
#include "libopenbios/elf_load.h"
+#include "libopenbios/aout_load.h"
+#include "libopenbios/fcode_load.h"
#include "libopenbios/forth_load.h"
#include "boot.h"
@@ -24,22 +26,44 @@
ucell valid, address, type, size;
int image_retval = 0;;
+#ifdef CONFIG_LOADER_ELF
/* ELF Boot loader */
elf_load(&sys_info, path, param, &boot_notes);
feval("state-valid @");
valid = POP();
if (valid)
goto start_image;
+#endif
/* Linux loader (not using Forth) */
linux_load(&sys_info, path, param);
+#ifdef CONFIG_LOADER_AOUT
+ /* a.out loader */
+ aout_load(&sys_info, path);
+ feval("state-valid @");
+ valid = POP();
+ if (valid)
+ goto start_image;
+#endif
+
+#ifdef CONFIG_LOADER_FCODE
+ /* Fcode loader */
+ fcode_load(path);
+ feval("state-valid @");
+ valid = POP();
+ if (valid)
+ goto start_image;
+#endif
+
+#ifdef CONFIG_LOADER_FORTH
/* Forth loader */
forth_load(path);
feval("state-valid @");
valid = POP();
if (valid)
goto start_image;
+#endif
return 0;
@@ -61,6 +85,20 @@
image_retval = start_elf(address, (uint32_t)NULL);
break;
+ case 0x5:
+ /* Start a.out image */
+ image_retval = start_elf(address, (uint32_t)NULL);
+ break;
+
+ case 0x10:
+ /* Start Fcode image */
+ printk("Evaluating FCode...\n");
+ PUSH(address);
+ PUSH(1);
+ fword("byte-load");
+ image_retval = 0;
+ break;
+
case 0x11:
/* Start Forth image */
PUSH(address);
Modified: trunk/openbios-devel/config/examples/amd64_config.xml
==============================================================================
--- trunk/openbios-devel/config/examples/amd64_config.xml Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/config/examples/amd64_config.xml Sun Mar 28 22:18:30 2010 (r717)
@@ -35,6 +35,11 @@
<option name="CONFIG_DEBLOCKER" type="boolean" value="true"/>
<option name="CONFIG_FONT_8X8" type="boolean" value="true"/>
<option name="CONFIG_FONT_8X16" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_AOUT" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_ELF" type="boolean" value="true"/>
+ <option name="CONFIG_LOADER_FCODE" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_FORTH" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_XCOFF" type="boolean" value="false"/>
<!-- Filesystem Configuration -->
<option name="CONFIG_DISK_LABEL" type="boolean" value="true"/>
Modified: trunk/openbios-devel/config/examples/cross-ppc_config.xml
==============================================================================
--- trunk/openbios-devel/config/examples/cross-ppc_config.xml Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/config/examples/cross-ppc_config.xml Sun Mar 28 22:18:30 2010 (r717)
@@ -40,6 +40,11 @@
<option name="CONFIG_VGA_WIDTH" type="integer" value="800"/>
<option name="CONFIG_VGA_HEIGHT" type="integer" value="600"/>
<option name="CONFIG_VGA_DEPTH" type="integer" value="8"/>
+ <option name="CONFIG_LOADER_AOUT" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_ELF" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_FCODE" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_FORTH" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_XCOFF" type="boolean" value="true"/>
<!-- Filesystem Configuration -->
<option name="CONFIG_DISK_LABEL" type="boolean" value="true"/>
Modified: trunk/openbios-devel/config/examples/cross-sparc32_config.xml
==============================================================================
--- trunk/openbios-devel/config/examples/cross-sparc32_config.xml Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/config/examples/cross-sparc32_config.xml Sun Mar 28 22:18:30 2010 (r717)
@@ -41,6 +41,11 @@
<option name="CONFIG_DEBLOCKER" type="boolean" value="true"/>
<option name="CONFIG_FONT_8X8" type="boolean" value="true"/>
<option name="CONFIG_FONT_8X16" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_AOUT" type="boolean" value="true"/>
+ <option name="CONFIG_LOADER_ELF" type="boolean" value="true"/>
+ <option name="CONFIG_LOADER_FCODE" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_FORTH" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_XCOFF" type="boolean" value="false"/>
<!-- Filesystem Configuration -->
<option name="CONFIG_DISK_LABEL" type="boolean" value="true"/>
Modified: trunk/openbios-devel/config/examples/cross-sparc64_config.xml
==============================================================================
--- trunk/openbios-devel/config/examples/cross-sparc64_config.xml Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/config/examples/cross-sparc64_config.xml Sun Mar 28 22:18:30 2010 (r717)
@@ -41,6 +41,11 @@
<option name="CONFIG_FONT_8X16" type="boolean" value="false"/>
<option name="CONFIG_OFMEM" type="boolean" value="true"/>
<option name="CONFIG_OFMEM_MALLOC_ALIGN" type="integer" value="8"/>
+ <option name="CONFIG_LOADER_AOUT" type="boolean" value="true"/>
+ <option name="CONFIG_LOADER_ELF" type="boolean" value="true"/>
+ <option name="CONFIG_LOADER_FCODE" type="boolean" value="true"/>
+ <option name="CONFIG_LOADER_FORTH" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_XCOFF" type="boolean" value="false"/>
<!-- Filesystem Configuration -->
<option name="CONFIG_DISK_LABEL" type="boolean" value="true"/>
Modified: trunk/openbios-devel/config/examples/cross-x86_config.xml
==============================================================================
--- trunk/openbios-devel/config/examples/cross-x86_config.xml Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/config/examples/cross-x86_config.xml Sun Mar 28 22:18:30 2010 (r717)
@@ -36,6 +36,11 @@
<option name="CONFIG_DEBLOCKER" type="boolean" value="true"/>
<option name="CONFIG_FONT_8X8" type="boolean" value="true"/>
<option name="CONFIG_FONT_8X16" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_AOUT" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_ELF" type="boolean" value="true"/>
+ <option name="CONFIG_LOADER_FCODE" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_FORTH" type="boolean" value="true"/>
+ <option name="CONFIG_LOADER_XCOFF" type="boolean" value="false"/>
<!-- Filesystem Configuration -->
<option name="CONFIG_DISK_LABEL" type="boolean" value="true"/>
Modified: trunk/openbios-devel/config/examples/ppc_config.xml
==============================================================================
--- trunk/openbios-devel/config/examples/ppc_config.xml Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/config/examples/ppc_config.xml Sun Mar 28 22:18:30 2010 (r717)
@@ -40,7 +40,11 @@
<option name="CONFIG_VGA_WIDTH" type="integer" value="800"/>
<option name="CONFIG_VGA_HEIGHT" type="integer" value="600"/>
<option name="CONFIG_VGA_DEPTH" type="integer" value="8"/>
-
+ <option name="CONFIG_LOADER_AOUT" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_ELF" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_FCODE" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_FORTH" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_XCOFF" type="boolean" value="true"/>
<!-- Filesystem Configuration -->
<option name="CONFIG_DISK_LABEL" type="boolean" value="true"/>
Modified: trunk/openbios-devel/config/examples/sparc32_config.xml
==============================================================================
--- trunk/openbios-devel/config/examples/sparc32_config.xml Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/config/examples/sparc32_config.xml Sun Mar 28 22:18:30 2010 (r717)
@@ -41,6 +41,11 @@
<option name="CONFIG_DEBLOCKER" type="boolean" value="true"/>
<option name="CONFIG_FONT_8X8" type="boolean" value="true"/>
<option name="CONFIG_FONT_8X16" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_AOUT" type="boolean" value="true"/>
+ <option name="CONFIG_LOADER_ELF" type="boolean" value="true"/>
+ <option name="CONFIG_LOADER_FCODE" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_FORTH" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_XCOFF" type="boolean" value="false"/>
<!-- Filesystem Configuration -->
<option name="CONFIG_DISK_LABEL" type="boolean" value="true"/>
Modified: trunk/openbios-devel/config/examples/sparc64_config.xml
==============================================================================
--- trunk/openbios-devel/config/examples/sparc64_config.xml Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/config/examples/sparc64_config.xml Sun Mar 28 22:18:30 2010 (r717)
@@ -41,6 +41,11 @@
<option name="CONFIG_FONT_8X16" type="boolean" value="false"/>
<option name="CONFIG_OFMEM" type="boolean" value="true"/>
<option name="CONFIG_OFMEM_MALLOC_ALIGN" type="integer" value="8"/>
+ <option name="CONFIG_LOADER_AOUT" type="boolean" value="true"/>
+ <option name="CONFIG_LOADER_ELF" type="boolean" value="true"/>
+ <option name="CONFIG_LOADER_FCODE" type="boolean" value="true"/>
+ <option name="CONFIG_LOADER_FORTH" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_XCOFF" type="boolean" value="false"/>
<!-- Filesystem Configuration -->
<option name="CONFIG_DISK_LABEL" type="boolean" value="true"/>
Modified: trunk/openbios-devel/config/examples/x86_config.xml
==============================================================================
--- trunk/openbios-devel/config/examples/x86_config.xml Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/config/examples/x86_config.xml Sun Mar 28 22:18:30 2010 (r717)
@@ -36,6 +36,11 @@
<option name="CONFIG_DEBLOCKER" type="boolean" value="true"/>
<option name="CONFIG_FONT_8X8" type="boolean" value="true"/>
<option name="CONFIG_FONT_8X16" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_AOUT" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_ELF" type="boolean" value="true"/>
+ <option name="CONFIG_LOADER_FCODE" type="boolean" value="false"/>
+ <option name="CONFIG_LOADER_FORTH" type="boolean" value="true"/>
+ <option name="CONFIG_LOADER_XCOFF" type="boolean" value="false"/>
<!-- Filesystem Configuration -->
<option name="CONFIG_DISK_LABEL" type="boolean" value="true"/>
Modified: trunk/openbios-devel/libopenbios/build.xml
==============================================================================
--- trunk/openbios-devel/libopenbios/build.xml Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/libopenbios/build.xml Sun Mar 28 22:18:30 2010 (r717)
@@ -1,24 +1,16 @@
<build>
<library name="openbios" type="static" target="target">
- <object source="aout_load.c" condition="SPARC32"/>
- <object source="aout_load.c" condition="SPARC64"/>
+ <object source="aout_load.c" condition="LOADER_AOUT"/>
<object source="bindings.c"/>
<object source="client.c"/>
<object source="console_common.c"/>
- <object source="elf_info.c" condition="X86"/>
- <object source="elf_info.c" condition="AMD64"/>
- <object source="elf_info.c" condition="SPARC32"/>
- <object source="elf_info.c" condition="SPARC64"/>
- <object source="elf_info.c" condition="PPC"/>
- <object source="elf_load.c" condition="X86"/>
- <object source="elf_load.c" condition="SPARC32"/>
- <object source="elf_load.c" condition="SPARC64"/>
- <object source="elf_load.c" condition="AMD64"/>
+ <object source="elf_info.c" />
+ <object source="elf_load.c" condition="LOADER_ELF"/>
<object source="font_8x8.c" condition="FONT_8X8"/>
<object source="font_8x16.c" condition="FONT_8X16"/>
- <object source="fcode_load.c" condition="SPARC64"/>
- <object source="forth_load.c" condition="X86"/>
+ <object source="fcode_load.c" condition="LOADER_FCODE"/>
+ <object source="forth_load.c" condition="LOADER_FORTH"/>
<object source="ipchecksum.c"/>
<object source="linuxbios_info.c" condition="LINUXBIOS"/>
<object source="ofmem_common.c" condition="OFMEM"/>
Modified: trunk/openbios-devel/packages/build.xml
==============================================================================
--- trunk/openbios-devel/packages/build.xml Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/packages/build.xml Sun Mar 28 22:18:30 2010 (r717)
@@ -5,8 +5,7 @@
<object source="cmdline.c" condition="CMDLINE"/>
<object source="deblocker.c" condition="DEBLOCKER"/>
<object source="disk-label.c" condition="DISK_LABEL"/>
- <object source="elf-loader.c" condition="PPC"/>
- <object source="elf-loader.c" condition="SPARC64"/>
+ <object source="elf-loader.c" condition="LOADER_ELF"/>
<object source="init.c"/>
<object source="mac-parts.c" condition="MAC_PARTS"/>
<object source="misc-files.c" condition="FS"/>
@@ -14,7 +13,7 @@
<object source="pc-parts.c" condition="PC_PARTS"/>
<object source="sun-parts.c" condition="SUN_PARTS"/>
<object source="video.c"/>
- <object source="xcoff-loader.c" condition="PPC"/>
+ <object source="xcoff-loader.c" condition="LOADER_XCOFF"/>
</library>
<dictionary name="openbios" target="forth">
Modified: trunk/openbios-devel/packages/elf-loader.c
==============================================================================
--- trunk/openbios-devel/packages/elf-loader.c Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/packages/elf-loader.c Sun Mar 28 22:18:30 2010 (r717)
@@ -49,6 +49,7 @@
Elf_phdr *phdr;
size_t size;
char *addr;
+ cell tmp;
feval("0 state-valid !");
@@ -67,11 +68,16 @@
size = MIN(phdr[i].p_filesz, phdr[i].p_memsz);
if (!size)
continue;
+#if 0
if( ofmem_claim( phdr[i].p_vaddr, phdr[i].p_memsz, 0 ) == -1 ) {
printk("Claim failed!\n");
return;
}
- addr = (char*)phdr[i].p_vaddr;
+#endif
+ /* Workaround for archs where sizeof(int) != pointer size */
+ tmp = phdr[i].p_vaddr;
+ addr = (char *)tmp;
+
memcpy(addr, base + phdr[i].p_offset, size);
#ifdef CONFIG_PPC
flush_icache_range( addr, addr + size );
Modified: trunk/openbios-devel/packages/init.c
==============================================================================
--- trunk/openbios-devel/packages/init.c Sat Mar 27 14:20:54 2010 (r716)
+++ trunk/openbios-devel/packages/init.c Sun Mar 28 22:18:30 2010 (r717)
@@ -42,12 +42,14 @@
#ifdef CONFIG_SUN_PARTS
sunparts_init();
#endif
-#ifdef CONFIG_PPC
- elf_loader_init();
+#ifdef CONFIG_LOADER_XCOFF
xcoff_loader_init();
- bootinfo_loader_init();
#endif
-#ifdef CONFIG_SPARC64
+#ifdef CONFIG_LOADER_ELF
elf_loader_init();
#endif
+#ifdef CONFIG_PPC
+ bootinfo_loader_init();
+#endif
+
}
More information about the OpenBIOS
mailing list