[coreboot] r3058 - in trunk/util: flashrom lxbios mptable

svn at coreboot.org svn at coreboot.org
Fri Jan 18 17:17:44 CET 2008


Author: stepan
Date: 2008-01-18 17:17:44 +0100 (Fri, 18 Jan 2008)
New Revision: 3058

Added:
   trunk/util/flashrom/cbtable.c
   trunk/util/flashrom/coreboot_tables.h
   trunk/util/lxbios/coreboot_tables.h
Removed:
   trunk/util/flashrom/lbtable.c
   trunk/util/flashrom/linuxbios_tables.h
   trunk/util/lxbios/linuxbios_tables.h
Modified:
   trunk/util/flashrom/Makefile
   trunk/util/lxbios/Makefile
   trunk/util/lxbios/layout.h
   trunk/util/lxbios/layout_file.h
   trunk/util/lxbios/lbtable.c
   trunk/util/mptable/mptable.c
Log:
rename linuxbios_* files in utils repository.
Signed-off-by: Stefan Reinauer <stepan at coresystems.de>
Acked-by: Stefan Reinauer <stepan at coresystems.de>



Modified: trunk/util/flashrom/Makefile
===================================================================
--- trunk/util/flashrom/Makefile	2008-01-18 16:16:45 UTC (rev 3057)
+++ trunk/util/flashrom/Makefile	2008-01-18 16:17:44 UTC (rev 3058)
@@ -23,7 +23,7 @@
 OBJS = chipset_enable.o board_enable.o udelay.o jedec.o sst28sf040.o \
 	am29f040b.o mx29f002.o sst39sf020.o m29f400bt.o w49f002u.o \
 	82802ab.o msys_doc.o pm49fl004.o sst49lf040.o sst49lfxxxc.o \
-	sst_fwhub.o layout.o lbtable.o flashchips.o flashrom.o \
+	sst_fwhub.o layout.o cbtable.o flashchips.o flashrom.o \
 	sharplhf00l04.o w29ee011.o spi.o
 
 all: pciutils dep $(PROGRAM)

Copied: trunk/util/flashrom/cbtable.c (from rev 3056, trunk/util/flashrom/lbtable.c)
===================================================================
--- trunk/util/flashrom/cbtable.c	                        (rev 0)
+++ trunk/util/flashrom/cbtable.c	2008-01-18 16:17:44 UTC (rev 3058)
@@ -0,0 +1,218 @@
+/*
+ * This file is part of the flashrom project.
+ *
+ * Copyright (C) 2002 Steven James <pyro at linuxlabs.com>
+ * Copyright (C) 2002 Linux Networx
+ * (Written by Eric Biederman <ebiederman at lnxi.com> for Linux Networx)
+ * Copyright (C) 2006-2007 coresystems GmbH
+ * (Written by Stefan Reinauer <stepan at coresystems.de> for coresystems GmbH)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/mman.h>
+#include "flash.h"
+#include "coreboot_tables.h"
+
+char *lb_part = NULL, *lb_vendor = NULL;
+
+static unsigned long compute_checksum(void *addr, unsigned long length)
+{
+	uint8_t *ptr;
+	volatile union {
+		uint8_t byte[2];
+		uint16_t word;
+	} value;
+	unsigned long sum;
+	unsigned long i;
+
+	/* In the most straight forward way possible,
+	 * compute an ip style checksum.
+	 */
+	sum = 0;
+	ptr = addr;
+	for (i = 0; i < length; i++) {
+		unsigned long value;
+		value = ptr[i];
+		if (i & 1) {
+			value <<= 8;
+		}
+		/* Add the new value */
+		sum += value;
+		/* Wrap around the carry */
+		if (sum > 0xFFFF) {
+			sum = (sum + (sum >> 16)) & 0xFFFF;
+		}
+	}
+	value.byte[0] = sum & 0xff;
+	value.byte[1] = (sum >> 8) & 0xff;
+
+	return (~value.word) & 0xFFFF;
+}
+
+#define for_each_lbrec(head, rec) \
+	for(rec = (struct lb_record *)(((char *)head) + sizeof(*head)); \
+		(((char *)rec) < (((char *)head) + sizeof(*head) + head->table_bytes))  && \
+		(rec->size >= 1) && \
+		((((char *)rec) + rec->size) <= (((char *)head) + sizeof(*head) + head->table_bytes)); \
+		rec = (struct lb_record *)(((char *)rec) + rec->size))
+
+static int count_lb_records(struct lb_header *head)
+{
+	struct lb_record *rec;
+	int count;
+
+	count = 0;
+	for_each_lbrec(head, rec) {
+		count++;
+	}
+
+	return count;
+}
+
+static struct lb_header *find_lb_table(void *base, unsigned long start,
+				       unsigned long end)
+{
+	unsigned long addr;
+
+	/* For now be stupid.... */
+	for (addr = start; addr < end; addr += 16) {
+		struct lb_header *head =
+		    (struct lb_header *)(((char *)base) + addr);
+		struct lb_record *recs =
+		    (struct lb_record *)(((char *)base) + addr + sizeof(*head));
+		if (memcmp(head->signature, "LBIO", 4) != 0)
+			continue;
+		printf_debug("Found canidate at: %08lx-%08lx\n",
+			     addr, addr + head->table_bytes);
+		if (head->header_bytes != sizeof(*head)) {
+			fprintf(stderr, "Header bytes of %d are incorrect.\n",
+				head->header_bytes);
+			continue;
+		}
+		if (count_lb_records(head) != head->table_entries) {
+			fprintf(stderr, "Bad record count: %d.\n",
+				head->table_entries);
+			continue;
+		}
+		if (compute_checksum((uint8_t *) head, sizeof(*head)) != 0) {
+			fprintf(stderr, "Bad header checksum.\n");
+			continue;
+		}
+		if (compute_checksum(recs, head->table_bytes)
+		    != head->table_checksum) {
+			fprintf(stderr, "Bad table checksum: %04x.\n",
+				head->table_checksum);
+			continue;
+		}
+		fprintf(stdout, "Found coreboot table at 0x%08lx.\n", addr);
+		return head;
+
+	};
+
+	return 0;
+}
+
+static void find_mainboard(struct lb_record *ptr, unsigned long addr)
+{
+	struct lb_mainboard *rec;
+	int max_size;
+	char vendor[256], part[256];
+
+	rec = (struct lb_mainboard *)ptr;
+	max_size = rec->size - sizeof(*rec);
+	printf("Vendor ID: %.*s, part ID: %.*s\n",
+	       max_size - rec->vendor_idx,
+	       rec->strings + rec->vendor_idx,
+	       max_size - rec->part_number_idx,
+	       rec->strings + rec->part_number_idx);
+	snprintf(vendor, 255, "%.*s", max_size - rec->vendor_idx,
+		 rec->strings + rec->vendor_idx);
+	snprintf(part, 255, "%.*s", max_size - rec->part_number_idx,
+		 rec->strings + rec->part_number_idx);
+
+	if (lb_part) {
+		printf("Overwritten by command line, vendor ID: %s, part ID: %s.\n", lb_vendor, lb_part);
+	} else {
+		lb_part = strdup(part);
+		lb_vendor = strdup(vendor);
+	}
+}
+
+static struct lb_record *next_record(struct lb_record *rec)
+{
+	return (struct lb_record *)(((char *)rec) + rec->size);
+}
+
+static void search_lb_records(struct lb_record *rec, struct lb_record *last,
+			      unsigned long addr)
+{
+	struct lb_record *next;
+	int count;
+	count = 0;
+
+	for (next = next_record(rec); (rec < last) && (next <= last);
+	     rec = next, addr += rec->size) {
+		next = next_record(rec);
+		count++;
+		if (rec->tag == LB_TAG_MAINBOARD) {
+			find_mainboard(rec, addr);
+			break;
+		}
+	}
+}
+
+int coreboot_init(void)
+{
+	uint8_t *low_1MB;
+	struct lb_header *lb_table;
+	struct lb_record *rec, *last;
+
+	low_1MB = mmap(0, 1024 * 1024, PROT_READ, MAP_SHARED, fd_mem,
+		       0x00000000);
+	if (low_1MB == MAP_FAILED) {
+		perror("Can't mmap memory using " MEM_DEV);
+		exit(-2);
+	}
+	lb_table = 0;
+	if (!lb_table)
+		lb_table = find_lb_table(low_1MB, 0x00000, 0x1000);
+	if (!lb_table)
+		lb_table = find_lb_table(low_1MB, 0xf0000, 1024 * 1024);
+	if (lb_table) {
+		unsigned long addr;
+		addr = ((char *)lb_table) - ((char *)low_1MB);
+		printf_debug("Coreboot table found at %p.\n", lb_table);
+		rec = (struct lb_record *)(((char *)lb_table) + lb_table->header_bytes);
+		last = (struct lb_record *)(((char *)rec) + lb_table->table_bytes);
+		printf_debug("Coreboot header(%d) checksum: %04x table(%d) checksum: %04x entries: %d\n",
+		     lb_table->header_bytes, lb_table->header_checksum,
+		     lb_table->table_bytes, lb_table->table_checksum,
+		     lb_table->table_entries);
+		search_lb_records(rec, last, addr + lb_table->header_bytes);
+	} else {
+		printf("No coreboot table found.\n");
+		return -1;
+	}
+
+	return 0;
+}

Copied: trunk/util/flashrom/coreboot_tables.h (from rev 3056, trunk/util/flashrom/linuxbios_tables.h)
===================================================================
--- trunk/util/flashrom/coreboot_tables.h	                        (rev 0)
+++ trunk/util/flashrom/coreboot_tables.h	2008-01-18 16:17:44 UTC (rev 3058)
@@ -0,0 +1,210 @@
+#ifndef COREBOOT_TABLES_H
+#define COREBOOT_TABLES_H
+
+#include <stdint.h>
+
+/* The coreboot table information is for conveying information
+ * from the firmware to the loaded OS image.  Primarily this
+ * is expected to be information that cannot be discovered by
+ * other means, such as quering the hardware directly.
+ *
+ * All of the information should be Position Independent Data.  
+ * That is it should be safe to relocated any of the information
+ * without it's meaning/correctnes changing.   For table that
+ * can reasonably be used on multiple architectures the data
+ * size should be fixed.  This should ease the transition between
+ * 32 bit and 64 bit architectures etc.
+ *
+ * The completeness test for the information in this table is:
+ * - Can all of the hardware be detected?
+ * - Are the per motherboard constants available?
+ * - Is there enough to allow a kernel to run that was written before
+ *   a particular motherboard is constructed? (Assuming the kernel
+ *   has drivers for all of the hardware but it does not have
+ *   assumptions on how the hardware is connected together).
+ *
+ * With this test it should be straight forward to determine if a
+ * table entry is required or not.  This should remove much of the
+ * long term compatibility burden as table entries which are
+ * irrelevant or have been replaced by better alternatives may be
+ * dropped.  Of course it is polite and expidite to include extra
+ * table entries and be backwards compatible, but it is not required.
+ */
+
+/* Since coreboot is usually compiled 32bit, gcc will align 64bit 
+ * types to 32bit boundaries. If the coreboot table is dumped on a 
+ * 64bit system, a uint64_t would be aligned to 64bit boundaries, 
+ * breaking the table format.
+ *
+ * lb_uint64 will keep 64bit coreboot table values aligned to 32bit
+ * to ensure compatibility. They can be accessed with the two functions
+ * below: unpack_lb64() and pack_lb64()
+ *
+ * See also: util/lbtdump/lbtdump.c
+ */
+
+struct lb_uint64 {
+	uint32_t lo;
+	uint32_t hi;
+};
+
+static inline uint64_t unpack_lb64(struct lb_uint64 value)
+{
+	uint64_t result;
+	result = value.hi;
+	result = (result << 32) + value.lo;
+	return result;
+}
+
+static inline struct lb_uint64 pack_lb64(uint64_t value)
+{
+	struct lb_uint64 result;
+	result.lo = (value >> 0) & 0xffffffff;
+	result.hi = (value >> 32) & 0xffffffff;
+	return result;
+}
+
+struct lb_header {
+	uint8_t signature[4];	/* LBIO */
+	uint32_t header_bytes;
+	uint32_t header_checksum;
+	uint32_t table_bytes;
+	uint32_t table_checksum;
+	uint32_t table_entries;
+};
+
+/* Every entry in the boot enviroment list will correspond to a boot
+ * info record.  Encoding both type and size.  The type is obviously
+ * so you can tell what it is.  The size allows you to skip that
+ * boot enviroment record if you don't know what it easy.  This allows
+ * forward compatibility with records not yet defined.
+ */
+struct lb_record {
+	uint32_t tag;		/* tag ID */
+	uint32_t size;		/* size of record (in bytes) */
+};
+
+#define LB_TAG_UNUSED	0x0000
+
+#define LB_TAG_MEMORY	0x0001
+
+struct lb_memory_range {
+	struct lb_uint64 start;
+	struct lb_uint64 size;
+	uint32_t type;
+#define LB_MEM_RAM       1	/* Memory anyone can use */
+#define LB_MEM_RESERVED  2	/* Don't use this memory region */
+#define LB_MEM_TABLE     16	/* Ram configuration tables are kept in */
+};
+
+struct lb_memory {
+	uint32_t tag;
+	uint32_t size;
+	struct lb_memory_range map[0];
+};
+
+#define LB_TAG_HWRPB	0x0002
+struct lb_hwrpb {
+	uint32_t tag;
+	uint32_t size;
+	uint64_t hwrpb;
+};
+
+#define LB_TAG_MAINBOARD	0x0003
+struct lb_mainboard {
+	uint32_t tag;
+	uint32_t size;
+	uint8_t vendor_idx;
+	uint8_t part_number_idx;
+	uint8_t strings[0];
+};
+
+#define LB_TAG_VERSION		0x0004
+#define LB_TAG_EXTRA_VERSION	0x0005
+#define LB_TAG_BUILD		0x0006
+#define LB_TAG_COMPILE_TIME	0x0007
+#define LB_TAG_COMPILE_BY	0x0008
+#define LB_TAG_COMPILE_HOST	0x0009
+#define LB_TAG_COMPILE_DOMAIN	0x000a
+#define LB_TAG_COMPILER		0x000b
+#define LB_TAG_LINKER		0x000c
+#define LB_TAG_ASSEMBLER	0x000d
+struct lb_string {
+	uint32_t tag;
+	uint32_t size;
+	uint8_t string[0];
+};
+
+/* The following structures are for the cmos definitions table */
+#define LB_TAG_CMOS_OPTION_TABLE 200
+/* cmos header record */
+struct cmos_option_table {
+	uint32_t tag;		/* CMOS definitions table type */
+	uint32_t size;		/* size of the entire table */
+	uint32_t header_length;	/* length of header */
+};
+
+/* cmos entry record
+        This record is variable length.  The name field may be
+        shorter than CMOS_MAX_NAME_LENGTH. The entry may start
+        anywhere in the byte, but can not span bytes unless it
+        starts at the beginning of the byte and the length is
+        fills complete bytes.
+*/
+#define LB_TAG_OPTION 201
+struct cmos_entries {
+	uint32_t tag;		/* entry type */
+	uint32_t size;		/* length of this record */
+	uint32_t bit;		/* starting bit from start of image */
+	uint32_t length;	/* length of field in bits */
+	uint32_t config;	/* e=enumeration, h=hex, r=reserved */
+	uint32_t config_id;	/* a number linking to an enumeration record */
+#define CMOS_MAX_NAME_LENGTH 32
+	uint8_t name[CMOS_MAX_NAME_LENGTH];	/* name of entry in ascii, 
+						   variable length int aligned */
+};
+
+/* cmos enumerations record
+        This record is variable length.  The text field may be
+        shorter than CMOS_MAX_TEXT_LENGTH.
+*/
+#define LB_TAG_OPTION_ENUM 202
+struct cmos_enums {
+	uint32_t tag;		/* enumeration type */
+	uint32_t size;		/* length of this record */
+	uint32_t config_id;	/* a number identifying the config id */
+	uint32_t value;		/* the value associated with the text */
+#define CMOS_MAX_TEXT_LENGTH 32
+	uint8_t text[CMOS_MAX_TEXT_LENGTH];	/* enum description in ascii, 
+						   variable length int aligned */
+};
+
+/* cmos defaults record
+        This record contains default settings for the cmos ram.
+*/
+#define LB_TAG_OPTION_DEFAULTS 203
+struct cmos_defaults {
+	uint32_t tag;		/* default type */
+	uint32_t size;		/* length of this record */
+	uint32_t name_length;	/* length of the following name field */
+	uint8_t name[CMOS_MAX_NAME_LENGTH];	/* name identifying the default */
+#define CMOS_IMAGE_BUFFER_SIZE 128
+	uint8_t default_set[CMOS_IMAGE_BUFFER_SIZE];	/* default settings */
+};
+
+#define LB_TAG_OPTION_CHECKSUM 204
+struct cmos_checksum {
+	uint32_t tag;
+	uint32_t size;
+	/* In practice everything is byte aligned, but things are measured
+	 * in bits to be consistent.
+	 */
+	uint32_t range_start;	/* First bit that is checksummed (byte aligned) */
+	uint32_t range_end;	/* Last bit that is checksummed (byte aligned) */
+	uint32_t location;	/* First bit of the checksum (byte aligned) */
+	uint32_t type;		/* Checksum algorithm that is used */
+#define CHECKSUM_NONE	0
+#define CHECKSUM_PCBIOS	1
+};
+
+#endif				/* COREBOOT_TABLES_H */

Deleted: trunk/util/flashrom/lbtable.c
===================================================================
--- trunk/util/flashrom/lbtable.c	2008-01-18 16:16:45 UTC (rev 3057)
+++ trunk/util/flashrom/lbtable.c	2008-01-18 16:17:44 UTC (rev 3058)
@@ -1,218 +0,0 @@
-/*
- * This file is part of the flashrom project.
- *
- * Copyright (C) 2002 Steven James <pyro at linuxlabs.com>
- * Copyright (C) 2002 Linux Networx
- * (Written by Eric Biederman <ebiederman at lnxi.com> for Linux Networx)
- * Copyright (C) 2006-2007 coresystems GmbH
- * (Written by Stefan Reinauer <stepan at coresystems.de> for coresystems GmbH)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/mman.h>
-#include "flash.h"
-#include "linuxbios_tables.h"
-
-char *lb_part = NULL, *lb_vendor = NULL;
-
-static unsigned long compute_checksum(void *addr, unsigned long length)
-{
-	uint8_t *ptr;
-	volatile union {
-		uint8_t byte[2];
-		uint16_t word;
-	} value;
-	unsigned long sum;
-	unsigned long i;
-
-	/* In the most straight forward way possible,
-	 * compute an ip style checksum.
-	 */
-	sum = 0;
-	ptr = addr;
-	for (i = 0; i < length; i++) {
-		unsigned long value;
-		value = ptr[i];
-		if (i & 1) {
-			value <<= 8;
-		}
-		/* Add the new value */
-		sum += value;
-		/* Wrap around the carry */
-		if (sum > 0xFFFF) {
-			sum = (sum + (sum >> 16)) & 0xFFFF;
-		}
-	}
-	value.byte[0] = sum & 0xff;
-	value.byte[1] = (sum >> 8) & 0xff;
-
-	return (~value.word) & 0xFFFF;
-}
-
-#define for_each_lbrec(head, rec) \
-	for(rec = (struct lb_record *)(((char *)head) + sizeof(*head)); \
-		(((char *)rec) < (((char *)head) + sizeof(*head) + head->table_bytes))  && \
-		(rec->size >= 1) && \
-		((((char *)rec) + rec->size) <= (((char *)head) + sizeof(*head) + head->table_bytes)); \
-		rec = (struct lb_record *)(((char *)rec) + rec->size))
-
-static int count_lb_records(struct lb_header *head)
-{
-	struct lb_record *rec;
-	int count;
-
-	count = 0;
-	for_each_lbrec(head, rec) {
-		count++;
-	}
-
-	return count;
-}
-
-static struct lb_header *find_lb_table(void *base, unsigned long start,
-				       unsigned long end)
-{
-	unsigned long addr;
-
-	/* For now be stupid.... */
-	for (addr = start; addr < end; addr += 16) {
-		struct lb_header *head =
-		    (struct lb_header *)(((char *)base) + addr);
-		struct lb_record *recs =
-		    (struct lb_record *)(((char *)base) + addr + sizeof(*head));
-		if (memcmp(head->signature, "LBIO", 4) != 0)
-			continue;
-		printf_debug("Found canidate at: %08lx-%08lx\n",
-			     addr, addr + head->table_bytes);
-		if (head->header_bytes != sizeof(*head)) {
-			fprintf(stderr, "Header bytes of %d are incorrect.\n",
-				head->header_bytes);
-			continue;
-		}
-		if (count_lb_records(head) != head->table_entries) {
-			fprintf(stderr, "Bad record count: %d.\n",
-				head->table_entries);
-			continue;
-		}
-		if (compute_checksum((uint8_t *) head, sizeof(*head)) != 0) {
-			fprintf(stderr, "Bad header checksum.\n");
-			continue;
-		}
-		if (compute_checksum(recs, head->table_bytes)
-		    != head->table_checksum) {
-			fprintf(stderr, "Bad table checksum: %04x.\n",
-				head->table_checksum);
-			continue;
-		}
-		fprintf(stdout, "Found coreboot table at 0x%08lx.\n", addr);
-		return head;
-
-	};
-
-	return 0;
-}
-
-static void find_mainboard(struct lb_record *ptr, unsigned long addr)
-{
-	struct lb_mainboard *rec;
-	int max_size;
-	char vendor[256], part[256];
-
-	rec = (struct lb_mainboard *)ptr;
-	max_size = rec->size - sizeof(*rec);
-	printf("Vendor ID: %.*s, part ID: %.*s\n",
-	       max_size - rec->vendor_idx,
-	       rec->strings + rec->vendor_idx,
-	       max_size - rec->part_number_idx,
-	       rec->strings + rec->part_number_idx);
-	snprintf(vendor, 255, "%.*s", max_size - rec->vendor_idx,
-		 rec->strings + rec->vendor_idx);
-	snprintf(part, 255, "%.*s", max_size - rec->part_number_idx,
-		 rec->strings + rec->part_number_idx);
-
-	if (lb_part) {
-		printf("Overwritten by command line, vendor ID: %s, part ID: %s.\n", lb_vendor, lb_part);
-	} else {
-		lb_part = strdup(part);
-		lb_vendor = strdup(vendor);
-	}
-}
-
-static struct lb_record *next_record(struct lb_record *rec)
-{
-	return (struct lb_record *)(((char *)rec) + rec->size);
-}
-
-static void search_lb_records(struct lb_record *rec, struct lb_record *last,
-			      unsigned long addr)
-{
-	struct lb_record *next;
-	int count;
-	count = 0;
-
-	for (next = next_record(rec); (rec < last) && (next <= last);
-	     rec = next, addr += rec->size) {
-		next = next_record(rec);
-		count++;
-		if (rec->tag == LB_TAG_MAINBOARD) {
-			find_mainboard(rec, addr);
-			break;
-		}
-	}
-}
-
-int coreboot_init(void)
-{
-	uint8_t *low_1MB;
-	struct lb_header *lb_table;
-	struct lb_record *rec, *last;
-
-	low_1MB = mmap(0, 1024 * 1024, PROT_READ, MAP_SHARED, fd_mem,
-		       0x00000000);
-	if (low_1MB == MAP_FAILED) {
-		perror("Can't mmap memory using " MEM_DEV);
-		exit(-2);
-	}
-	lb_table = 0;
-	if (!lb_table)
-		lb_table = find_lb_table(low_1MB, 0x00000, 0x1000);
-	if (!lb_table)
-		lb_table = find_lb_table(low_1MB, 0xf0000, 1024 * 1024);
-	if (lb_table) {
-		unsigned long addr;
-		addr = ((char *)lb_table) - ((char *)low_1MB);
-		printf_debug("Coreboot table found at %p.\n", lb_table);
-		rec = (struct lb_record *)(((char *)lb_table) + lb_table->header_bytes);
-		last = (struct lb_record *)(((char *)rec) + lb_table->table_bytes);
-		printf_debug("Coreboot header(%d) checksum: %04x table(%d) checksum: %04x entries: %d\n",
-		     lb_table->header_bytes, lb_table->header_checksum,
-		     lb_table->table_bytes, lb_table->table_checksum,
-		     lb_table->table_entries);
-		search_lb_records(rec, last, addr + lb_table->header_bytes);
-	} else {
-		printf("No coreboot table found.\n");
-		return -1;
-	}
-
-	return 0;
-}

Deleted: trunk/util/flashrom/linuxbios_tables.h
===================================================================
--- trunk/util/flashrom/linuxbios_tables.h	2008-01-18 16:16:45 UTC (rev 3057)
+++ trunk/util/flashrom/linuxbios_tables.h	2008-01-18 16:17:44 UTC (rev 3058)
@@ -1,210 +0,0 @@
-#ifndef COREBOOT_TABLES_H
-#define COREBOOT_TABLES_H
-
-#include <stdint.h>
-
-/* The coreboot table information is for conveying information
- * from the firmware to the loaded OS image.  Primarily this
- * is expected to be information that cannot be discovered by
- * other means, such as quering the hardware directly.
- *
- * All of the information should be Position Independent Data.  
- * That is it should be safe to relocated any of the information
- * without it's meaning/correctnes changing.   For table that
- * can reasonably be used on multiple architectures the data
- * size should be fixed.  This should ease the transition between
- * 32 bit and 64 bit architectures etc.
- *
- * The completeness test for the information in this table is:
- * - Can all of the hardware be detected?
- * - Are the per motherboard constants available?
- * - Is there enough to allow a kernel to run that was written before
- *   a particular motherboard is constructed? (Assuming the kernel
- *   has drivers for all of the hardware but it does not have
- *   assumptions on how the hardware is connected together).
- *
- * With this test it should be straight forward to determine if a
- * table entry is required or not.  This should remove much of the
- * long term compatibility burden as table entries which are
- * irrelevant or have been replaced by better alternatives may be
- * dropped.  Of course it is polite and expidite to include extra
- * table entries and be backwards compatible, but it is not required.
- */
-
-/* Since coreboot is usually compiled 32bit, gcc will align 64bit 
- * types to 32bit boundaries. If the coreboot table is dumped on a 
- * 64bit system, a uint64_t would be aligned to 64bit boundaries, 
- * breaking the table format.
- *
- * lb_uint64 will keep 64bit coreboot table values aligned to 32bit
- * to ensure compatibility. They can be accessed with the two functions
- * below: unpack_lb64() and pack_lb64()
- *
- * See also: util/lbtdump/lbtdump.c
- */
-
-struct lb_uint64 {
-	uint32_t lo;
-	uint32_t hi;
-};
-
-static inline uint64_t unpack_lb64(struct lb_uint64 value)
-{
-	uint64_t result;
-	result = value.hi;
-	result = (result << 32) + value.lo;
-	return result;
-}
-
-static inline struct lb_uint64 pack_lb64(uint64_t value)
-{
-	struct lb_uint64 result;
-	result.lo = (value >> 0) & 0xffffffff;
-	result.hi = (value >> 32) & 0xffffffff;
-	return result;
-}
-
-struct lb_header {
-	uint8_t signature[4];	/* LBIO */
-	uint32_t header_bytes;
-	uint32_t header_checksum;
-	uint32_t table_bytes;
-	uint32_t table_checksum;
-	uint32_t table_entries;
-};
-
-/* Every entry in the boot enviroment list will correspond to a boot
- * info record.  Encoding both type and size.  The type is obviously
- * so you can tell what it is.  The size allows you to skip that
- * boot enviroment record if you don't know what it easy.  This allows
- * forward compatibility with records not yet defined.
- */
-struct lb_record {
-	uint32_t tag;		/* tag ID */
-	uint32_t size;		/* size of record (in bytes) */
-};
-
-#define LB_TAG_UNUSED	0x0000
-
-#define LB_TAG_MEMORY	0x0001
-
-struct lb_memory_range {
-	struct lb_uint64 start;
-	struct lb_uint64 size;
-	uint32_t type;
-#define LB_MEM_RAM       1	/* Memory anyone can use */
-#define LB_MEM_RESERVED  2	/* Don't use this memory region */
-#define LB_MEM_TABLE     16	/* Ram configuration tables are kept in */
-};
-
-struct lb_memory {
-	uint32_t tag;
-	uint32_t size;
-	struct lb_memory_range map[0];
-};
-
-#define LB_TAG_HWRPB	0x0002
-struct lb_hwrpb {
-	uint32_t tag;
-	uint32_t size;
-	uint64_t hwrpb;
-};
-
-#define LB_TAG_MAINBOARD	0x0003
-struct lb_mainboard {
-	uint32_t tag;
-	uint32_t size;
-	uint8_t vendor_idx;
-	uint8_t part_number_idx;
-	uint8_t strings[0];
-};
-
-#define LB_TAG_VERSION		0x0004
-#define LB_TAG_EXTRA_VERSION	0x0005
-#define LB_TAG_BUILD		0x0006
-#define LB_TAG_COMPILE_TIME	0x0007
-#define LB_TAG_COMPILE_BY	0x0008
-#define LB_TAG_COMPILE_HOST	0x0009
-#define LB_TAG_COMPILE_DOMAIN	0x000a
-#define LB_TAG_COMPILER		0x000b
-#define LB_TAG_LINKER		0x000c
-#define LB_TAG_ASSEMBLER	0x000d
-struct lb_string {
-	uint32_t tag;
-	uint32_t size;
-	uint8_t string[0];
-};
-
-/* The following structures are for the cmos definitions table */
-#define LB_TAG_CMOS_OPTION_TABLE 200
-/* cmos header record */
-struct cmos_option_table {
-	uint32_t tag;		/* CMOS definitions table type */
-	uint32_t size;		/* size of the entire table */
-	uint32_t header_length;	/* length of header */
-};
-
-/* cmos entry record
-        This record is variable length.  The name field may be
-        shorter than CMOS_MAX_NAME_LENGTH. The entry may start
-        anywhere in the byte, but can not span bytes unless it
-        starts at the beginning of the byte and the length is
-        fills complete bytes.
-*/
-#define LB_TAG_OPTION 201
-struct cmos_entries {
-	uint32_t tag;		/* entry type */
-	uint32_t size;		/* length of this record */
-	uint32_t bit;		/* starting bit from start of image */
-	uint32_t length;	/* length of field in bits */
-	uint32_t config;	/* e=enumeration, h=hex, r=reserved */
-	uint32_t config_id;	/* a number linking to an enumeration record */
-#define CMOS_MAX_NAME_LENGTH 32
-	uint8_t name[CMOS_MAX_NAME_LENGTH];	/* name of entry in ascii, 
-						   variable length int aligned */
-};
-
-/* cmos enumerations record
-        This record is variable length.  The text field may be
-        shorter than CMOS_MAX_TEXT_LENGTH.
-*/
-#define LB_TAG_OPTION_ENUM 202
-struct cmos_enums {
-	uint32_t tag;		/* enumeration type */
-	uint32_t size;		/* length of this record */
-	uint32_t config_id;	/* a number identifying the config id */
-	uint32_t value;		/* the value associated with the text */
-#define CMOS_MAX_TEXT_LENGTH 32
-	uint8_t text[CMOS_MAX_TEXT_LENGTH];	/* enum description in ascii, 
-						   variable length int aligned */
-};
-
-/* cmos defaults record
-        This record contains default settings for the cmos ram.
-*/
-#define LB_TAG_OPTION_DEFAULTS 203
-struct cmos_defaults {
-	uint32_t tag;		/* default type */
-	uint32_t size;		/* length of this record */
-	uint32_t name_length;	/* length of the following name field */
-	uint8_t name[CMOS_MAX_NAME_LENGTH];	/* name identifying the default */
-#define CMOS_IMAGE_BUFFER_SIZE 128
-	uint8_t default_set[CMOS_IMAGE_BUFFER_SIZE];	/* default settings */
-};
-
-#define LB_TAG_OPTION_CHECKSUM 204
-struct cmos_checksum {
-	uint32_t tag;
-	uint32_t size;
-	/* In practice everything is byte aligned, but things are measured
-	 * in bits to be consistent.
-	 */
-	uint32_t range_start;	/* First bit that is checksummed (byte aligned) */
-	uint32_t range_end;	/* Last bit that is checksummed (byte aligned) */
-	uint32_t location;	/* First bit of the checksum (byte aligned) */
-	uint32_t type;		/* Checksum algorithm that is used */
-#define CHECKSUM_NONE	0
-#define CHECKSUM_PCBIOS	1
-};
-
-#endif				/* COREBOOT_TABLES_H */

Modified: trunk/util/lxbios/Makefile
===================================================================
--- trunk/util/lxbios/Makefile	2008-01-18 16:16:45 UTC (rev 3057)
+++ trunk/util/lxbios/Makefile	2008-01-18 16:17:44 UTC (rev 3058)
@@ -7,7 +7,7 @@
 OBJS = common.o compute_ip_checksum.o hexdump.o cmos_lowlevel.o \
        reg_expr.o layout.o layout_file.o lbtable.o cmos_ops.o input_file.o \
        opts.o lxbios.o
-HEADERS = common.h ip_checksum.h linuxbios_tables.h hexdump.h \
+HEADERS = common.h ip_checksum.h coreboot_tables.h hexdump.h \
           cmos_lowlevel.h reg_expr.h layout.h layout_file.h lbtable.h \
           cmos_ops.h input_file.h opts.h
 

Copied: trunk/util/lxbios/coreboot_tables.h (from rev 3056, trunk/util/lxbios/linuxbios_tables.h)
===================================================================
--- trunk/util/lxbios/coreboot_tables.h	                        (rev 0)
+++ trunk/util/lxbios/coreboot_tables.h	2008-01-18 16:17:44 UTC (rev 3058)
@@ -0,0 +1,225 @@
+/*****************************************************************************\
+ * coreboot_tables.h
+\*****************************************************************************/
+
+#ifndef COREBOOT_TABLES_H
+#define COREBOOT_TABLES_H
+
+#include <stdint.h>
+
+/* Note: The contents of this file were borrowed from the coreboot source
+ *       code which may be obtained from http://www.coreboot.org/.
+ *       Specifically, this code was obtained from LinuxBIOS version 1.1.8.
+ */
+
+/* The coreboot table information is for conveying information
+ * from the firmware to the loaded OS image.  Primarily this
+ * is expected to be information that cannot be discovered by
+ * other means, such as quering the hardware directly.
+ *
+ * All of the information should be Position Independent Data.  
+ * That is it should be safe to relocated any of the information
+ * without it's meaning/correctnes changing.   For table that
+ * can reasonably be used on multiple architectures the data
+ * size should be fixed.  This should ease the transition between
+ * 32 bit and 64 bit architectures etc.
+ *
+ * The completeness test for the information in this table is:
+ * - Can all of the hardware be detected?
+ * - Are the per motherboard constants available?
+ * - Is there enough to allow a kernel to run that was written before
+ *   a particular motherboard is constructed? (Assuming the kernel
+ *   has drivers for all of the hardware but it does not have
+ *   assumptions on how the hardware is connected together).
+ *
+ * With this test it should be straight forward to determine if a
+ * table entry is required or not.  This should remove much of the
+ * long term compatibility burden as table entries which are
+ * irrelevant or have been replaced by better alternatives may be
+ * dropped.  Of course it is polite and expidite to include extra
+ * table entries and be backwards compatible, but it is not required.
+ */
+
+/* Since coreboot is usually compiled 32bit, gcc will align 64bit 
+ * types to 32bit boundaries. If the coreboot table is dumped on a 
+ * 64bit system, a uint64_t would be aligned to 64bit boundaries, 
+ * breaking the table format.
+ *
+ * lb_uint64 will keep 64bit coreboot table values aligned to 32bit
+ * to ensure compatibility. They can be accessed with the two functions
+ * below: unpack_lb64() and pack_lb64()
+ *
+ * See also: util/lbtdump/lbtdump.c
+ */
+
+struct lb_uint64 {
+	uint32_t lo;
+	uint32_t hi;
+};
+
+static inline uint64_t unpack_lb64(struct lb_uint64 value)
+{
+        uint64_t result;
+        result = value.hi;
+        result = (result << 32) + value.lo;
+        return result;
+}
+
+static inline struct lb_uint64 pack_lb64(uint64_t value)
+{
+        struct lb_uint64 result;
+        result.lo = (value >> 0) & 0xffffffff;
+        result.hi = (value >> 32) & 0xffffffff;
+        return result;
+}
+
+
+
+struct lb_header
+{
+        uint8_t  signature[4]; /* LBIO */
+        uint32_t header_bytes;
+        uint32_t header_checksum;
+        uint32_t table_bytes;
+        uint32_t table_checksum;
+        uint32_t table_entries;
+};
+
+/* Every entry in the boot enviroment list will correspond to a boot
+ * info record.  Encoding both type and size.  The type is obviously
+ * so you can tell what it is.  The size allows you to skip that
+ * boot enviroment record if you don't know what it easy.  This allows
+ * forward compatibility with records not yet defined.
+ */
+struct lb_record {
+        uint32_t tag;                /* tag ID */
+        uint32_t size;                /* size of record (in bytes) */
+};
+
+#define LB_TAG_UNUSED        0x0000
+
+#define LB_TAG_MEMORY        0x0001
+
+struct lb_memory_range {
+	struct lb_uint64 start;
+	struct lb_uint64 size;
+        uint32_t type;
+#define LB_MEM_RAM       1        /* Memory anyone can use */
+#define LB_MEM_RESERVED  2        /* Don't use this memory region */
+#define LB_MEM_TABLE     16        /* Ram configuration tables are kept in */
+};
+
+struct lb_memory {
+        uint32_t tag;
+        uint32_t size;
+        struct lb_memory_range map[0];
+};
+
+#define LB_TAG_HWRPB        0x0002
+struct lb_hwrpb {
+        uint32_t tag;
+        uint32_t size;
+        uint64_t hwrpb;
+};
+
+#define LB_TAG_MAINBOARD        0x0003
+struct lb_mainboard {
+        uint32_t tag;
+        uint32_t size;
+        uint8_t  vendor_idx;
+        uint8_t  part_number_idx;
+        uint8_t  strings[0];
+};
+
+#define LB_TAG_VERSION                0x0004
+#define LB_TAG_EXTRA_VERSION        0x0005
+#define LB_TAG_BUILD                0x0006
+#define LB_TAG_COMPILE_TIME        0x0007
+#define LB_TAG_COMPILE_BY        0x0008
+#define LB_TAG_COMPILE_HOST        0x0009
+#define LB_TAG_COMPILE_DOMAIN        0x000a
+#define LB_TAG_COMPILER                0x000b
+#define LB_TAG_LINKER                0x000c
+#define LB_TAG_ASSEMBLER        0x000d
+struct lb_string {
+        uint32_t tag;
+        uint32_t size;
+        uint8_t  string[0];
+};
+
+/* The following structures are for the cmos definitions table */
+#define LB_TAG_CMOS_OPTION_TABLE 200
+/* cmos header record */
+struct cmos_option_table {
+        uint32_t tag;               /* CMOS definitions table type */
+        uint32_t size;               /* size of the entire table */
+        uint32_t header_length;      /* length of header */
+};
+
+/* cmos entry record
+        This record is variable length.  The name field may be
+        shorter than CMOS_MAX_NAME_LENGTH. The entry may start
+        anywhere in the byte, but can not span bytes unless it
+        starts at the beginning of the byte and the length is
+        fills complete bytes.
+*/
+#define LB_TAG_OPTION 201
+struct cmos_entries {
+        uint32_t tag;                /* entry type */
+        uint32_t size;               /* length of this record */
+        uint32_t bit;                /* starting bit from start of image */
+        uint32_t length;             /* length of field in bits */
+        uint32_t config;             /* e=enumeration, h=hex, r=reserved */
+        uint32_t config_id;          /* a number linking to an enumeration record */
+#define CMOS_MAX_NAME_LENGTH 32
+        uint8_t name[CMOS_MAX_NAME_LENGTH]; /* name of entry in ascii, 
+                                               variable length int aligned */
+};
+
+
+/* cmos enumerations record
+        This record is variable length.  The text field may be
+        shorter than CMOS_MAX_TEXT_LENGTH.
+*/
+#define LB_TAG_OPTION_ENUM 202
+struct cmos_enums {
+        uint32_t tag;                     /* enumeration type */
+        uint32_t size;                      /* length of this record */
+        uint32_t config_id;          /* a number identifying the config id */
+        uint32_t value;              /* the value associated with the text */
+#define CMOS_MAX_TEXT_LENGTH 32
+        uint8_t text[CMOS_MAX_TEXT_LENGTH]; /* enum description in ascii, 
+                                                variable length int aligned */
+};
+
+/* cmos defaults record
+        This record contains default settings for the cmos ram.
+*/
+#define LB_TAG_OPTION_DEFAULTS 203
+struct cmos_defaults {
+        uint32_t tag;                /* default type */
+        uint32_t size;               /* length of this record */
+        uint32_t name_length;        /* length of the following name field */
+        uint8_t name[CMOS_MAX_NAME_LENGTH]; /* name identifying the default */
+#define CMOS_IMAGE_BUFFER_SIZE 128
+        uint8_t default_set[CMOS_IMAGE_BUFFER_SIZE]; /* default settings */
+};
+
+#define LB_TAG_OPTION_CHECKSUM 204
+struct	cmos_checksum {
+	uint32_t tag;
+	uint32_t size;
+	/* In practice everything is byte aligned, but things are measured
+	 * in bits to be consistent.
+	 */
+	uint32_t range_start;	/* First bit that is checksummed (byte aligned) */
+	uint32_t range_end;	/* Last bit that is checksummed (byte aligned) */
+	uint32_t location;	/* First bit of the checksum (byte aligned) */
+	uint32_t type;		/* Checksum algorithm that is used */
+#define CHECKSUM_NONE	0
+#define CHECKSUM_PCBIOS	1
+};
+
+
+
+#endif /* COREBOOT_TABLES_H */

Modified: trunk/util/lxbios/layout.h
===================================================================
--- trunk/util/lxbios/layout.h	2008-01-18 16:16:45 UTC (rev 3057)
+++ trunk/util/lxbios/layout.h	2008-01-18 16:17:44 UTC (rev 3058)
@@ -33,7 +33,7 @@
 #define LXBIOS_LAYOUT_H
 
 #include "common.h"
-#include "linuxbios_tables.h"
+#include "coreboot_tables.h"
 
 #define LAYOUT_ENTRY_OVERLAP (LAYOUT_RESULT_START + 0)
 #define LAYOUT_ENTRY_BAD_LENGTH (LAYOUT_RESULT_START + 1)

Modified: trunk/util/lxbios/layout_file.h
===================================================================
--- trunk/util/lxbios/layout_file.h	2008-01-18 16:16:45 UTC (rev 3057)
+++ trunk/util/lxbios/layout_file.h	2008-01-18 16:17:44 UTC (rev 3058)
@@ -33,7 +33,7 @@
 #define LXBIOS_LAYOUT_FILE_H
 
 #include "common.h"
-#include "linuxbios_tables.h"
+#include "coreboot_tables.h"
 
 void set_layout_filename (const char filename[]);
 void get_layout_from_file (void);

Modified: trunk/util/lxbios/lbtable.c
===================================================================
--- trunk/util/lxbios/lbtable.c	2008-01-18 16:16:45 UTC (rev 3057)
+++ trunk/util/lxbios/lbtable.c	2008-01-18 16:17:44 UTC (rev 3058)
@@ -32,7 +32,7 @@
 
 #include <sys/mman.h>
 #include "common.h"
-#include "linuxbios_tables.h"
+#include "coreboot_tables.h"
 #include "ip_checksum.h"
 #include "lbtable.h"
 #include "layout.h"

Deleted: trunk/util/lxbios/linuxbios_tables.h
===================================================================
--- trunk/util/lxbios/linuxbios_tables.h	2008-01-18 16:16:45 UTC (rev 3057)
+++ trunk/util/lxbios/linuxbios_tables.h	2008-01-18 16:17:44 UTC (rev 3058)
@@ -1,226 +0,0 @@
-/*****************************************************************************\
- * linuxbios_tables.h
- * $Id: linuxbios_tables.h,v 1.1.1.1 2005/12/02 22:35:19 dsp_llnl Exp $
-\*****************************************************************************/
-
-#ifndef COREBOOT_TABLES_H
-#define COREBOOT_TABLES_H
-
-#include <stdint.h>
-
-/* Note: The contents of this file were borrowed from the coreboot source
- *       code which may be obtained from http://www.coreboot.org/.
- *       Specifically, this code was obtained from LinuxBIOS version 1.1.8.
- */
-
-/* The coreboot table information is for conveying information
- * from the firmware to the loaded OS image.  Primarily this
- * is expected to be information that cannot be discovered by
- * other means, such as quering the hardware directly.
- *
- * All of the information should be Position Independent Data.  
- * That is it should be safe to relocated any of the information
- * without it's meaning/correctnes changing.   For table that
- * can reasonably be used on multiple architectures the data
- * size should be fixed.  This should ease the transition between
- * 32 bit and 64 bit architectures etc.
- *
- * The completeness test for the information in this table is:
- * - Can all of the hardware be detected?
- * - Are the per motherboard constants available?
- * - Is there enough to allow a kernel to run that was written before
- *   a particular motherboard is constructed? (Assuming the kernel
- *   has drivers for all of the hardware but it does not have
- *   assumptions on how the hardware is connected together).
- *
- * With this test it should be straight forward to determine if a
- * table entry is required or not.  This should remove much of the
- * long term compatibility burden as table entries which are
- * irrelevant or have been replaced by better alternatives may be
- * dropped.  Of course it is polite and expidite to include extra
- * table entries and be backwards compatible, but it is not required.
- */
-
-/* Since coreboot is usually compiled 32bit, gcc will align 64bit 
- * types to 32bit boundaries. If the coreboot table is dumped on a 
- * 64bit system, a uint64_t would be aligned to 64bit boundaries, 
- * breaking the table format.
- *
- * lb_uint64 will keep 64bit coreboot table values aligned to 32bit
- * to ensure compatibility. They can be accessed with the two functions
- * below: unpack_lb64() and pack_lb64()
- *
- * See also: util/lbtdump/lbtdump.c
- */
-
-struct lb_uint64 {
-	uint32_t lo;
-	uint32_t hi;
-};
-
-static inline uint64_t unpack_lb64(struct lb_uint64 value)
-{
-        uint64_t result;
-        result = value.hi;
-        result = (result << 32) + value.lo;
-        return result;
-}
-
-static inline struct lb_uint64 pack_lb64(uint64_t value)
-{
-        struct lb_uint64 result;
-        result.lo = (value >> 0) & 0xffffffff;
-        result.hi = (value >> 32) & 0xffffffff;
-        return result;
-}
-
-
-
-struct lb_header
-{
-        uint8_t  signature[4]; /* LBIO */
-        uint32_t header_bytes;
-        uint32_t header_checksum;
-        uint32_t table_bytes;
-        uint32_t table_checksum;
-        uint32_t table_entries;
-};
-
-/* Every entry in the boot enviroment list will correspond to a boot
- * info record.  Encoding both type and size.  The type is obviously
- * so you can tell what it is.  The size allows you to skip that
- * boot enviroment record if you don't know what it easy.  This allows
- * forward compatibility with records not yet defined.
- */
-struct lb_record {
-        uint32_t tag;                /* tag ID */
-        uint32_t size;                /* size of record (in bytes) */
-};
-
-#define LB_TAG_UNUSED        0x0000
-
-#define LB_TAG_MEMORY        0x0001
-
-struct lb_memory_range {
-	struct lb_uint64 start;
-	struct lb_uint64 size;
-        uint32_t type;
-#define LB_MEM_RAM       1        /* Memory anyone can use */
-#define LB_MEM_RESERVED  2        /* Don't use this memory region */
-#define LB_MEM_TABLE     16        /* Ram configuration tables are kept in */
-};
-
-struct lb_memory {
-        uint32_t tag;
-        uint32_t size;
-        struct lb_memory_range map[0];
-};
-
-#define LB_TAG_HWRPB        0x0002
-struct lb_hwrpb {
-        uint32_t tag;
-        uint32_t size;
-        uint64_t hwrpb;
-};
-
-#define LB_TAG_MAINBOARD        0x0003
-struct lb_mainboard {
-        uint32_t tag;
-        uint32_t size;
-        uint8_t  vendor_idx;
-        uint8_t  part_number_idx;
-        uint8_t  strings[0];
-};
-
-#define LB_TAG_VERSION                0x0004
-#define LB_TAG_EXTRA_VERSION        0x0005
-#define LB_TAG_BUILD                0x0006
-#define LB_TAG_COMPILE_TIME        0x0007
-#define LB_TAG_COMPILE_BY        0x0008
-#define LB_TAG_COMPILE_HOST        0x0009
-#define LB_TAG_COMPILE_DOMAIN        0x000a
-#define LB_TAG_COMPILER                0x000b
-#define LB_TAG_LINKER                0x000c
-#define LB_TAG_ASSEMBLER        0x000d
-struct lb_string {
-        uint32_t tag;
-        uint32_t size;
-        uint8_t  string[0];
-};
-
-/* The following structures are for the cmos definitions table */
-#define LB_TAG_CMOS_OPTION_TABLE 200
-/* cmos header record */
-struct cmos_option_table {
-        uint32_t tag;               /* CMOS definitions table type */
-        uint32_t size;               /* size of the entire table */
-        uint32_t header_length;      /* length of header */
-};
-
-/* cmos entry record
-        This record is variable length.  The name field may be
-        shorter than CMOS_MAX_NAME_LENGTH. The entry may start
-        anywhere in the byte, but can not span bytes unless it
-        starts at the beginning of the byte and the length is
-        fills complete bytes.
-*/
-#define LB_TAG_OPTION 201
-struct cmos_entries {
-        uint32_t tag;                /* entry type */
-        uint32_t size;               /* length of this record */
-        uint32_t bit;                /* starting bit from start of image */
-        uint32_t length;             /* length of field in bits */
-        uint32_t config;             /* e=enumeration, h=hex, r=reserved */
-        uint32_t config_id;          /* a number linking to an enumeration record */
-#define CMOS_MAX_NAME_LENGTH 32
-        uint8_t name[CMOS_MAX_NAME_LENGTH]; /* name of entry in ascii, 
-                                               variable length int aligned */
-};
-
-
-/* cmos enumerations record
-        This record is variable length.  The text field may be
-        shorter than CMOS_MAX_TEXT_LENGTH.
-*/
-#define LB_TAG_OPTION_ENUM 202
-struct cmos_enums {
-        uint32_t tag;                     /* enumeration type */
-        uint32_t size;                      /* length of this record */
-        uint32_t config_id;          /* a number identifying the config id */
-        uint32_t value;              /* the value associated with the text */
-#define CMOS_MAX_TEXT_LENGTH 32
-        uint8_t text[CMOS_MAX_TEXT_LENGTH]; /* enum description in ascii, 
-                                                variable length int aligned */
-};
-
-/* cmos defaults record
-        This record contains default settings for the cmos ram.
-*/
-#define LB_TAG_OPTION_DEFAULTS 203
-struct cmos_defaults {
-        uint32_t tag;                /* default type */
-        uint32_t size;               /* length of this record */
-        uint32_t name_length;        /* length of the following name field */
-        uint8_t name[CMOS_MAX_NAME_LENGTH]; /* name identifying the default */
-#define CMOS_IMAGE_BUFFER_SIZE 128
-        uint8_t default_set[CMOS_IMAGE_BUFFER_SIZE]; /* default settings */
-};
-
-#define LB_TAG_OPTION_CHECKSUM 204
-struct	cmos_checksum {
-	uint32_t tag;
-	uint32_t size;
-	/* In practice everything is byte aligned, but things are measured
-	 * in bits to be consistent.
-	 */
-	uint32_t range_start;	/* First bit that is checksummed (byte aligned) */
-	uint32_t range_end;	/* Last bit that is checksummed (byte aligned) */
-	uint32_t location;	/* First bit of the checksum (byte aligned) */
-	uint32_t type;		/* Checksum algorithm that is used */
-#define CHECKSUM_NONE	0
-#define CHECKSUM_PCBIOS	1
-};
-
-
-
-#endif /* COREBOOT_TABLES_H */

Modified: trunk/util/mptable/mptable.c
===================================================================
--- trunk/util/mptable/mptable.c	2008-01-18 16:16:45 UTC (rev 3057)
+++ trunk/util/mptable/mptable.c	2008-01-18 16:17:44 UTC (rev 3058)
@@ -83,7 +83,7 @@
 
 #define MAXPNSTR		132
 
-#define LINUXBIOS_MP_TABLE      0
+#define COREBOOT_MP_TABLE      0
 
 enum busTypes {
     CBUS = 1,
@@ -299,7 +299,7 @@
 int	grope = 0;
 int	verbose = 0;
 int 	noisy = 0;
-/* preamble to the mptable. This is fixed for all linuxbioses */
+/* preamble to the mptable. This is fixed for all coreboots */
  
 char *preamble[] = {
 "#include <arch/smp/mpspec.h>",
@@ -422,7 +422,7 @@
     if (verbose) puts( SEP_LINE2 );
 
     printf( "/* generatred by MPTable, version %d.%d.%d*/\n", VMAJOR, VMINOR, VDELTA );
-    printf("/* as modified by RGM for LinuxBIOS */\n");
+    printf("/* as modified by RGM for coreboot */\n");
     write_code(preamble);
 
     /* Ron hates getopt() */
@@ -536,7 +536,7 @@
     target = 0;
     segment = 0;
     if ( verbose )
-        printf( " searching for LinuxBIOS MP table  @ 0x%08x (%dK)\n",
+        printf( " searching for coreboot MP table  @ 0x%08x (%dK)\n",
 	        target, segment );
     seekEntry( target );
     readEntry( buffer, ONE_KBYTE );





More information about the coreboot mailing list