[U-Boot] [PATCH] ARMv8:ls2-2080a: Implement core ERRATA 829520, 833471
york sun
york.sun at nxp.com
Tue Jan 19 18:03:39 CET 2016
On 01/17/2016 11:15 PM, Ashish Kumar wrote:
> * 829520: Code bounded by indirect conditional branch might corrupt instruction stream,
> Workaround: Set CPUACTLR_EL1[4] = 1'b1 to disable the Indirect Predictor
>
> * 833471: VMSR FPSCR functional failure or deadlock
> Workaround: Set CPUACTLR[38] to 1, which forces FPSCR write flush
>
> Signed-off-by: Ashish Kumar <Ashish.Kumar at freescale.com>
> ---
> arch/arm/cpu/armv8/start.S | 20 ++++++++++++++++++++
> include/configs/ls2080a_common.h | 2 ++
> 2 files changed, 22 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/cpu/armv8/start.S b/arch/arm/cpu/armv8/start.S
> index da45d98..dd583c9 100644
> --- a/arch/arm/cpu/armv8/start.S
> +++ b/arch/arm/cpu/armv8/start.S
> @@ -132,6 +132,26 @@ apply_a57_core_errata:
> msr S3_1_c15_c2_0, x0 /* cpuactlr_el1 */
> #endif
>
> +#ifdef CONFIG_ARM_ERRATA_833471
> + mrs x0, S3_1_c15_c2_0 /* cpuactlr_el1 */
> + /* FPSCR write flush.
> + * Note that in some cases where a flush is unnecessary this
> + could impact performance. */
> + orr x0, x0, #1 << 38
> + msr S3_1_c15_c2_0, x0 /* cpuactlr_el1 */
> +#endif
> +
> +#ifdef CONFIG_ARM_ERRATA_829520
> + mrs x0, S3_1_c15_c2_0 /* cpuactlr_el1 */
> + /* Disable Indirect Predictor bit will prevent this erratum
> + from occurring
> + * Note that in some cases where a flush is unnecessary this
> + could impact performance. */
> + orr x0, x0, #1 << 4
> + msr S3_1_c15_c2_0, x0 /* cpuactlr_el1 */
> +#endif
> +
> +
> #ifdef CONFIG_ARM_ERRATA_833069
> mrs x0, S3_1_c15_c2_0 /* cpuactlr_el1 */
> /* Disable Enable Invalidates of BTB bit */
> diff --git a/include/configs/ls2080a_common.h b/include/configs/ls2080a_common.h
> index a503934..9ab5d97 100644
> --- a/include/configs/ls2080a_common.h
> +++ b/include/configs/ls2080a_common.h
> @@ -18,6 +18,8 @@
> /* Errata fixes */
> #define CONFIG_ARM_ERRATA_828024
> #define CONFIG_ARM_ERRATA_826974
> +#define CONFIG_ARM_ERRATA_833471
> +#define CONFIG_ARM_ERRATA_829520
>
This seems to be a wrong location. This file is for board (common part for
multiple boards).
York
More information about the U-Boot
mailing list