diff options
author | stuge <stuge@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1> | 2009-01-26 01:23:31 +0000 |
---|---|---|
committer | stuge <stuge@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1> | 2009-01-26 01:23:31 +0000 |
commit | 433354e6e54973dbc9b8f1e152a32f8d1608913d (patch) | |
tree | 8c343406448761849134777cf4a7c81b089a7d58 /cbtable.c | |
parent | 8d080afdcd84222374af47df48a2545836a724be (diff) | |
download | flashrom-433354e6e54973dbc9b8f1e152a32f8d1608913d.tar.gz |
Original v2 revision: 3905
flashrom: Darwin / Mac OS X
Through DirectIO from coresystems GmbH we now support Darwin/Mac OS X.
DirectIO is available at http://www.coresystems.de/en/directio
Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Signed-off-by: Peter Stuge <peter@stuge.se>
Acked-by: Peter Stuge <peter@stuge.se>
git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@399 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'cbtable.c')
-rw-r--r-- | cbtable.c | 17 |
1 files changed, 13 insertions, 4 deletions
@@ -184,11 +184,20 @@ static void search_lb_records(struct lb_record *rec, struct lb_record *last, int coreboot_init(void) { uint8_t *low_1MB; - unsigned long addr; + unsigned long addr, start; struct lb_header *lb_table; struct lb_record *rec, *last; - low_1MB = physmap("low megabyte", 0x0, 1024*1024); +#ifdef __DARWIN__ + /* This is a hack. DirectIO fails to map physical address 0x00000000. + * Why? + */ + start = 0x400; +#else + start = 0x0; +#endif + low_1MB = physmap("low megabyte", start, 1024*1024); + lb_table = find_lb_table(low_1MB, 0x00000, 0x1000); if (!lb_table) lb_table = find_lb_table(low_1MB, 0xf0000, 1024*1024); @@ -197,8 +206,8 @@ int coreboot_init(void) return -1; } - addr = ((char *)lb_table) - ((char *)low_1MB); - printf_debug("coreboot table found at %p.\n", lb_table); + addr = ((char *)lb_table) - ((char *)low_1MB) + start; + printf_debug("coreboot table found at %p.\n", lb_table + start); 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", |