Gabe Black (gabeblack@chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3682
-gerrit
commit dfc258c1908bb8723941c7ffddbb44910319244b Author: Hung-Te Lin hungte@chromium.org Date: Wed Jun 12 15:01:56 2013 -0700
arm: Fix memory barrier usage in IO operation
The dmb should be executed before reading operations, and before/after writing operations.
Change-Id: I572136a2f9a07eb2c38a112f5deeb2de0c0fd46c Signed-off-by: Hung-Te Lin hungte@chromium.org Signed-off-by: Gabe Black gabeblack@chromium.org --- src/arch/armv7/include/arch/io.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/arch/armv7/include/arch/io.h b/src/arch/armv7/include/arch/io.h index b4932dc..be1da51 100644 --- a/src/arch/armv7/include/arch/io.h +++ b/src/arch/armv7/include/arch/io.h @@ -29,41 +29,41 @@
static inline uint8_t read8(const void *addr) { - uint8_t v = *(volatile uint8_t *)addr; dmb(); - return v; + return *(volatile uint8_t *)addr; }
static inline uint16_t read16(const void *addr) { - uint16_t v = *(volatile uint16_t *)addr; dmb(); - return v; + return *(volatile uint16_t *)addr; }
static inline uint32_t read32(const void *addr) { - uint32_t v = *(volatile uint32_t *)addr; dmb(); - return v; + return *(volatile uint32_t *)addr; }
static inline void write8(uint8_t val, const void *addr) { dmb(); *(volatile uint8_t *)addr = val; + dmb(); }
static inline void write16(uint16_t val, const void *addr) { dmb(); *(volatile uint16_t *)addr = val; + dmb(); }
static inline void write32(uint32_t val, const void *addr) { dmb(); *(volatile uint32_t *)addr = val; + dmb(); }
/*