blob: 8fafacab4cea350f10bf24fed20da7faf1998342 [file] [log] [blame]
Achin Gupta4f6ad662013-10-25 09:08:21 +01001/*
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +01002 * Copyright (c) 2014-2023, Arm Limited and Contributors. All rights reserved.
Varun Wadekar5ee3abc2018-06-12 16:49:12 -07003 * Copyright (c) 2020, NVIDIA Corporation. All rights reserved.
Achin Gupta4f6ad662013-10-25 09:08:21 +01004 *
dp-armfa3cf0b2017-05-03 09:38:09 +01005 * SPDX-License-Identifier: BSD-3-Clause
Achin Gupta4f6ad662013-10-25 09:08:21 +01006 */
Achin Gupta4f6ad662013-10-25 09:08:21 +01007#include <arch.h>
Andrew Thoelke38bde412014-03-18 13:46:55 +00008#include <asm_macros.S>
Soby Mathew802f8652014-08-14 16:19:29 +01009#include <assert_macros.S>
Antonio Nino Diaze0f90632018-12-14 00:18:21 +000010#include <common/bl_common.h>
11#include <common/debug.h>
Soby Mathew8e2f2872014-08-14 12:49:05 +010012#include <cortex_a57.h>
Soby Mathewc704cbc2014-08-14 11:33:56 +010013#include <cpu_macros.S>
14#include <plat_macros.S>
Achin Gupta4f6ad662013-10-25 09:08:21 +010015
Soby Mathew8e2f2872014-08-14 12:49:05 +010016 /* ---------------------------------------------
17 * Disable L1 data cache and unified L2 cache
18 * ---------------------------------------------
19 */
20func cortex_a57_disable_dcache
Boyan Karatotevc88e8912023-04-05 16:22:20 +010021 sysreg_bit_clear sctlr_el3, SCTLR_C_BIT
Soby Mathew8e2f2872014-08-14 12:49:05 +010022 isb
23 ret
Kévin Petita877c252015-03-24 14:03:57 +000024endfunc cortex_a57_disable_dcache
Soby Mathew8e2f2872014-08-14 12:49:05 +010025
26 /* ---------------------------------------------
27 * Disable all types of L2 prefetches.
28 * ---------------------------------------------
29 */
30func cortex_a57_disable_l2_prefetch
Varun Wadekar1384a162017-06-05 14:54:46 -070031 mrs x0, CORTEX_A57_ECTLR_EL1
32 orr x0, x0, #CORTEX_A57_ECTLR_DIS_TWD_ACC_PFTCH_BIT
33 mov x1, #CORTEX_A57_ECTLR_L2_IPFTCH_DIST_MASK
34 orr x1, x1, #CORTEX_A57_ECTLR_L2_DPFTCH_DIST_MASK
Soby Mathew8e2f2872014-08-14 12:49:05 +010035 bic x0, x0, x1
Varun Wadekar1384a162017-06-05 14:54:46 -070036 msr CORTEX_A57_ECTLR_EL1, x0
Soby Mathew8e2f2872014-08-14 12:49:05 +010037 isb
Soby Mathew1604fa02014-09-22 12:15:26 +010038 dsb ish
Soby Mathew8e2f2872014-08-14 12:49:05 +010039 ret
Kévin Petita877c252015-03-24 14:03:57 +000040endfunc cortex_a57_disable_l2_prefetch
Soby Mathew8e2f2872014-08-14 12:49:05 +010041
42 /* ---------------------------------------------
43 * Disable intra-cluster coherency
44 * ---------------------------------------------
45 */
46func cortex_a57_disable_smp
Boyan Karatotevc88e8912023-04-05 16:22:20 +010047 sysreg_bit_clear CORTEX_A57_ECTLR_EL1, CORTEX_A57_ECTLR_SMP_BIT
Soby Mathew8e2f2872014-08-14 12:49:05 +010048 ret
Kévin Petita877c252015-03-24 14:03:57 +000049endfunc cortex_a57_disable_smp
Soby Mathew8e2f2872014-08-14 12:49:05 +010050
51 /* ---------------------------------------------
52 * Disable debug interfaces
53 * ---------------------------------------------
54 */
55func cortex_a57_disable_ext_debug
56 mov x0, #1
57 msr osdlr_el1, x0
58 isb
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010059
60 apply_erratum cortex_a57, ERRATUM(817169), ERRATA_A57_817169
61
Soby Mathew8e2f2872014-08-14 12:49:05 +010062 dsb sy
63 ret
Kévin Petita877c252015-03-24 14:03:57 +000064endfunc cortex_a57_disable_ext_debug
Achin Gupta4f6ad662013-10-25 09:08:21 +010065
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010066/*
67 * Disable the over-read from the LDNP/STNP instruction. The SDEN doesn't
68 * provide and erratum number, so assign it an obvious 1
69 */
70workaround_reset_start cortex_a57, ERRATUM(1), A57_DISABLE_NON_TEMPORAL_HINT
Boyan Karatotevc88e8912023-04-05 16:22:20 +010071 sysreg_bit_set CORTEX_A57_CPUACTLR_EL1, CORTEX_A57_CPUACTLR_EL1_DIS_OVERREAD
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010072workaround_reset_end cortex_a57, ERRATUM(1)
Boyan Karatotev219aa672023-04-04 11:59:12 +010073
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010074check_erratum_ls cortex_a57, ERRATUM(1), CPU_REV(1, 2)
Boyan Karatotev219aa672023-04-04 11:59:12 +010075
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010076workaround_reset_start cortex_a57, ERRATUM(806969), ERRATA_A57_806969
Boyan Karatotevc88e8912023-04-05 16:22:20 +010077 sysreg_bit_set CORTEX_A57_CPUACTLR_EL1, CORTEX_A57_CPUACTLR_EL1_NO_ALLOC_WBWA
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010078workaround_reset_end cortex_a57, ERRATUM(806969)
Soby Mathewc0884332014-09-22 12:11:36 +010079
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010080check_erratum_ls cortex_a57, ERRATUM(806969), CPU_REV(0, 0)
Soby Mathewc0884332014-09-22 12:11:36 +010081
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010082/* erratum always worked around, but report it correctly */
Boyan Karatotevc88e8912023-04-05 16:22:20 +010083check_erratum_ls cortex_a57, ERRATUM(813419), CPU_REV(0, 0)
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010084add_erratum_entry cortex_a57, ERRATUM(813419), ERRATUM_ALWAYS_CHOSEN, NO_APPLY_AT_RESET
Antonio Nino Diaz3f13c352017-02-24 11:39:22 +000085
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010086workaround_reset_start cortex_a57, ERRATUM(813420), ERRATA_A57_813420
Boyan Karatotevc88e8912023-04-05 16:22:20 +010087 sysreg_bit_set CORTEX_A57_CPUACTLR_EL1, CORTEX_A57_CPUACTLR_EL1_DCC_AS_DCCI
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010088workaround_reset_end cortex_a57, ERRATUM(813420)
Soby Mathewc0884332014-09-22 12:11:36 +010089
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010090check_erratum_ls cortex_a57, ERRATUM(813420), CPU_REV(0, 0)
Jeenu Viswambharand5ec3672017-01-03 11:01:51 +000091
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010092workaround_reset_start cortex_a57, ERRATUM(814670), ERRATA_A57_814670
Boyan Karatotevc88e8912023-04-05 16:22:20 +010093 sysreg_bit_set CORTEX_A57_CPUACTLR_EL1, CORTEX_A57_CPUACTLR_EL1_DIS_DMB_NULLIFICATION
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010094workaround_reset_end cortex_a57, ERRATUM(814670)
Ambroise Vincent1b0db762019-02-21 16:35:07 +000095
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010096check_erratum_ls cortex_a57, ERRATUM(814670), CPU_REV(0, 0)
Ambroise Vincent1b0db762019-02-21 16:35:07 +000097
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +010098workaround_runtime_start cortex_a57, ERRATUM(817169), ERRATA_A57_817169, CORTEX_A57_MIDR
99 /* Invalidate any TLB address */
100 mov x0, #0
101 tlbi vae3, x0
102workaround_runtime_end cortex_a57, ERRATUM(817169), NO_ISB
103
Boyan Karatotevc88e8912023-04-05 16:22:20 +0100104check_erratum_ls cortex_a57, ERRATUM(817169), CPU_REV(0, 1)
Ambroise Vincentaa2c0292019-02-21 16:35:49 +0000105
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100106workaround_reset_start cortex_a57, ERRATUM(826974), ERRATA_A57_826974
Boyan Karatotevc88e8912023-04-05 16:22:20 +0100107 sysreg_bit_set CORTEX_A57_CPUACTLR_EL1, CORTEX_A57_CPUACTLR_EL1_DIS_LOAD_PASS_DMB
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100108workaround_reset_end cortex_a57, ERRATUM(826974)
Sandrine Bailleuxa7e0c532016-04-14 13:32:31 +0100109
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100110check_erratum_ls cortex_a57, ERRATUM(826974), CPU_REV(1, 1)
Jeenu Viswambharand5ec3672017-01-03 11:01:51 +0000111
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100112workaround_reset_start cortex_a57, ERRATUM(826977), ERRATA_A57_826977
Boyan Karatotevc88e8912023-04-05 16:22:20 +0100113 sysreg_bit_set CORTEX_A57_CPUACTLR_EL1, CORTEX_A57_CPUACTLR_EL1_GRE_NGRE_AS_NGNRE
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100114workaround_reset_end cortex_a57, ERRATUM(826977)
Sandrine Bailleuxadcbd552016-04-14 14:24:13 +0100115
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100116check_erratum_ls cortex_a57, ERRATUM(826977), CPU_REV(1, 1)
Jeenu Viswambharand5ec3672017-01-03 11:01:51 +0000117
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100118workaround_reset_start cortex_a57, ERRATUM(828024), ERRATA_A57_828024
Eleanor Bonnici41b61be2017-08-09 16:42:40 +0100119 mrs x1, CORTEX_A57_CPUACTLR_EL1
Sandrine Bailleuxc11116f2016-04-14 14:04:48 +0100120 /*
121 * Setting the relevant bits in CPUACTLR_EL1 has to be done in 2
122 * instructions here because the resulting bitmask doesn't fit in a
123 * 16-bit value so it cannot be encoded in a single instruction.
124 */
Eleanor Bonnici41b61be2017-08-09 16:42:40 +0100125 orr x1, x1, #CORTEX_A57_CPUACTLR_EL1_NO_ALLOC_WBWA
126 orr x1, x1, #(CORTEX_A57_CPUACTLR_EL1_DIS_L1_STREAMING | \
127 CORTEX_A57_CPUACTLR_EL1_DIS_STREAMING)
128 msr CORTEX_A57_CPUACTLR_EL1, x1
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100129workaround_reset_end cortex_a57, ERRATUM(828024)
Sandrine Bailleuxa7e0c532016-04-14 13:32:31 +0100130
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100131check_erratum_ls cortex_a57, ERRATUM(828024), CPU_REV(1, 1)
Jeenu Viswambharand5ec3672017-01-03 11:01:51 +0000132
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100133workaround_reset_start cortex_a57, ERRATUM(829520), ERRATA_A57_829520
Boyan Karatotevc88e8912023-04-05 16:22:20 +0100134 sysreg_bit_set CORTEX_A57_CPUACTLR_EL1, CORTEX_A57_CPUACTLR_EL1_DIS_INDIRECT_PREDICTOR
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100135workaround_reset_end cortex_a57, ERRATUM(829520)
Sandrine Bailleux48cbe852016-04-14 14:18:07 +0100136
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100137check_erratum_ls cortex_a57, ERRATUM(829520), CPU_REV(1, 2)
Jeenu Viswambharand5ec3672017-01-03 11:01:51 +0000138
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100139workaround_reset_start cortex_a57, ERRATUM(833471), ERRATA_A57_833471
Boyan Karatotevc88e8912023-04-05 16:22:20 +0100140 sysreg_bit_set CORTEX_A57_CPUACTLR_EL1, CORTEX_A57_CPUACTLR_EL1_FORCE_FPSCR_FLUSH
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100141workaround_reset_end cortex_a57, ERRATUM(833471)
Sandrine Bailleux143ef1a2016-04-21 11:10:52 +0100142
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100143check_erratum_ls cortex_a57, ERRATUM(833471), CPU_REV(1, 2)
Jeenu Viswambharand5ec3672017-01-03 11:01:51 +0000144
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100145workaround_reset_start cortex_a57, ERRATUM(859972), ERRATA_A57_859972
Boyan Karatotevc88e8912023-04-05 16:22:20 +0100146 sysreg_bit_set CORTEX_A57_CPUACTLR_EL1, CORTEX_A57_CPUACTLR_EL1_DIS_INSTR_PREFETCH
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100147workaround_reset_end cortex_a57, ERRATUM(859972)
Boyan Karatotev219aa672023-04-04 11:59:12 +0100148
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100149check_erratum_ls cortex_a57, ERRATUM(859972), CPU_REV(1, 3)
Soby Mathew802f8652014-08-14 16:19:29 +0100150
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100151check_erratum_chosen cortex_a57, ERRATUM(1319537), ERRATA_A57_1319537
152/* erratum has no workaround in the cpu. Generic code must take care */
153add_erratum_entry cortex_a57, ERRATUM(1319537), ERRATA_A57_1319537, NO_APPLY_AT_RESET
Ambroise Vincent1b0db762019-02-21 16:35:07 +0000154
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100155workaround_reset_start cortex_a57, CVE(2017, 5715), WORKAROUND_CVE_2017_5715
156#if IMAGE_BL31
Boyan Karatotevc88e8912023-04-05 16:22:20 +0100157 override_vector_table wa_cve_2017_5715_mmu_vbar
Dimitris Papastamos446f7f12017-11-30 14:53:53 +0000158#endif
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100159workaround_reset_end cortex_a57, CVE(2017, 5715)
160
161check_erratum_chosen cortex_a57, CVE(2017, 5715), WORKAROUND_CVE_2017_5715
Dimitris Papastamos446f7f12017-11-30 14:53:53 +0000162
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100163workaround_reset_start cortex_a57, CVE(2018, 3639), WORKAROUND_CVE_2018_3639
Boyan Karatotevc88e8912023-04-05 16:22:20 +0100164 sysreg_bit_set CORTEX_A57_CPUACTLR_EL1, CORTEX_A57_CPUACTLR_EL1_DIS_LOAD_PASS_STORE
Dimitris Papastamose6625ec2018-04-05 14:38:26 +0100165 isb
166 dsb sy
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100167workaround_reset_end cortex_a57, CVE(2018, 3639)
168
169check_erratum_chosen cortex_a57, CVE(2018, 3639), WORKAROUND_CVE_2018_3639
170
171workaround_reset_start cortex_a57, CVE(2022, 23960), WORKAROUND_CVE_2022_23960
172#if IMAGE_BL31
Boyan Karatotevc88e8912023-04-05 16:22:20 +0100173 override_vector_table wa_cve_2017_5715_mmu_vbar
Dimitris Papastamose6625ec2018-04-05 14:38:26 +0100174#endif
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100175workaround_reset_end cortex_a57, CVE(2022, 23960)
Dimitris Papastamose6625ec2018-04-05 14:38:26 +0100176
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100177check_erratum_chosen cortex_a57, CVE(2022, 23960), WORKAROUND_CVE_2022_23960
178
179cpu_reset_func_start cortex_a57
Varun Wadekar5ee3abc2018-06-12 16:49:12 -0700180#if A57_ENABLE_NONCACHEABLE_LOAD_FWD
Boyan Karatotevc88e8912023-04-05 16:22:20 +0100181 /* Enable higher performance non-cacheable load forwarding */
182 sysreg_bit_set CORTEX_A57_CPUACTLR_EL1, CORTEX_A57_CPUACTLR_EL1_EN_NC_LOAD_FWD
Varun Wadekar5ee3abc2018-06-12 16:49:12 -0700183#endif
Boyan Karatotevc88e8912023-04-05 16:22:20 +0100184 /* Enable the SMP bit. */
185 sysreg_bit_set CORTEX_A57_ECTLR_EL1, CORTEX_A57_ECTLR_SMP_BIT
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100186cpu_reset_func_end cortex_a57
Soby Mathewc704cbc2014-08-14 11:33:56 +0100187
Bipin Ravicaa2e052022-02-23 23:45:50 -0600188func check_smccc_arch_workaround_3
189 mov x0, #ERRATA_APPLIES
190 ret
191endfunc check_smccc_arch_workaround_3
192
Soby Mathewc0884332014-09-22 12:11:36 +0100193 /* ----------------------------------------------------
194 * The CPU Ops core power down function for Cortex-A57.
195 * ----------------------------------------------------
196 */
Soby Mathew8e2f2872014-08-14 12:49:05 +0100197func cortex_a57_core_pwr_dwn
198 mov x18, x30
199
200 /* ---------------------------------------------
201 * Turn off caches.
202 * ---------------------------------------------
203 */
204 bl cortex_a57_disable_dcache
205
206 /* ---------------------------------------------
207 * Disable the L2 prefetches.
208 * ---------------------------------------------
209 */
210 bl cortex_a57_disable_l2_prefetch
211
212 /* ---------------------------------------------
Soby Mathew42aa5eb2014-09-02 10:47:33 +0100213 * Flush L1 caches.
Soby Mathew8e2f2872014-08-14 12:49:05 +0100214 * ---------------------------------------------
215 */
216 mov x0, #DCCISW
Soby Mathew42aa5eb2014-09-02 10:47:33 +0100217 bl dcsw_op_level1
Soby Mathew8e2f2872014-08-14 12:49:05 +0100218
219 /* ---------------------------------------------
220 * Come out of intra cluster coherency
221 * ---------------------------------------------
222 */
223 bl cortex_a57_disable_smp
224
225 /* ---------------------------------------------
226 * Force the debug interfaces to be quiescent
227 * ---------------------------------------------
228 */
229 mov x30, x18
230 b cortex_a57_disable_ext_debug
Kévin Petita877c252015-03-24 14:03:57 +0000231endfunc cortex_a57_core_pwr_dwn
Soby Mathew8e2f2872014-08-14 12:49:05 +0100232
Soby Mathewc0884332014-09-22 12:11:36 +0100233 /* -------------------------------------------------------
234 * The CPU Ops cluster power down function for Cortex-A57.
235 * -------------------------------------------------------
236 */
Soby Mathew8e2f2872014-08-14 12:49:05 +0100237func cortex_a57_cluster_pwr_dwn
238 mov x18, x30
239
240 /* ---------------------------------------------
241 * Turn off caches.
242 * ---------------------------------------------
243 */
244 bl cortex_a57_disable_dcache
245
246 /* ---------------------------------------------
247 * Disable the L2 prefetches.
248 * ---------------------------------------------
249 */
250 bl cortex_a57_disable_l2_prefetch
251
Soby Mathew937488b2014-09-22 14:13:34 +0100252#if !SKIP_A57_L1_FLUSH_PWR_DWN
Soby Mathew42aa5eb2014-09-02 10:47:33 +0100253 /* -------------------------------------------------
254 * Flush the L1 caches.
255 * -------------------------------------------------
256 */
257 mov x0, #DCCISW
258 bl dcsw_op_level1
Soby Mathew937488b2014-09-22 14:13:34 +0100259#endif
Soby Mathew8e2f2872014-08-14 12:49:05 +0100260 /* ---------------------------------------------
261 * Disable the optional ACP.
262 * ---------------------------------------------
263 */
264 bl plat_disable_acp
265
Soby Mathew42aa5eb2014-09-02 10:47:33 +0100266 /* -------------------------------------------------
267 * Flush the L2 caches.
268 * -------------------------------------------------
Soby Mathew8e2f2872014-08-14 12:49:05 +0100269 */
270 mov x0, #DCCISW
Soby Mathew42aa5eb2014-09-02 10:47:33 +0100271 bl dcsw_op_level2
Soby Mathew8e2f2872014-08-14 12:49:05 +0100272
273 /* ---------------------------------------------
274 * Come out of intra cluster coherency
275 * ---------------------------------------------
276 */
277 bl cortex_a57_disable_smp
278
279 /* ---------------------------------------------
280 * Force the debug interfaces to be quiescent
281 * ---------------------------------------------
282 */
283 mov x30, x18
284 b cortex_a57_disable_ext_debug
Kévin Petita877c252015-03-24 14:03:57 +0000285endfunc cortex_a57_cluster_pwr_dwn
Soby Mathew8e2f2872014-08-14 12:49:05 +0100286
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100287errata_report_shim cortex_a57
Jeenu Viswambharand5ec3672017-01-03 11:01:51 +0000288
Soby Mathew38b4bc92014-08-14 13:36:41 +0100289 /* ---------------------------------------------
290 * This function provides cortex_a57 specific
291 * register information for crash reporting.
292 * It needs to return with x6 pointing to
293 * a list of register names in ascii and
294 * x8 - x15 having values of registers to be
295 * reported.
296 * ---------------------------------------------
297 */
298.section .rodata.cortex_a57_regs, "aS"
299cortex_a57_regs: /* The ascii list of register names to be reported */
Naga Sureshkumar Relli6a72a912016-07-01 12:52:41 +0530300 .asciz "cpuectlr_el1", "cpumerrsr_el1", "l2merrsr_el1", ""
Soby Mathew38b4bc92014-08-14 13:36:41 +0100301
302func cortex_a57_cpu_reg_dump
303 adr x6, cortex_a57_regs
Varun Wadekar1384a162017-06-05 14:54:46 -0700304 mrs x8, CORTEX_A57_ECTLR_EL1
305 mrs x9, CORTEX_A57_MERRSR_EL1
306 mrs x10, CORTEX_A57_L2MERRSR_EL1
Soby Mathew38b4bc92014-08-14 13:36:41 +0100307 ret
Kévin Petita877c252015-03-24 14:03:57 +0000308endfunc cortex_a57_cpu_reg_dump
Soby Mathew38b4bc92014-08-14 13:36:41 +0100309
Dimitris Papastamosba51d9e2018-05-16 11:36:14 +0100310declare_cpu_ops_wa cortex_a57, CORTEX_A57_MIDR, \
Jeenu Viswambharanee5eb802016-11-18 12:58:28 +0000311 cortex_a57_reset_func, \
Boyan Karatotevd2ae7c92023-04-05 10:49:37 +0100312 check_erratum_cortex_a57_5715, \
Dimitris Papastamosba51d9e2018-05-16 11:36:14 +0100313 CPU_NO_EXTRA2_FUNC, \
Bipin Ravicaa2e052022-02-23 23:45:50 -0600314 check_smccc_arch_workaround_3, \
Jeenu Viswambharanee5eb802016-11-18 12:58:28 +0000315 cortex_a57_core_pwr_dwn, \
316 cortex_a57_cluster_pwr_dwn