Skip to contentSkip to conversation

CPU errata workarounds are using the SPL stack before it is initialized

U-Boot Siarhei Siamashka 1 participant 1 message Jul 25, 2017

lore
Share & tools
lore
#0 lore raw

Hello,

Currently the code in 'arch/arm/cpu/armv7/start.S' calls the 'cpu_init_cp15' function before 'cpu_init_crit'. The initial SPL stack is initialized in 'lowlevel_init', which is called from 'cpu_init_crit'. But 'cpu_init_cp15' is already using stack when applying errata workarounds. Here is one example:

#ifdef CONFIG_ARM_ERRATA_430973
	cmp	r2, #0x21		@ Only on < r2p1
	bge	skip_errata_430973

	mrc	p15, 0, r0, c1, c0, 1	@ Read ACR
	orr	r0, r0, #(0x1 << 6)	@ Set IBE bit
	push	{r1-r5}			@ Save the cpu info registers
	bl	v7_arch_cp15_set_acr
	pop	{r1-r5}			@ Restore the cpu info - fall through

skip_errata_430973:
#endif

Signature · 2 lines
Best regards,
Siarhei Siamashka