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> Reviewed-on: http://review.coreboot.org/3682 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
83fd239255
commit
2867060098
|
@ -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();
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue