diff options
author | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2009-05-16 21:22:56 +0000 |
---|---|---|
committer | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2009-05-16 21:22:56 +0000 |
commit | 5820f42ef209cfa0d4070fa9be96c9c91123a93f (patch) | |
tree | a505b6f813fc4f7601f77e7195e479dfddc73571 /flashrom.c | |
parent | 4059598a068f7694f2238a3811d85cbfa520a8d5 (diff) | |
download | flashrom-5820f42ef209cfa0d4070fa9be96c9c91123a93f.tar.gz flashrom-5820f42ef209cfa0d4070fa9be96c9c91123a93f.tar.bz2 flashrom-5820f42ef209cfa0d4070fa9be96c9c91123a93f.zip |
Introduce a type "chipaddr" to abstract the offsets within flash regions
Use chipaddr instead of volatile uint8_t * because when we access chips
in external flashers, they are not accessed via pointers at all.
Benefits: This allows us to differentiate between volatile machine
memory accesses and flash chip accesses. It also enforces usage
of chip_{read,write}[bwl] to access flash chips, so nobody will
unintentionally use pointers to access chips anymore. Some unneeded
casts are removed as well. Grepping for chip operations and machine
memory operations doesn't yield any false positives anymore.
Compile tested on 32 bit and 64 bit Linux.
Corresponding to flashrom svn r519.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
Diffstat (limited to 'flashrom.c')
-rw-r--r-- | flashrom.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/flashrom.c b/flashrom.c index 5c5967a0a..1db3b275b 100644 --- a/flashrom.c +++ b/flashrom.c @@ -83,7 +83,7 @@ void map_flash_registers(struct flashchip *flash) { size_t size = flash->total_size * 1024; /* Flash registers live 4 MByte below the flash. */ - flash->virtual_registers = programmer_map_flash_region("flash chip registers", (0xFFFFFFFF - 0x400000 - size + 1), size); + flash->virtual_registers = (chipaddr)programmer_map_flash_region("flash chip registers", (0xFFFFFFFF - 0x400000 - size + 1), size); } int read_memmapped(struct flashchip *flash, uint8_t *buf) @@ -116,7 +116,7 @@ struct flashchip *probe_flash(struct flashchip *first_flash, int force) size = flash->total_size * 1024; base = flashbase ? flashbase : (0xffffffff - size + 1); - flash->virtual_memory = programmer_map_flash_region("flash chip", base, size); + flash->virtual_memory = (chipaddr)programmer_map_flash_region("flash chip", base, size); if (force) break; @@ -129,8 +129,7 @@ struct flashchip *probe_flash(struct flashchip *first_flash, int force) break; notfound: - /* The intermediate cast to unsigned long works around a gcc warning bug. */ - programmer_unmap_flash_region((void *)(unsigned long)flash->virtual_memory, size); + programmer_unmap_flash_region((void *)flash->virtual_memory, size); } if (!flash || !flash->name) |