mirror of
https://review.coreboot.org/flashrom.git
synced 2025-06-30 21:52:36 +02:00
78185dcb3c58552acb652780c4182a77a74f16f0

Some MMIO accesses used volatile, others didn't (and risked non-execution of side effects) and even with volatile, some accesses looked dubious. Since the MMIO accessor functions and the onboard flash accessor functions are functionally identical (but have different signatures), make the flash accessors wrappers for the MMIO accessors. For some of the conversions, I used Coccinelle. Semantic patch follows: @@ typedef uint8_t; expression a; volatile uint8_t *b; @@ - b[a] + *(b + a) @@ expression a; volatile uint8_t *b; @@ - *(b) |= (a); + *(b) = *(b) | (a); @@ expression a; volatile uint8_t *b; @@ - *(b) = (a); + mmio_writeb(a, b); @@ volatile uint8_t *b; @@ - *(b) + mmio_readb(b) @@ type T; T b; @@ ( mmio_readb | mmio_writeb ) (..., - (T) - (b) + b ) Corresponding to flashrom svn r524. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Uwe tested read, write, erase with this patch on a random board to make sure nothing breaks. Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
------------------------------------------------------------------------------- flashrom README ------------------------------------------------------------------------------- flashrom is a utility for reading, writing, verifying and erasing flash ROM chips. It's often used to flash BIOS/coreboot/firmware images. It supports a wide range of DIP32, PLCC32, DIP8, SO8/SOIC8, TSOP32, and TSOP40 chips, which use various protocols such as LPC, FWH, parallel flash, or SPI. (see http://coreboot.org for details on coreboot) Build Requirements ------------------ To build flashrom you need to install the following packages or ports: Linux et al: * pciutils * pciutils-devel / pciutils-dev / libpci-dev * zlib-devel / zlib1g-dev On FreeBSD, you need the following ports: * devel/gmake * devel/libpci To compile on Linux, use: make To compile on FreeBSD, use: gmake To compile on Solaris, use: gmake LDFLAGS="-L$pathtolibpci -lpci -lz" CC="gcc -I$pathtopciheaders" \ CFLAGS=-O2 To compile on DragonFly BSD, use: ln -s /usr/pkg/include/pciutils pci gmake CFLAGS=-I. LDFLAGS="-L/usr/pkg/lib -lpci -lz" To compile and run on Darwin/Mac OS X: Install DirectIO from coresystems GmbH. DirectIO is available at http://www.coresystems.de/en/directio. Usage / Options --------------- Please see the flashrom(8) manpage. Exit status ----------- Please see the flashrom(8) manpage. coreboot Table and Mainboard Identification -------------------------------------------- Please see the flashrom(8) manpage. ROM Layout Support ------------------ Please see the flashrom(8) manpage. Supported Flash Chips / Chipsets / Mainboards --------------------------------------------- Please check the output of 'flashrom -L' for the list of supported flash chips, chipsets/southbridges, and mainboards. See also http://coreboot.org/Flashrom for more details.
Description
Languages
C
90.2%
Rust
5%
Shell
2%
Makefile
1.6%
Meson
1.2%