[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