> From: Thomas Abraham <thomas...@samsung.com> > > Remove the custom low-level initialization function and reuse the > default low-level initialization function. But this requires the > ARMV8_MULTIENTRY config option to be enabled for Exynos7420. > > On Exynos7420, the boot CPU belongs to the second cluster and so > with ARMV8_MULTIENTRY config option enabled, the 'branch_if_master' > macro fails to detect the CPU as boot CPU. As a temporary workaround > the CPU_RELEASE_ADDR is set to point to '_main'. > > Cc: Minkyu Kang <mk7.k...@samsung.com> > Cc: Alison Wang <alison.w...@nxp.com> > Signed-off-by: Thomas Abraham <thomas...@samsung.com> > --- > arch/arm/mach-exynos/Kconfig | 1 + > arch/arm/mach-exynos/soc.c | 18 ++++++++++-------- > include/configs/exynos7420-common.h | 1 + > 3 files changed, 12 insertions(+), 8 deletions(-) > > diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach- > exynos/Kconfig > index ce2a16f..07118fc 100644 > --- a/arch/arm/mach-exynos/Kconfig > +++ b/arch/arm/mach-exynos/Kconfig > @@ -126,6 +126,7 @@ choice > config TARGET_ESPRESSO7420 > bool "ESPRESSO7420 board" > select ARM64 > + select ARMV8_MULTIENTRY > select SUPPORT_SPL > select OF_CONTROL > select SPL_DISABLE_OF_CONTROL > diff --git a/arch/arm/mach-exynos/soc.c b/arch/arm/mach-exynos/soc.c > index f9c7468..cf149ad 100644 > --- a/arch/arm/mach-exynos/soc.c > +++ b/arch/arm/mach-exynos/soc.c > @@ -9,6 +9,16 @@ > #include <asm/io.h> > #include <asm/system.h> > > +#ifdef CONFIG_TARGET_ESPRESSO7420 > +/* > + * Exynos7420 uses CPU0 of Cluster-1 as boot CPU. Due to this, > branch_if_master > + * fails to identify as the boot CPU as the master CPU. As temporary > workaround, > + * setup the slave CPU boot address as "_main". > + */ > +extern void _main(void); > +void *secondary_boot_addr = (void *)_main; > +#endif /* CONFIG_TARGET_ESPRESSO7420 */ > + > void reset_cpu(ulong addr) > { > #ifdef CONFIG_CPU_V7 > @@ -23,11 +33,3 @@ void enable_caches(void) > dcache_enable(); > } > #endif > - > -#ifdef CONFIG_ARM64 > -void lowlevel_init(void) > -{ > - armv8_switch_to_el2(); > - armv8_switch_to_el1(); > -} > -#endif > diff --git a/include/configs/exynos7420-common.h > b/include/configs/exynos7420-common.h > index f7c4709..1cea74e 100644 > --- a/include/configs/exynos7420-common.h > +++ b/include/configs/exynos7420-common.h > @@ -47,6 +47,7 @@ > #define CONFIG_IRAM_BASE 0x02100000 > #define CONFIG_IRAM_SIZE 0x58000 > #define CONFIG_IRAM_END (CONFIG_IRAM_BASE + > CONFIG_IRAM_SIZE) > +#define CPU_RELEASE_ADDR secondary_boot_addr > > /* Number of CPUs available */ > #define CONFIG_CORE_COUNT 0x8 >
Reviewed-by: Alison Wang <alison.w...@nxp.com> Thanks. Best Regards, Alison Wang _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot