[U-Boot] [PATCH v15 07/10] arm64: core support
FengHua
fenghua at phytium.com.cn
Fri Nov 29 14:35:14 CET 2013
hi Bhupesh,
Thank you for reviewing of the patch.
> > +/*
> > + * Generic timer implementation of timer_read_counter()
> > + */
> > +unsigned long timer_read_counter(void)
> > +{
> > + unsigned long cntpct;
> > + isb();
> > + asm volatile("mrs %0, cntpct_el0" : "=r" (cntpct));
> > + return cntpct;
> > +}
> > diff --git a/arch/arm/cpu/armv8/gic.S b/arch/arm/cpu/armv8/gic.S
>
> The ARMv8 foundation model has support for GICv2 while GICv3 is actually
> compatible to ARMv8. So although you mention in the cover letter that
> this is currently GICv2 support, now while trying to add GICv3 support
> it will be difficult to envision GICv2 code in 'arch/arm/cpu/armv8/'
> directory.
>
> Infact GICv2 is compatible with ARMv7 and as secure and non-secure
> copies of GIC registers are equally applicable to ARMv7, would it make
> sense to keep the GICv2 code at a place where both ARMv7 and ARMv8 can
> use it?
>
> Can we reuse something from [1] for GICv2:
>
> [1]
> http://git.denx.de/?p=u-boot.git;a=blob;f=arch/arm/cpu/armv7/nonsec_virt.S;h=24b4c18bd452fa155bcd5ed94c755aa05a33efe7;hb=HEAD#l88
>
Gicv2 only support maximum 8 cores, but still could be used with armv8 processors if the processor
contains less than 8 cores. AMCC's armv8 processor use Gicv2.
Yes, as you said it would be better to abstract a few common routines of Gicv2 and Gicv3 code and place them
at a common place (such as arm/lib) so that both ARMv7 and ARMv8 could use it.
> > + /* Cache/BPB/TLB Invalidate */
> > + bl __asm_flush_dcache_all /* dCache clean&invalidate */
> > + bl __asm_invalidate_icache_all /* iCache invalidate */
> > + bl __asm_invalidate_tlb_all /* invalidate TLBs */
> > +
> > + /* Processor specific initialization */
> > + bl lowlevel_init
>
> Shouldn't this call be protected inside a
> '#ifndef CONFIG_SKIP_LOWLEVEL_INIT'?
>
We could do so when it is actually needed.
> > +WEAK(lowlevel_init)
>
> Ok, so this means that a specific SoC lowlevel_init implementation can
> override this generic implementation. Because I sure other
> secure/non-secure settings need to be put into place for ARM IPs like
> SMMU-500.
>
> > +ENTRY(armv8_switch_to_el2)
>
> Do we need a switch to Secure Monitor here? I am not able to relate how
> this with the present ARMv7 code (see [2]):
>
> [2]
> http://git.denx.de/?p=u-boot.git;a=blob;f=arch/arm/cpu/armv7/nonsec_virt.S;h=24b4c18bd452fa155bcd5ed94c755aa05a33efe7;hb=HEAD#l29
>
Armv8 processor reset at el3(if it support security extension). So we need to switch the
processor to el2 or el1 before u-boot jump to linux kernel due to linux-aarch64 only
run at el2 or el1.
Regards,
David
More information about the U-Boot
mailing list