barebox can startup with I-cache enabled, so to be on the safe side we should invalidate the I-cache before jumping to a binary we just copied in place. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- arch/arm/cpu/start.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c index ede8fd1..0fcc950 100644 --- a/arch/arm/cpu/start.c +++ b/arch/arm/cpu/start.c @@ -135,6 +135,9 @@ void __naked __section(.text_ll_return) board_init_lowlevel_return(void) /* clear bss */ memset(__bss_start, 0, __bss_stop - __bss_start); + /* flush I-cache before jumping to the copied binary */ + __asm__ __volatile__("mcr p15, 0, %0, c7, c5, 0" : : "r" (0)); + /* call start_barebox with its absolute address */ r = (unsigned int)&start_barebox; __asm__ __volatile__("mov pc, %0" : : "r"(r)); -- 1.7.10 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox