From 2c2f657092781381e9e04fac9e08e6dac034d5bc Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Fri, 13 Apr 2012 17:30:58 +0200 Subject: ARM startup: invalidate I-cache before jumping to relocated binary 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 --- arch/arm/cpu/start.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'arch') diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c index ede8fd1f09..0fcc950979 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)); -- cgit v1.2.3