[LinuxBIOS] r36 - in trunk/filo-0.5: i386 main
svn at openbios.org
svn at openbios.org
Tue Oct 2 19:04:57 CEST 2007
Author: rminnich
Date: 2007-10-02 19:04:57 +0200 (Tue, 02 Oct 2007)
New Revision: 36
Modified:
trunk/filo-0.5/i386/sys_info.c
trunk/filo-0.5/main/linuxbios.c
Log:
1. fix spelling error.
2. paranoid setting of info->memrange to 0
3. don't use malloc when it is not possible to use malloc.
Signed-off-by: Ronald G. Minnich <rminnich at gmail.com>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
Modified: trunk/filo-0.5/i386/sys_info.c
===================================================================
--- trunk/filo-0.5/i386/sys_info.c 2007-09-23 22:33:38 UTC (rev 35)
+++ trunk/filo-0.5/i386/sys_info.c 2007-10-02 17:04:57 UTC (rev 36)
@@ -11,6 +11,8 @@
{
int i;
unsigned long long total = 0;
+ /* this fake memory range covers the case that we can't find any LB structs. */
+ static struct memrange fakememrange[2];
/* Pick up paramters given by bootloader to us */
info->boot_type = boot_ctx->eax;
@@ -30,7 +32,12 @@
printf("Can't get memory map from firmware. "
"Using hardcoded default.\n");
info->n_memranges = 2;
- info->memrange = malloc(2 * sizeof(struct memrange));
+ /* NOTE: DO NOT USE MALLOC HERE *
+ * malloc structs are not initialized until this information is filled in.
+ * Use of malloc will create a circular dependency. So use
+ * the static allocated above.
+ */
+ info->memrange = fakememrange;
info->memrange[0].base = 0;
info->memrange[0].size = 640*1024;
info->memrange[1].base = 1024*1024;
Modified: trunk/filo-0.5/main/linuxbios.c
===================================================================
--- trunk/filo-0.5/main/linuxbios.c 2007-09-23 22:33:38 UTC (rev 35)
+++ trunk/filo-0.5/main/linuxbios.c 2007-10-02 17:04:57 UTC (rev 36)
@@ -89,7 +89,7 @@
}
if (head->header_bytes != sizeof(*head))
continue;
- debug("Found canidate at: %p\n", head);
+ debug("Found candidate at: %p\n", head);
if (ipchksum((uint16_t *)head, sizeof(*head)) != 0)
continue;
debug("header checksum o.k.\n");
@@ -114,6 +114,7 @@
struct lb_header *lb_table;
int found;
debug("Searching for LinuxBIOS tables...\n");
+ info->memrange = NULL;
found = 0;
if (!found) {
found = find_lb_table(phys_to_virt(0x00000), phys_to_virt(0x01000), &lb_table);
More information about the coreboot
mailing list