
Without this dcache_flush the updated bootcounter may not be saved to its location.
This was detected on an iMX.6 platform using the OCRAM (internal SRAM) as bootcounter storage area. And issuing "reset" from within U-Boot cause the bootcounter to stay on its initial value.
Signed-off-by: Stefan Roese sr@denx.de --- drivers/bootcount/bootcount.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/drivers/bootcount/bootcount.c b/drivers/bootcount/bootcount.c index e0343f7..b3e79de 100644 --- a/drivers/bootcount/bootcount.c +++ b/drivers/bootcount/bootcount.c @@ -57,9 +57,11 @@ __weak void bootcount_store(ulong a)
#if defined(CONFIG_SYS_BOOTCOUNT_SINGLEWORD) raw_bootcount_store(reg, (BOOTCOUNT_MAGIC & 0xffff0000) | a); + flush_dcache_range((u32)reg, (u32)reg + 4); #else raw_bootcount_store(reg, a); raw_bootcount_store(reg + 4, BOOTCOUNT_MAGIC); + flush_dcache_range((u32)reg, (u32)reg + 8); #endif }