[LinuxBIOS] r485 - in LinuxBIOSv3: arch/x86 include lib util/lar

svn at openbios.org svn at openbios.org
Thu Aug 30 00:27:31 CEST 2007


Author: rminnich
Date: 2007-08-30 00:27:31 +0200 (Thu, 30 Aug 2007)
New Revision: 485

Modified:
   LinuxBIOSv3/arch/x86/stage1.c
   LinuxBIOSv3/include/lar.h
   LinuxBIOSv3/lib/lar.c
   LinuxBIOSv3/util/lar/lar.h
Log:
Make the load address and entry 64 bits.
Remove a broken proto from a c file.
Fix protos etc. per uwe's request for const where it made 
sense. 

Signed-off-by: Ronald G. Minnich <rminnich at gmail.com>

Acked-by: Peter Stuge <peter at stuge.se>



Modified: LinuxBIOSv3/arch/x86/stage1.c
===================================================================
--- LinuxBIOSv3/arch/x86/stage1.c	2007-08-29 16:42:58 UTC (rev 484)
+++ LinuxBIOSv3/arch/x86/stage1.c	2007-08-29 22:27:31 UTC (rev 485)
@@ -36,7 +36,6 @@
 /* these prototypes should go into headers */
 void uart_init(void);
 void die(const char *msg);
-int find_file(struct mem_file *archive, char *filename, struct mem_file *result);
 void hardware_stage1(void);
 void disable_car(void);
 

Modified: LinuxBIOSv3/include/lar.h
===================================================================
--- LinuxBIOSv3/include/lar.h	2007-08-29 16:42:58 UTC (rev 484)
+++ LinuxBIOSv3/include/lar.h	2007-08-29 22:27:31 UTC (rev 485)
@@ -69,8 +69,8 @@
 	 * 2 = nrv2b
 	 */
 	u32 compression;
-	u32 entry;		/* we might need to make this u64 */
-	u32 loadaddress; /* ditto */
+	u64 entry;
+	u64 loadaddress;
 };
 
 struct mem_file {
@@ -83,10 +83,10 @@
 };
 
 /* Prototypes. */
-int find_file(struct mem_file *archive, char *filename, struct mem_file *result);
-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 find_file(struct mem_file *archive, const char *filename, struct mem_file *result);
+int copy_file(struct mem_file *archive, const char *filename, void *where);
+int run_file(struct mem_file *archive, const char *filename, void *where);
+int execute_in_place(struct mem_file *archive, const char *filename);
 int run_address(void *f);
-void *load_file(struct mem_file *archive, char *filename);
+void *load_file(struct mem_file *archive, const char *filename);
 #endif /* LAR_H */

Modified: LinuxBIOSv3/lib/lar.c
===================================================================
--- LinuxBIOSv3/lib/lar.c	2007-08-29 16:42:58 UTC (rev 484)
+++ LinuxBIOSv3/lib/lar.c	2007-08-29 22:27:31 UTC (rev 485)
@@ -31,6 +31,13 @@
 #define ntohl(x) (x)
 #endif
 
+/**
+ * run_address is passed the address of a function taking no parameters and
+ * jumps to it, returning the result. 
+ * @param v the address to call as a function. 
+ * returns value returned by the function. 
+ */
+
 int run_address(void *f)
 {
 	int (*v) (void);
@@ -38,7 +45,18 @@
 	return v();
 }
 
-int find_file(struct mem_file *archive, char *filename, struct mem_file *result)
+/**
+ * Given a file name in the LAR , search for it, and fill out a return struct with the 
+ * result. 
+ * @param archive A descriptor for current archive. This is actually a mem_file type, 
+ *    which is a machine-dependent representation of hte actual archive. In particular, 
+ *    things like u32 are void * in the mem_file struct. 
+ * @param filename filename to find
+ * @param result pointer to mem_file struct which is filled in if the file is found
+ * returns 0 on success, -1 otherwise
+ */
+
+int find_file(struct mem_file *archive, const char *filename, struct mem_file *result)
 {
 	char *walk, *fullname;
 	struct lar_header *header;
@@ -105,8 +123,15 @@
 	return 1;
 }
 
+/**
+ * Given a file name in the LAR , search for it, and load it into memory, using 
+ * the loadaddress pointer in the mem_file struct. 
+ * @param archive A descriptor for current archive.
+ * @param filename filename to find
+ * returns 0 on success, -1 otherwise
+ */
 
-void *load_file(struct mem_file *archive, char *filename)
+void *load_file(struct mem_file *archive, const char *filename)
 {
 	int ret;
 	struct mem_file result;
@@ -149,7 +174,15 @@
 }
 
 /* FIXME -- most of copy_file should be replaced by load_file */
-int copy_file(struct mem_file *archive, char *filename, void *where)
+/**
+ * Given a file name in the LAR , search for it, and load it into memory, 
+ * using the passed-in pointer as the address
+ * @param archive A descriptor for current archive.
+ * @param filename filename to find
+ * @param where pointer to where to load the data
+ * returns 0 on success, -1 otherwise
+ */
+int copy_file(struct mem_file *archive, const char *filename, void *where)
 {
 	int ret;
 	struct mem_file result;
@@ -190,10 +223,15 @@
 
 
 /**
- * Find the file in the LAR header, copy it to the desired location,
- * and execute it. A location of 0xFFFFFFFF means execute in place (XIP).
+ * Given a file name in the LAR , search for it, and load it into memory, 
+ * using the passed-in pointer as the address; jump to the file. 
+ * If the passed-in pointer is (void *)-1, then execute the file in place. 
+ * @param archive A descriptor for current archive.
+ * @param filename filename to find
+ * @param where pointer to where to load the data
+ * returns 0 on success, -1 otherwise
  */
-int run_file(struct mem_file *archive, char *filename, void *where)
+int run_file(struct mem_file *archive, const char *filename, void *where)
 {
 	int (*v) (void);
 	struct mem_file result;
@@ -217,15 +255,18 @@
 	}
 	printk(BIOS_SPEW, "where is %p\n", where);
 	v = where;
-	ret =  v();
+	ret = v();
 	printk(BIOS_SPEW, "run_file returns with %d\n", ret);
 	return ret;
 }
 
 /**
- * Call run_file() to execute in place.
+ * Given a file name in the LAR , search for it, and execute it in place. 
+ * @param archive A descriptor for current archive.
+ * @param filename filename to find
+ * returns 0 on success, -1 otherwise
  */
-int execute_in_place(struct mem_file *archive, char *filename)
+int execute_in_place(struct mem_file *archive, const char *filename)
 {
 	return run_file(archive, filename, (void *) 0xFFFFFFFF);
 }

Modified: LinuxBIOSv3/util/lar/lar.h
===================================================================
--- LinuxBIOSv3/util/lar/lar.h	2007-08-29 16:42:58 UTC (rev 484)
+++ LinuxBIOSv3/util/lar/lar.h	2007-08-29 22:27:31 UTC (rev 485)
@@ -57,6 +57,7 @@
 #define BOOTBLOCK_NAME "bootblock"
 #define BOOTBLOCK_NAME_LEN 16
 
+typedef uint64_t u64;
 typedef uint32_t u32;
 typedef uint8_t  u8;
 
@@ -74,8 +75,8 @@
 	 * 2 = nrv2b
 	 */
 	u32 compression;
-	u32 entry;		/* we might need to make this u64 */
-	u32 loadaddress; /* ditto */
+	u64 entry;
+	u64 loadaddress;
 };
 
 /**\struct





More information about the coreboot mailing list