From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Rini Date: Thu, 28 Jul 2016 18:15:50 -0400 Subject: [U-Boot] [PATCH] arm: re-implement proper ISB instruction for ARMv7-A In-Reply-To: References: <1469700807-22212-1-git-send-email-xzy.xu@rock-chips.com> Message-ID: <20160728221550.GP5926@bill-the-cat> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Thu, Jul 28, 2016 at 07:03:17PM +0800, Chen-Yu Tsai wrote: > Hi, > > On Thu, Jul 28, 2016 at 6:13 PM, Ziyuan Xu 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 > > --- > > > > 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. Please fix arch/arm/include/asm/system.h to use the macros found in barriers.h rather than have their own versions. Thanks! -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: