Hi, On Thu, Jul 28, 2016 at 6:13 PM, Ziyuan Xu <xzy...@rock-chips.com> wrote: > For ARMv7-A architecture, the valid ISB instruction is asm volatile("isb"). > > This patch fixes the U-Boot was stuck in invalidate_dcache_all() before > booting linux kernel, which occurred on rk3288-base development board > such as evb-rk3288, rock2-rk3288. And something output via console like: > > => bootz 0x2000000 > 0x02000000 > ramdisk start = 0x00000000, ramdisk end = 0x00000000 > Continuing to boot without FDT > Initial value for argc=3 > Final value for argc=3 > using: ATAGS > > Starting kernel ... > > Linux kernel exactly the same way(see arch/arm/include/asm/barrier.h). > > Signed-off-by: Ziyuan Xu <xzy...@rock-chips.com> > --- > > arch/arm/include/asm/system.h | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h > index 2bdc0be..12d4ba0 100644 > --- a/arch/arm/include/asm/system.h > +++ b/arch/arm/include/asm/system.h > @@ -227,13 +227,15 @@ void __noreturn psci_system_reset(bool smc); > */ > void save_boot_params_ret(void); > > -#define isb() __asm__ __volatile__ ("" : : : "memory") > - > #define nop() __asm__ __volatile__("mov\tr0,r0\t@ nop\n\t"); > > #ifdef __ARM_ARCH_7A__ > +#define isb() __asm__ __volatile__ ("isb" : : : "memory") > + > #define wfi() __asm__ __volatile__ ("wfi" : : : "memory") > #else > +#define isb() __asm__ __volatile__ ("" : : : "memory") > + > #define wfi() > #endif >
arch/arm/include/asm/barriers.h already has a proper set of ISB/DSB macros. Please consider using those instead. You'll see they also support ARMv6's CP15 ISB/DSB. Regards ChenYu _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot