[LinuxBIOS] r483 - in LinuxBIOSv3: . include
svn at openbios.org
svn at openbios.org
Wed Aug 29 17:26:54 CEST 2007
Author: rminnich
Date: 2007-08-29 17:26:54 +0200 (Wed, 29 Aug 2007)
New Revision: 483
Modified:
LinuxBIOSv3/Kconfig
LinuxBIOSv3/include/lar.h
Log:
Continuing the 'remove ELF' patch series.
These changes extend the larchive structure, and
add a Kconfig EXPERT option to enable the 'no elf' mode.
Signed-off-by: Ronald G. Minnich <rminnich at gmail.com>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
Modified: LinuxBIOSv3/Kconfig
===================================================================
--- LinuxBIOSv3/Kconfig 2007-08-29 15:05:01 UTC (rev 482)
+++ LinuxBIOSv3/Kconfig 2007-08-29 15:26:54 UTC (rev 483)
@@ -53,6 +53,25 @@
help
Append an extra string to the end of the LinuxBIOS version.
+config NOELF
+ bool "Don't use ELF for payloads"
+ depends EXPERT
+ default n
+ help
+ Until now, LinuxBIOS has used elf for the payload. There are many problems
+ this, not least being the inefficiency -- the ELF has to be decompressed to
+ memory and then the segments have to be copied. Plus, lar can't see the segments
+ in the elf -- to see all segments, you have to extract the elf and run readelf on it.
+ There are problems with collisions of the decompressed ELF location in memory
+ and the segment locations in memory.
+ Finally, validation of the ELF is done at run time, once you have flashed the
+ FLASH and rebooted the machine. Boot time is really not the time you want to find
+ out your ELF payload is broken.
+ With this option, LinuxBIOS will direct lar to break each elf segment into a LAR
+ entry. ELF will not be used at all. Note that (for now) LinuxBIOS is backward
+ compatible -- if you put an ELF payload in, LinuxBIOS can still parse it. We hope
+ to remove ELF entirely in the future.
+
config BEEPS
bool "Enable beeps upon certain LinuxBIOS events"
depends EXPERT
Modified: LinuxBIOSv3/include/lar.h
===================================================================
--- LinuxBIOSv3/include/lar.h 2007-08-29 15:05:01 UTC (rev 482)
+++ LinuxBIOSv3/include/lar.h 2007-08-29 15:26:54 UTC (rev 483)
@@ -52,9 +52,10 @@
#include <types.h>
+/* see note in lib/lar.c as to why this is ARCHIVE and not LARCHIVE */
#define MAGIC "LARCHIVE"
#define MAX_PATHLEN 1024
-
+/* NOTE -- This and the user-mode lar.h are NOT IN SYNC. Be careful. */
struct lar_header {
char magic[8];
u32 len;
@@ -62,7 +63,14 @@
u32 checksum;
u32 compchecksum;
u32 offset;
+ /* Compression:
+ * 0 = no compression
+ * 1 = lzma
+ * 2 = nrv2b
+ */
u32 compression;
+ u32 entry; /* we might need to make this u64 */
+ u32 loadaddress; /* ditto */
};
struct mem_file {
@@ -70,6 +78,8 @@
int len;
u32 reallen;
u32 compression;
+ void *entry;
+ void *loadaddress;
};
/* Prototypes. */
@@ -77,5 +87,6 @@
int copy_file(struct mem_file *archive, char *filename, void *where);
int run_file(struct mem_file *archive, char *filename, void *where);
int execute_in_place(struct mem_file *archive, char *filename);
-
+int run_address(void *f);
+void *load_file(struct mem_file *archive, char *filename);
#endif /* LAR_H */
More information about the coreboot
mailing list