1c6ac4df6Sjohpow01/* 2463b5b4aSGovindraj Raja * Copyright (c) 2021-2025, Arm Limited. All rights reserved. 3c6ac4df6Sjohpow01 * 4c6ac4df6Sjohpow01 * SPDX-License-Identifier: BSD-3-Clause 5c6ac4df6Sjohpow01 */ 6c6ac4df6Sjohpow01 7c6ac4df6Sjohpow01#include <arch.h> 8c6ac4df6Sjohpow01#include <asm_macros.S> 9c6ac4df6Sjohpow01#include <common/bl_common.h> 10c6ac4df6Sjohpow01#include <cortex_a710.h> 11c6ac4df6Sjohpow01#include <cpu_macros.S> 12b62673c6SBoyan Karatotev#include <dsu_macros.S> 13c6ac4df6Sjohpow01#include <plat_macros.S> 141fe4a9d1SBipin Ravi#include "wa_cve_2022_23960_bhb_vector.S" 15c6ac4df6Sjohpow01 16c6ac4df6Sjohpow01/* Hardware handled coherency */ 17c6ac4df6Sjohpow01#if HW_ASSISTED_COHERENCY == 0 18c6ac4df6Sjohpow01#error "Cortex A710 must be compiled with HW_ASSISTED_COHERENCY enabled" 19c6ac4df6Sjohpow01#endif 20c6ac4df6Sjohpow01 21c6ac4df6Sjohpow01/* 64-bit only core */ 22c6ac4df6Sjohpow01#if CTX_INCLUDE_AARCH32_REGS == 1 23c6ac4df6Sjohpow01#error "Cortex A710 supports only AArch64. Compile with CTX_INCLUDE_AARCH32_REGS=0" 24c6ac4df6Sjohpow01#endif 25c6ac4df6Sjohpow01 26463b5b4aSGovindraj Raja.global check_erratum_cortex_a710_3701772 27463b5b4aSGovindraj Raja 281fe4a9d1SBipin Ravi#if WORKAROUND_CVE_2022_23960 291fe4a9d1SBipin Ravi wa_cve_2022_23960_bhb_vector_table CORTEX_A710_BHB_LOOP_COUNT, cortex_a710 301fe4a9d1SBipin Ravi#endif /* WORKAROUND_CVE_2022_23960 */ 311fe4a9d1SBipin Ravi 3289dba82dSBoyan Karatotevcpu_reset_prologue cortex_a710 3389dba82dSBoyan Karatotev 344467348bSJohn Powellworkaround_reset_start cortex_a710, ERRATUM(1901946), ERRATA_A710_1901946 354467348bSJohn Powell sysreg_bit_set CORTEX_A710_CPUACTLR4_EL1, BIT(15) 364467348bSJohn Powellworkaround_reset_end cortex_a710, ERRATUM(1901946) 374467348bSJohn Powell 384467348bSJohn Powellcheck_erratum_range cortex_a710, ERRATUM(1901946), CPU_REV(1, 0), CPU_REV(1, 0) 394467348bSJohn Powell 40df067c0aSJohn Powellworkaround_reset_start cortex_a710, ERRATUM(1916945), ERRATA_A710_1916945 41df067c0aSJohn Powell sysreg_bit_set CORTEX_A710_CPUECTLR_EL1, BIT(8) 42df067c0aSJohn Powellworkaround_reset_end cortex_a710, ERRATUM(1916945) 43df067c0aSJohn Powell 44df067c0aSJohn Powellcheck_erratum_ls cortex_a710, ERRATUM(1916945), CPU_REV(1, 0) 45df067c0aSJohn Powell 46d91c4177SJohn Powellworkaround_reset_start cortex_a710, ERRATUM(1917258), ERRATA_A710_1917258 47d91c4177SJohn Powell sysreg_bit_set CORTEX_A710_CPUACTLR4_EL1, BIT(43) 48d91c4177SJohn Powellworkaround_reset_end cortex_a710, ERRATUM(1917258) 49d91c4177SJohn Powell 50d91c4177SJohn Powellcheck_erratum_ls cortex_a710, ERRATUM(1917258), CPU_REV(1, 0) 51d91c4177SJohn Powell 52cb2702c4SJohn Powellworkaround_reset_start cortex_a710, ERRATUM(1927200), ERRATA_A710_1927200 53cb2702c4SJohn Powell mov x0, #0 54cb2702c4SJohn Powell msr S3_6_C15_C8_0, x0 55cb2702c4SJohn Powell ldr x0, =0x10E3900002 56cb2702c4SJohn Powell msr S3_6_C15_C8_2, x0 57cb2702c4SJohn Powell ldr x0, =0x10FFF00083 58cb2702c4SJohn Powell msr S3_6_C15_C8_3, x0 59cb2702c4SJohn Powell ldr x0, =0x2001003FF 60cb2702c4SJohn Powell msr S3_6_C15_C8_1, x0 61cb2702c4SJohn Powell 62cb2702c4SJohn Powell mov x0, #1 63cb2702c4SJohn Powell msr S3_6_C15_C8_0, x0 64cb2702c4SJohn Powell ldr x0, =0x10E3800082 65cb2702c4SJohn Powell msr S3_6_C15_C8_2, x0 66cb2702c4SJohn Powell ldr x0, =0x10FFF00083 67cb2702c4SJohn Powell msr S3_6_C15_C8_3, x0 68cb2702c4SJohn Powell ldr x0, =0x2001003FF 69cb2702c4SJohn Powell msr S3_6_C15_C8_1, x0 70cb2702c4SJohn Powell 71cb2702c4SJohn Powell mov x0, #2 72cb2702c4SJohn Powell msr S3_6_C15_C8_0, x0 73cb2702c4SJohn Powell ldr x0, =0x10E3800200 74cb2702c4SJohn Powell msr S3_6_C15_C8_2, x0 75cb2702c4SJohn Powell ldr x0, =0x10FFF003E0 76cb2702c4SJohn Powell msr S3_6_C15_C8_3, x0 77cb2702c4SJohn Powell ldr x0, =0x2001003FF 78cb2702c4SJohn Powell msr S3_6_C15_C8_1, x0 79cb2702c4SJohn Powellworkaround_reset_end cortex_a710, ERRATUM(1927200) 80cb2702c4SJohn Powell 81cb2702c4SJohn Powellcheck_erratum_ls cortex_a710, ERRATUM(1927200), CPU_REV(1, 0) 82cb2702c4SJohn Powell 83d16a90d4SHarrison Mutaiworkaround_reset_start cortex_a710, ERRATUM(1987031), ERRATA_A710_1987031 84fbcf54aeSnayanpatel-arm ldr x0,=0x6 85fbcf54aeSnayanpatel-arm msr S3_6_c15_c8_0,x0 86fbcf54aeSnayanpatel-arm ldr x0,=0xF3A08002 87fbcf54aeSnayanpatel-arm msr S3_6_c15_c8_2,x0 88fbcf54aeSnayanpatel-arm ldr x0,=0xFFF0F7FE 89fbcf54aeSnayanpatel-arm msr S3_6_c15_c8_3,x0 90fbcf54aeSnayanpatel-arm ldr x0,=0x40000001003ff 91fbcf54aeSnayanpatel-arm msr S3_6_c15_c8_1,x0 92fbcf54aeSnayanpatel-arm ldr x0,=0x7 93fbcf54aeSnayanpatel-arm msr S3_6_c15_c8_0,x0 94fbcf54aeSnayanpatel-arm ldr x0,=0xBF200000 95fbcf54aeSnayanpatel-arm msr S3_6_c15_c8_2,x0 96fbcf54aeSnayanpatel-arm ldr x0,=0xFFEF0000 97fbcf54aeSnayanpatel-arm msr S3_6_c15_c8_3,x0 98fbcf54aeSnayanpatel-arm ldr x0,=0x40000001003f3 99fbcf54aeSnayanpatel-arm msr S3_6_c15_c8_1,x0 100d16a90d4SHarrison Mutaiworkaround_reset_end cortex_a710, ERRATUM(1987031) 101fbcf54aeSnayanpatel-arm 102d16a90d4SHarrison Mutaicheck_erratum_ls cortex_a710, ERRATUM(1987031), CPU_REV(2, 0) 103fbcf54aeSnayanpatel-arm 104d16a90d4SHarrison Mutaiworkaround_runtime_start cortex_a710, ERRATUM(2008768), ERRATA_A710_2008768 105d25136daSHarrison Mutai /* Stash ERRSELR_EL1 in x2 */ 106d25136daSHarrison Mutai mrs x2, ERRSELR_EL1 107d25136daSHarrison Mutai 108d25136daSHarrison Mutai /* Select error record 0 and clear ED bit */ 109d25136daSHarrison Mutai msr ERRSELR_EL1, xzr 110d25136daSHarrison Mutai mrs x1, ERXCTLR_EL1 111d25136daSHarrison Mutai bfi x1, xzr, #ERXCTLR_ED_SHIFT, #1 112d25136daSHarrison Mutai msr ERXCTLR_EL1, x1 113d25136daSHarrison Mutai 114d25136daSHarrison Mutai /* Select error record 1 and clear ED bit */ 115d25136daSHarrison Mutai mov x0, #1 116d25136daSHarrison Mutai msr ERRSELR_EL1, x0 117d25136daSHarrison Mutai mrs x1, ERXCTLR_EL1 118d25136daSHarrison Mutai bfi x1, xzr, #ERXCTLR_ED_SHIFT, #1 119d25136daSHarrison Mutai msr ERXCTLR_EL1, x1 120d25136daSHarrison Mutai 121d25136daSHarrison Mutai /* Restore ERRSELR_EL1 from x2 */ 122d25136daSHarrison Mutai msr ERRSELR_EL1, x2 123d16a90d4SHarrison Mutaiworkaround_runtime_end cortex_a710, ERRATUM(2008768), NO_ISB 124d25136daSHarrison Mutai 125d16a90d4SHarrison Mutaicheck_erratum_ls cortex_a710, ERRATUM(2008768), CPU_REV(2, 0) 126d25136daSHarrison Mutai 127d16a90d4SHarrison Mutaiworkaround_reset_start cortex_a710, ERRATUM(2017096), ERRATA_A710_2017096 1287b1e8c1cSHarrison Mutai sysreg_bit_set CORTEX_A710_CPUECTLR_EL1, CORTEX_A710_CPUECTLR_EL1_PFSTIDIS_BIT 129d16a90d4SHarrison Mutaiworkaround_reset_end cortex_a710, ERRATUM(2017096) 130d25136daSHarrison Mutai 131d16a90d4SHarrison Mutaicheck_erratum_ls cortex_a710, ERRATUM(2017096), CPU_REV(2, 0) 132d25136daSHarrison Mutai 133d16a90d4SHarrison Mutaiworkaround_reset_start cortex_a710, ERRATUM(2055002), ERRATA_A710_2055002 1347b1e8c1cSHarrison Mutai sysreg_bit_set CORTEX_A710_CPUACTLR_EL1, CORTEX_A710_CPUACTLR_EL1_BIT_46 135d16a90d4SHarrison Mutaiworkaround_reset_end cortex_a710, ERRATUM(2055002) 136d25136daSHarrison Mutai 1372bf7939aSSona Mathewcheck_erratum_range cortex_a710, ERRATUM(2055002), CPU_REV(1, 0), CPU_REV(2, 0) 138d25136daSHarrison Mutai 139d16a90d4SHarrison Mutaiworkaround_reset_start cortex_a710, ERRATUM(2081180), ERRATA_A710_2081180 140a64bcc2bSnayanpatel-arm ldr x0,=0x3 141a64bcc2bSnayanpatel-arm msr S3_6_c15_c8_0,x0 142a64bcc2bSnayanpatel-arm ldr x0,=0xF3A08002 143a64bcc2bSnayanpatel-arm msr S3_6_c15_c8_2,x0 144a64bcc2bSnayanpatel-arm ldr x0,=0xFFF0F7FE 145a64bcc2bSnayanpatel-arm msr S3_6_c15_c8_3,x0 146a64bcc2bSnayanpatel-arm ldr x0,=0x10002001003FF 147a64bcc2bSnayanpatel-arm msr S3_6_c15_c8_1,x0 148a64bcc2bSnayanpatel-arm ldr x0,=0x4 149a64bcc2bSnayanpatel-arm msr S3_6_c15_c8_0,x0 150a64bcc2bSnayanpatel-arm ldr x0,=0xBF200000 151a64bcc2bSnayanpatel-arm msr S3_6_c15_c8_2,x0 152a64bcc2bSnayanpatel-arm ldr x0,=0xFFEF0000 153a64bcc2bSnayanpatel-arm msr S3_6_c15_c8_3,x0 154a64bcc2bSnayanpatel-arm ldr x0,=0x10002001003F3 155a64bcc2bSnayanpatel-arm msr S3_6_c15_c8_1,x0 156d16a90d4SHarrison Mutaiworkaround_reset_end cortex_a710, ERRATUM(2081180) 157a64bcc2bSnayanpatel-arm 158d16a90d4SHarrison Mutaicheck_erratum_ls cortex_a710, ERRATUM(2081180), CPU_REV(2, 0) 159a64bcc2bSnayanpatel-arm 160d16a90d4SHarrison Mutaiworkaround_reset_start cortex_a710, ERRATUM(2083908), ERRATA_A710_2083908 1617b1e8c1cSHarrison Mutai sysreg_bit_set CORTEX_A710_CPUACTLR5_EL1, CORTEX_A710_CPUACTLR5_EL1_BIT_13 162d16a90d4SHarrison Mutaiworkaround_reset_end cortex_a710, ERRATUM(2083908) 16395fe195dSnayanpatel-arm 164d16a90d4SHarrison Mutaicheck_erratum_range cortex_a710, ERRATUM(2083908), CPU_REV(2, 0), CPU_REV(2, 0) 16595fe195dSnayanpatel-arm 166d16a90d4SHarrison Mutaiworkaround_reset_start cortex_a710, ERRATUM(2136059), ERRATA_A710_2136059 1677b1e8c1cSHarrison Mutai sysreg_bit_set CORTEX_A710_CPUACTLR5_EL1, CORTEX_A710_CPUACTLR5_EL1_BIT_44 168d16a90d4SHarrison Mutaiworkaround_reset_end cortex_a710, ERRATUM(2136059) 1698a855bd2SBipin Ravi 170d16a90d4SHarrison Mutaicheck_erratum_ls cortex_a710, ERRATUM(2136059), CPU_REV(2, 0) 1718a855bd2SBipin Ravi 172d16a90d4SHarrison Mutaiworkaround_reset_start cortex_a710, ERRATUM(2147715), ERRATA_A710_2147715 1737b1e8c1cSHarrison Mutai sysreg_bit_set CORTEX_A710_CPUACTLR_EL1, CORTEX_A710_CPUACTLR_EL1_BIT_22 174d16a90d4SHarrison Mutaiworkaround_reset_end cortex_a710, ERRATUM(2147715) 1753280e5e6SAkram Ahmad 176d16a90d4SHarrison Mutaicheck_erratum_range cortex_a710, ERRATUM(2147715), CPU_REV(2, 0), CPU_REV(2, 0) 1773280e5e6SAkram Ahmad 178d16a90d4SHarrison Mutaiworkaround_reset_start cortex_a710, ERRATUM(2216384), ERRATA_A710_2216384 1797b1e8c1cSHarrison Mutai sysreg_bit_set CORTEX_A710_CPUACTLR5_EL1, CORTEX_A710_CPUACTLR5_EL1_BIT_17 180b781fcf1SJayanth Dodderi Chidanand 181b781fcf1SJayanth Dodderi Chidanand ldr x0,=0x5 182b781fcf1SJayanth Dodderi Chidanand msr CORTEX_A710_CPUPSELR_EL3, x0 183b781fcf1SJayanth Dodderi Chidanand ldr x0,=0x10F600E000 184b781fcf1SJayanth Dodderi Chidanand msr CORTEX_A710_CPUPOR_EL3, x0 185b781fcf1SJayanth Dodderi Chidanand ldr x0,=0x10FF80E000 186b781fcf1SJayanth Dodderi Chidanand msr CORTEX_A710_CPUPMR_EL3, x0 187b781fcf1SJayanth Dodderi Chidanand ldr x0,=0x80000000003FF 188b781fcf1SJayanth Dodderi Chidanand msr CORTEX_A710_CPUPCR_EL3, x0 189d16a90d4SHarrison Mutaiworkaround_reset_end cortex_a710, ERRATUM(2216384) 190b781fcf1SJayanth Dodderi Chidanand 191d16a90d4SHarrison Mutaicheck_erratum_ls cortex_a710, ERRATUM(2216384), CPU_REV(2, 0) 192b781fcf1SJayanth Dodderi Chidanand 193d16a90d4SHarrison Mutaiworkaround_reset_start cortex_a710, ERRATUM(2267065), ERRATA_A710_2267065 1947b1e8c1cSHarrison Mutai sysreg_bit_set CORTEX_A710_CPUACTLR_EL1, CORTEX_A710_CPUACTLR_EL1_BIT_22 195d16a90d4SHarrison Mutaiworkaround_reset_end cortex_a710, ERRATUM(2267065) 196d25136daSHarrison Mutai 197d16a90d4SHarrison Mutaicheck_erratum_ls cortex_a710, ERRATUM(2267065), CPU_REV(2, 0) 198d25136daSHarrison Mutai 199d16a90d4SHarrison Mutaiworkaround_reset_start cortex_a710, ERRATUM(2282622), ERRATA_A710_2282622 2007b1e8c1cSHarrison Mutai sysreg_bit_set CORTEX_A710_CPUACTLR2_EL1, BIT(0) 201d16a90d4SHarrison Mutaiworkaround_reset_end cortex_a710, ERRATUM(2282622) 202ef934cd1Sjohpow01 203d16a90d4SHarrison Mutaicheck_erratum_ls cortex_a710, ERRATUM(2282622), CPU_REV(2, 1) 204ef934cd1Sjohpow01 205cc94e71bSBoyan Karatotev.global erratum_cortex_a710_2291219_wa 206d16a90d4SHarrison Mutaiworkaround_runtime_start cortex_a710, ERRATUM(2291219), ERRATA_A710_2291219 207bb801857SBoyan Karatotev /* Set/unset bit 36 in ACTLR2_EL1. The first call will set it, applying 208bb801857SBoyan Karatotev * the workaround. Second call clears it to undo it. */ 209bb801857SBoyan Karatotev sysreg_bit_toggle CORTEX_A710_CPUACTLR2_EL1, CORTEX_A710_CPUACTLR2_EL1_BIT_36 210d16a90d4SHarrison Mutaiworkaround_runtime_end cortex_a710, ERRATUM(2291219), NO_ISB 211888eafa0SBoyan Karatotev 212d16a90d4SHarrison Mutaicheck_erratum_ls cortex_a710, ERRATUM(2291219), CPU_REV(2, 0) 213888eafa0SBoyan Karatotev 214b62673c6SBoyan Karatotevworkaround_reset_start cortex_a710, ERRATUM(2313941), ERRATA_DSU_2313941 215b62673c6SBoyan Karatotev errata_dsu_2313941_wa_impl 216b62673c6SBoyan Karatotevworkaround_reset_end cortex_a710, ERRATUM(2313941) 217b62673c6SBoyan Karatotev 218b62673c6SBoyan Karatotevcheck_erratum_custom_start cortex_a710, ERRATUM(2313941) 219b62673c6SBoyan Karatotev check_errata_dsu_2313941_impl 220b62673c6SBoyan Karatotev ret 221b62673c6SBoyan Karatotevcheck_erratum_custom_end cortex_a710, ERRATUM(2313941) 2223220f05eSBipin Ravi 223d16a90d4SHarrison Mutaiworkaround_reset_start cortex_a710, ERRATUM(2371105), ERRATA_A710_2371105 2243220f05eSBipin Ravi /* Set bit 40 in CPUACTLR2_EL1 */ 2257b1e8c1cSHarrison Mutai sysreg_bit_set CORTEX_A710_CPUACTLR2_EL1, CORTEX_A710_CPUACTLR2_EL1_BIT_40 226d16a90d4SHarrison Mutaiworkaround_reset_end cortex_a710, ERRATUM(2371105) 2273220f05eSBipin Ravi 228d16a90d4SHarrison Mutaicheck_erratum_ls cortex_a710, ERRATUM(2371105), CPU_REV(2, 0) 2293220f05eSBipin Ravi 230d7bc2cb4SBipin Raviworkaround_reset_start cortex_a710, ERRATUM(2742423), ERRATA_A710_2742423 231d7bc2cb4SBipin Ravi /* Set CPUACTLR5_EL1[56:55] to 2'b01 */ 232d7bc2cb4SBipin Ravi sysreg_bit_set CORTEX_A710_CPUACTLR5_EL1, BIT(55) 233d7bc2cb4SBipin Ravi sysreg_bit_clear CORTEX_A710_CPUACTLR5_EL1, BIT(56) 234d7bc2cb4SBipin Raviworkaround_reset_end cortex_a710, ERRATUM(2742423) 235d7bc2cb4SBipin Ravi 236d7bc2cb4SBipin Ravicheck_erratum_ls cortex_a710, ERRATUM(2742423), CPU_REV(2, 1) 237d7bc2cb4SBipin Ravi 238d16a90d4SHarrison Mutaiworkaround_runtime_start cortex_a710, ERRATUM(2768515), ERRATA_A710_2768515 239b87b02cfSBipin Ravi /* dsb before isb of power down sequence */ 240b87b02cfSBipin Ravi dsb sy 241d16a90d4SHarrison Mutaiworkaround_runtime_end cortex_a710, ERRATUM(2768515), NO_ISB 242b87b02cfSBipin Ravi 243d16a90d4SHarrison Mutaicheck_erratum_ls cortex_a710, ERRATUM(2768515), CPU_REV(2, 1) 244b87b02cfSBipin Ravi 245c9508d6aSSona Mathewworkaround_reset_start cortex_a710, ERRATUM(2778471), ERRATA_A710_2778471 246c9508d6aSSona Mathew sysreg_bit_set CORTEX_A710_CPUACTLR3_EL1, BIT(47) 247c9508d6aSSona Mathewworkaround_reset_end cortex_a710, ERRATUM(2778471) 248c9508d6aSSona Mathew 249c9508d6aSSona Mathewcheck_erratum_ls cortex_a710, ERRATUM(2778471), CPU_REV(2, 1) 250c9508d6aSSona Mathew 25110a8e85cSSona Mathewadd_erratum_entry cortex_a710, ERRATUM(3701772), ERRATA_A710_3701772 25210a8e85cSSona Mathew 25310a8e85cSSona Mathewcheck_erratum_ls cortex_a710, ERRATUM(3701772), CPU_REV(2, 1) 25410a8e85cSSona Mathew 255d16a90d4SHarrison Mutaiworkaround_reset_start cortex_a710, CVE(2022, 23960), WORKAROUND_CVE_2022_23960 256d16a90d4SHarrison Mutai#if IMAGE_BL31 2571fe4a9d1SBipin Ravi /* 2581fe4a9d1SBipin Ravi * The Cortex-A710 generic vectors are overridden to apply errata 2591fe4a9d1SBipin Ravi * mitigation on exception entry from lower ELs. 2601fe4a9d1SBipin Ravi */ 2617b1e8c1cSHarrison Mutai override_vector_table wa_cve_vbar_cortex_a710 262d16a90d4SHarrison Mutai#endif /* IMAGE_BL31 */ 263d16a90d4SHarrison Mutaiworkaround_reset_end cortex_a710, CVE(2022, 23960) 2641fe4a9d1SBipin Ravi 265d16a90d4SHarrison Mutaicheck_erratum_chosen cortex_a710, CVE(2022, 23960), WORKAROUND_CVE_2022_23960 266d16a90d4SHarrison Mutai 26710a8e85cSSona Mathew/* Disable hardware page aggregation. Enables mitigation for `CVE-2024-5660` */ 26810a8e85cSSona Mathewworkaround_reset_start cortex_a710, CVE(2024, 5660), WORKAROUND_CVE_2024_5660 26910a8e85cSSona Mathew sysreg_bit_set CORTEX_A710_CPUECTLR_EL1, BIT(46) 27010a8e85cSSona Mathewworkaround_reset_end cortex_a710, CVE(2024, 5660) 271463b5b4aSGovindraj Raja 27210a8e85cSSona Mathewcheck_erratum_ls cortex_a710, CVE(2024, 5660), CPU_REV(2, 1) 273463b5b4aSGovindraj Raja 274d16a90d4SHarrison Mutai /* ---------------------------------------------------- 275d16a90d4SHarrison Mutai * HW will do the cache maintenance while powering down 276d16a90d4SHarrison Mutai * ---------------------------------------------------- 277d16a90d4SHarrison Mutai */ 278d16a90d4SHarrison Mutaifunc cortex_a710_core_pwr_dwn 279*645917abSBoyan Karatotev apply_erratum cortex_a710, ERRATUM(2008768), ERRATA_A710_2008768 280d16a90d4SHarrison Mutai apply_erratum cortex_a710, ERRATUM(2291219), ERRATA_A710_2291219, NO_GET_CPU_REV 281d16a90d4SHarrison Mutai 282d16a90d4SHarrison Mutai /* --------------------------------------------------- 283d16a90d4SHarrison Mutai * Enable CPU power down bit in power control register 284d16a90d4SHarrison Mutai * --------------------------------------------------- 285d16a90d4SHarrison Mutai */ 286d16a90d4SHarrison Mutai sysreg_bit_set CORTEX_A710_CPUPWRCTLR_EL1, CORTEX_A710_CPUPWRCTLR_EL1_CORE_PWRDN_BIT 287d16a90d4SHarrison Mutai apply_erratum cortex_a710, ERRATUM(2768515), ERRATA_A710_2768515, NO_GET_CPU_REV 288c6ac4df6Sjohpow01 isb 289d16a90d4SHarrison Mutai ret 290d16a90d4SHarrison Mutaiendfunc cortex_a710_core_pwr_dwn 291d16a90d4SHarrison Mutai 292d16a90d4SHarrison Mutaicpu_reset_func_start cortex_a710 293d16a90d4SHarrison Mutai /* Disable speculative loads */ 294d16a90d4SHarrison Mutai msr SSBS, xzr 2952590e819SBoyan Karatotev enable_mpmm 296d16a90d4SHarrison Mutaicpu_reset_func_end cortex_a710 297c6ac4df6Sjohpow01 298c6ac4df6Sjohpow01 /* --------------------------------------------- 299c6ac4df6Sjohpow01 * This function provides Cortex-A710 specific 300c6ac4df6Sjohpow01 * register information for crash reporting. 301c6ac4df6Sjohpow01 * It needs to return with x6 pointing to 302c6ac4df6Sjohpow01 * a list of register names in ascii and 303c6ac4df6Sjohpow01 * x8 - x15 having values of registers to be 304c6ac4df6Sjohpow01 * reported. 305c6ac4df6Sjohpow01 * --------------------------------------------- 306c6ac4df6Sjohpow01 */ 307c6ac4df6Sjohpow01.section .rodata.cortex_a710_regs, "aS" 308c6ac4df6Sjohpow01cortex_a710_regs: /* The ascii list of register names to be reported */ 309c6ac4df6Sjohpow01 .asciz "cpuectlr_el1", "" 310c6ac4df6Sjohpow01 311c6ac4df6Sjohpow01func cortex_a710_cpu_reg_dump 312c6ac4df6Sjohpow01 adr x6, cortex_a710_regs 313c6ac4df6Sjohpow01 mrs x8, CORTEX_A710_CPUECTLR_EL1 314c6ac4df6Sjohpow01 ret 315c6ac4df6Sjohpow01endfunc cortex_a710_cpu_reg_dump 316c6ac4df6Sjohpow01 317c6ac4df6Sjohpow01declare_cpu_ops cortex_a710, CORTEX_A710_MIDR, \ 318c6ac4df6Sjohpow01 cortex_a710_reset_func, \ 319c6ac4df6Sjohpow01 cortex_a710_core_pwr_dwn 320