blob: 18ee1f971e125eee10594ae5b22233053e92e143 [file] [log] [blame]
Yatharth Kochara9f776c2016-11-10 16:17:51 +00001/*
John Powell7550aa22022-04-20 15:27:33 -05002 * Copyright (c) 2017-2022, Arm Limited and Contributors. All rights reserved.
Yatharth Kochara9f776c2016-11-10 16:17:51 +00003 *
dp-armfa3cf0b2017-05-03 09:38:09 +01004 * SPDX-License-Identifier: BSD-3-Clause
Yatharth Kochara9f776c2016-11-10 16:17:51 +00005 */
6#include <arch.h>
7#include <asm_macros.S>
8#include <assert_macros.S>
Antonio Nino Diaze0f90632018-12-14 00:18:21 +00009#include <common/debug.h>
Yatharth Kochara9f776c2016-11-10 16:17:51 +000010#include <cortex_a57.h>
11#include <cpu_macros.S>
Yatharth Kochara9f776c2016-11-10 16:17:51 +000012
13 /* ---------------------------------------------
14 * Disable intra-cluster coherency
15 * Clobbers: r0-r1
16 * ---------------------------------------------
17 */
18func cortex_a57_disable_smp
Varun Wadekar1384a162017-06-05 14:54:46 -070019 ldcopr16 r0, r1, CORTEX_A57_ECTLR
20 bic64_imm r0, r1, CORTEX_A57_ECTLR_SMP_BIT
21 stcopr16 r0, r1, CORTEX_A57_ECTLR
Yatharth Kochara9f776c2016-11-10 16:17:51 +000022 bx lr
23endfunc cortex_a57_disable_smp
24
25 /* ---------------------------------------------
26 * Disable all types of L2 prefetches.
27 * Clobbers: r0-r2
28 * ---------------------------------------------
29 */
30func cortex_a57_disable_l2_prefetch
Varun Wadekar1384a162017-06-05 14:54:46 -070031 ldcopr16 r0, r1, CORTEX_A57_ECTLR
32 orr64_imm r0, r1, CORTEX_A57_ECTLR_DIS_TWD_ACC_PFTCH_BIT
33 bic64_imm r0, r1, (CORTEX_A57_ECTLR_L2_IPFTCH_DIST_MASK | \
34 CORTEX_A57_ECTLR_L2_DPFTCH_DIST_MASK)
35 stcopr16 r0, r1, CORTEX_A57_ECTLR
Yatharth Kochara9f776c2016-11-10 16:17:51 +000036 isb
37 dsb ish
38 bx lr
39endfunc cortex_a57_disable_l2_prefetch
40
41 /* ---------------------------------------------
42 * Disable debug interfaces
43 * ---------------------------------------------
44 */
45func cortex_a57_disable_ext_debug
46 mov r0, #1
47 stcopr r0, DBGOSDLR
48 isb
Ambroise Vincentaa2c0292019-02-21 16:35:49 +000049#if ERRATA_A57_817169
50 /*
51 * Invalidate any TLB address
52 */
53 mov r0, #0
54 stcopr r0, TLBIMVA
55#endif
Yatharth Kochara9f776c2016-11-10 16:17:51 +000056 dsb sy
57 bx lr
58endfunc cortex_a57_disable_ext_debug
59
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +010060 /* --------------------------------------------------
61 * Errata Workaround for Cortex A57 Errata #806969.
62 * This applies only to revision r0p0 of Cortex A57.
63 * Inputs:
64 * r0: variant[4:7] and revision[0:3] of current cpu.
65 * Shall clobber: r0-r3
66 * --------------------------------------------------
67 */
68func errata_a57_806969_wa
69 /*
70 * Compare r0 against revision r0p0
71 */
72 mov r2, lr
73 bl check_errata_806969
74 mov lr, r2
75 cmp r0, #ERRATA_NOT_APPLIES
76 beq 1f
Eleanor Bonnici41b61be2017-08-09 16:42:40 +010077 ldcopr16 r0, r1, CORTEX_A57_CPUACTLR
78 orr64_imm r0, r1, CORTEX_A57_CPUACTLR_NO_ALLOC_WBWA
79 stcopr16 r0, r1, CORTEX_A57_CPUACTLR
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +0100801:
81 bx lr
82endfunc errata_a57_806969_wa
83
84func check_errata_806969
85 mov r1, #0x00
86 b cpu_rev_var_ls
87endfunc check_errata_806969
88
89 /* ---------------------------------------------------
90 * Errata Workaround for Cortex A57 Errata #813419.
91 * This applies only to revision r0p0 of Cortex A57.
92 * ---------------------------------------------------
93 */
94func check_errata_813419
95 /*
96 * Even though this is only needed for revision r0p0, it
97 * is always applied due to limitations of the current
98 * errata framework.
99 */
100 mov r0, #ERRATA_APPLIES
101 bx lr
102endfunc check_errata_813419
103
104 /* ---------------------------------------------------
105 * Errata Workaround for Cortex A57 Errata #813420.
106 * This applies only to revision r0p0 of Cortex A57.
107 * Inputs:
108 * r0: variant[4:7] and revision[0:3] of current cpu.
109 * Shall clobber: r0-r3
110 * ---------------------------------------------------
111 */
112func errata_a57_813420_wa
113 /*
114 * Compare r0 against revision r0p0
115 */
116 mov r2, lr
117 bl check_errata_813420
118 mov lr, r2
119 cmp r0, #ERRATA_NOT_APPLIES
120 beq 1f
Eleanor Bonnici41b61be2017-08-09 16:42:40 +0100121 ldcopr16 r0, r1, CORTEX_A57_CPUACTLR
122 orr64_imm r0, r1, CORTEX_A57_CPUACTLR_DCC_AS_DCCI
123 stcopr16 r0, r1, CORTEX_A57_CPUACTLR
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +01001241:
125 bx lr
126endfunc errata_a57_813420_wa
127
128func check_errata_813420
129 mov r1, #0x00
130 b cpu_rev_var_ls
131endfunc check_errata_813420
132
Ambroise Vincent1b0db762019-02-21 16:35:07 +0000133 /* ---------------------------------------------------
134 * Errata Workaround for Cortex A57 Errata #814670.
135 * This applies only to revision r0p0 of Cortex A57.
136 * Inputs:
137 * r0: variant[4:7] and revision[0:3] of current cpu.
138 * Shall clobber: r0-r3
139 * ---------------------------------------------------
140 */
141func errata_a57_814670_wa
142 /*
143 * Compare r0 against revision r0p0
144 */
145 mov r2, lr
146 bl check_errata_814670
147 cmp r0, #ERRATA_NOT_APPLIES
148 beq 1f
149 ldcopr16 r0, r1, CORTEX_A57_CPUACTLR
150 orr64_imm r0, r1, CORTEX_A57_CPUACTLR_DIS_DMB_NULLIFICATION
151 stcopr16 r0, r1, CORTEX_A57_CPUACTLR
152 isb
1531:
154 bx r2
155endfunc errata_a57_814670_wa
156
157func check_errata_814670
158 mov r1, #0x00
159 b cpu_rev_var_ls
160endfunc check_errata_814670
161
Ambroise Vincentaa2c0292019-02-21 16:35:49 +0000162 /* ----------------------------------------------------
163 * Errata Workaround for Cortex A57 Errata #817169.
164 * This applies only to revision <= r0p1 of Cortex A57.
165 * ----------------------------------------------------
166 */
167func check_errata_817169
168 /*
169 * Even though this is only needed for revision <= r0p1, it
170 * is always applied because of the low cost of the workaround.
171 */
172 mov r0, #ERRATA_APPLIES
173 bx lr
174endfunc check_errata_817169
175
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +0100176 /* --------------------------------------------------------------------
177 * Disable the over-read from the LDNP instruction.
178 *
179 * This applies to all revisions <= r1p2. The performance degradation
180 * observed with LDNP/STNP has been fixed on r1p3 and onwards.
181 *
182 * Inputs:
183 * r0: variant[4:7] and revision[0:3] of current cpu.
184 * Shall clobber: r0-r3
185 * ---------------------------------------------------------------------
186 */
187func a57_disable_ldnp_overread
188 /*
189 * Compare r0 against revision r1p2
190 */
191 mov r2, lr
192 bl check_errata_disable_ldnp_overread
193 mov lr, r2
194 cmp r0, #ERRATA_NOT_APPLIES
195 beq 1f
Eleanor Bonnici41b61be2017-08-09 16:42:40 +0100196 ldcopr16 r0, r1, CORTEX_A57_CPUACTLR
197 orr64_imm r0, r1, CORTEX_A57_CPUACTLR_DIS_OVERREAD
198 stcopr16 r0, r1, CORTEX_A57_CPUACTLR
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +01001991:
200 bx lr
201endfunc a57_disable_ldnp_overread
202
203func check_errata_disable_ldnp_overread
204 mov r1, #0x12
205 b cpu_rev_var_ls
206endfunc check_errata_disable_ldnp_overread
207
208 /* ---------------------------------------------------
209 * Errata Workaround for Cortex A57 Errata #826974.
210 * This applies only to revision <= r1p1 of Cortex A57.
211 * Inputs:
212 * r0: variant[4:7] and revision[0:3] of current cpu.
213 * Shall clobber: r0-r3
214 * ---------------------------------------------------
215 */
216func errata_a57_826974_wa
217 /*
218 * Compare r0 against revision r1p1
219 */
220 mov r2, lr
221 bl check_errata_826974
222 mov lr, r2
223 cmp r0, #ERRATA_NOT_APPLIES
224 beq 1f
Eleanor Bonnici41b61be2017-08-09 16:42:40 +0100225 ldcopr16 r0, r1, CORTEX_A57_CPUACTLR
226 orr64_imm r0, r1, CORTEX_A57_CPUACTLR_DIS_LOAD_PASS_DMB
227 stcopr16 r0, r1, CORTEX_A57_CPUACTLR
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +01002281:
229 bx lr
230endfunc errata_a57_826974_wa
231
232func check_errata_826974
233 mov r1, #0x11
234 b cpu_rev_var_ls
235endfunc check_errata_826974
236
237 /* ---------------------------------------------------
238 * Errata Workaround for Cortex A57 Errata #826977.
239 * This applies only to revision <= r1p1 of Cortex A57.
240 * Inputs:
241 * r0: variant[4:7] and revision[0:3] of current cpu.
242 * Shall clobber: r0-r3
243 * ---------------------------------------------------
244 */
245func errata_a57_826977_wa
246 /*
247 * Compare r0 against revision r1p1
248 */
249 mov r2, lr
250 bl check_errata_826977
251 mov lr, r2
252 cmp r0, #ERRATA_NOT_APPLIES
253 beq 1f
Eleanor Bonnici41b61be2017-08-09 16:42:40 +0100254 ldcopr16 r0, r1, CORTEX_A57_CPUACTLR
255 orr64_imm r0, r1, CORTEX_A57_CPUACTLR_GRE_NGRE_AS_NGNRE
256 stcopr16 r0, r1, CORTEX_A57_CPUACTLR
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +01002571:
258 bx lr
259endfunc errata_a57_826977_wa
260
261func check_errata_826977
262 mov r1, #0x11
263 b cpu_rev_var_ls
264endfunc check_errata_826977
265
266 /* ---------------------------------------------------
267 * Errata Workaround for Cortex A57 Errata #828024.
268 * This applies only to revision <= r1p1 of Cortex A57.
269 * Inputs:
270 * r0: variant[4:7] and revision[0:3] of current cpu.
271 * Shall clobber: r0-r3
272 * ---------------------------------------------------
273 */
274func errata_a57_828024_wa
275 /*
276 * Compare r0 against revision r1p1
277 */
278 mov r2, lr
279 bl check_errata_828024
280 mov lr, r2
281 cmp r0, #ERRATA_NOT_APPLIES
282 beq 1f
Eleanor Bonnici41b61be2017-08-09 16:42:40 +0100283 ldcopr16 r0, r1, CORTEX_A57_CPUACTLR
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +0100284 /*
Eleanor Bonnici41b61be2017-08-09 16:42:40 +0100285 * Setting the relevant bits in CORTEX_A57_CPUACTLR has to be done in 2
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +0100286 * instructions here because the resulting bitmask doesn't fit in a
287 * 16-bit value so it cannot be encoded in a single instruction.
288 */
Eleanor Bonnici41b61be2017-08-09 16:42:40 +0100289 orr64_imm r0, r1, CORTEX_A57_CPUACTLR_NO_ALLOC_WBWA
290 orr64_imm r0, r1, (CORTEX_A57_CPUACTLR_DIS_L1_STREAMING | CORTEX_A57_CPUACTLR_DIS_STREAMING)
291 stcopr16 r0, r1, CORTEX_A57_CPUACTLR
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +01002921:
293 bx lr
294endfunc errata_a57_828024_wa
295
296func check_errata_828024
297 mov r1, #0x11
298 b cpu_rev_var_ls
299endfunc check_errata_828024
300
301 /* ---------------------------------------------------
302 * Errata Workaround for Cortex A57 Errata #829520.
303 * This applies only to revision <= r1p2 of Cortex A57.
304 * Inputs:
305 * r0: variant[4:7] and revision[0:3] of current cpu.
306 * Shall clobber: r0-r3
307 * ---------------------------------------------------
308 */
309func errata_a57_829520_wa
310 /*
311 * Compare r0 against revision r1p2
312 */
313 mov r2, lr
314 bl check_errata_829520
315 mov lr, r2
316 cmp r0, #ERRATA_NOT_APPLIES
317 beq 1f
Eleanor Bonnici41b61be2017-08-09 16:42:40 +0100318 ldcopr16 r0, r1, CORTEX_A57_CPUACTLR
319 orr64_imm r0, r1, CORTEX_A57_CPUACTLR_DIS_INDIRECT_PREDICTOR
320 stcopr16 r0, r1, CORTEX_A57_CPUACTLR
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +01003211:
322 bx lr
323endfunc errata_a57_829520_wa
324
325func check_errata_829520
326 mov r1, #0x12
327 b cpu_rev_var_ls
328endfunc check_errata_829520
329
330 /* ---------------------------------------------------
331 * Errata Workaround for Cortex A57 Errata #833471.
332 * This applies only to revision <= r1p2 of Cortex A57.
333 * Inputs:
334 * r0: variant[4:7] and revision[0:3] of current cpu.
335 * Shall clobber: r0-r3
336 * ---------------------------------------------------
337 */
338func errata_a57_833471_wa
339 /*
340 * Compare r0 against revision r1p2
341 */
342 mov r2, lr
343 bl check_errata_833471
344 mov lr, r2
345 cmp r0, #ERRATA_NOT_APPLIES
346 beq 1f
Eleanor Bonnici41b61be2017-08-09 16:42:40 +0100347 ldcopr16 r0, r1, CORTEX_A57_CPUACTLR
348 orr64_imm r1, r1, CORTEX_A57_CPUACTLR_FORCE_FPSCR_FLUSH
349 stcopr16 r0, r1, CORTEX_A57_CPUACTLR
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +01003501:
351 bx lr
352endfunc errata_a57_833471_wa
353
354func check_errata_833471
355 mov r1, #0x12
356 b cpu_rev_var_ls
357endfunc check_errata_833471
358
Eleanor Bonnici0c9bd272017-08-02 16:35:04 +0100359 /* ---------------------------------------------------
360 * Errata Workaround for Cortex A57 Errata #859972.
361 * This applies only to revision <= r1p3 of Cortex A57.
362 * Inputs:
363 * r0: variant[4:7] and revision[0:3] of current cpu.
364 * Shall clobber: r0-r3
365 * ---------------------------------------------------
366 */
367func errata_a57_859972_wa
368 mov r2, lr
369 bl check_errata_859972
370 mov lr, r2
371 cmp r0, #ERRATA_NOT_APPLIES
372 beq 1f
373 ldcopr16 r0, r1, CORTEX_A57_CPUACTLR
374 orr64_imm r1, r1, CORTEX_A57_CPUACTLR_DIS_INSTR_PREFETCH
375 stcopr16 r0, r1, CORTEX_A57_CPUACTLR
3761:
377 bx lr
378endfunc errata_a57_859972_wa
379
380func check_errata_859972
381 mov r1, #0x13
382 b cpu_rev_var_ls
383endfunc check_errata_859972
384
Dimitris Papastamos8ca0af22018-01-03 10:48:59 +0000385func check_errata_cve_2017_5715
386 mov r0, #ERRATA_MISSING
387 bx lr
388endfunc check_errata_cve_2017_5715
389
Dimitris Papastamos4a284a42018-05-17 14:41:13 +0100390func check_errata_cve_2018_3639
391#if WORKAROUND_CVE_2018_3639
392 mov r0, #ERRATA_APPLIES
393#else
394 mov r0, #ERRATA_MISSING
395#endif
396 bx lr
397endfunc check_errata_cve_2018_3639
398
John Powell7550aa22022-04-20 15:27:33 -0500399func check_errata_cve_2022_23960
400 mov r0, #ERRATA_MISSING
401 bx lr
402endfunc check_errata_cve_2022_23960
403
Yatharth Kochara9f776c2016-11-10 16:17:51 +0000404 /* -------------------------------------------------
405 * The CPU Ops reset function for Cortex-A57.
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +0100406 * Shall clobber: r0-r6
Yatharth Kochara9f776c2016-11-10 16:17:51 +0000407 * -------------------------------------------------
408 */
409func cortex_a57_reset_func
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +0100410 mov r5, lr
411 bl cpu_get_rev_var
412 mov r4, r0
413
414#if ERRATA_A57_806969
415 mov r0, r4
416 bl errata_a57_806969_wa
417#endif
418
419#if ERRATA_A57_813420
420 mov r0, r4
421 bl errata_a57_813420_wa
422#endif
423
Ambroise Vincent1b0db762019-02-21 16:35:07 +0000424#if ERRATA_A57_814670
425 mov r0, r4
426 bl errata_a57_814670_wa
427#endif
428
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +0100429#if A57_DISABLE_NON_TEMPORAL_HINT
430 mov r0, r4
431 bl a57_disable_ldnp_overread
432#endif
433
434#if ERRATA_A57_826974
435 mov r0, r4
436 bl errata_a57_826974_wa
437#endif
438
439#if ERRATA_A57_826977
440 mov r0, r4
441 bl errata_a57_826977_wa
442#endif
443
444#if ERRATA_A57_828024
445 mov r0, r4
446 bl errata_a57_828024_wa
447#endif
448
449#if ERRATA_A57_829520
450 mov r0, r4
451 bl errata_a57_829520_wa
452#endif
453
454#if ERRATA_A57_833471
455 mov r0, r4
456 bl errata_a57_833471_wa
457#endif
458
Eleanor Bonnici0c9bd272017-08-02 16:35:04 +0100459#if ERRATA_A57_859972
460 mov r0, r4
461 bl errata_a57_859972_wa
462#endif
463
Dimitris Papastamos4a284a42018-05-17 14:41:13 +0100464#if WORKAROUND_CVE_2018_3639
465 ldcopr16 r0, r1, CORTEX_A57_CPUACTLR
466 orr64_imm r0, r1, CORTEX_A57_CPUACTLR_DIS_LOAD_PASS_STORE
467 stcopr16 r0, r1, CORTEX_A57_CPUACTLR
468 isb
469 dsb sy
470#endif
471
Yatharth Kochara9f776c2016-11-10 16:17:51 +0000472 /* ---------------------------------------------
473 * Enable the SMP bit.
474 * ---------------------------------------------
475 */
Varun Wadekar1384a162017-06-05 14:54:46 -0700476 ldcopr16 r0, r1, CORTEX_A57_ECTLR
477 orr64_imm r0, r1, CORTEX_A57_ECTLR_SMP_BIT
478 stcopr16 r0, r1, CORTEX_A57_ECTLR
Yatharth Kochara9f776c2016-11-10 16:17:51 +0000479 isb
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +0100480 bx r5
Yatharth Kochara9f776c2016-11-10 16:17:51 +0000481endfunc cortex_a57_reset_func
482
483 /* ----------------------------------------------------
484 * The CPU Ops core power down function for Cortex-A57.
485 * ----------------------------------------------------
486 */
487func cortex_a57_core_pwr_dwn
488 push {r12, lr}
489
490 /* Assert if cache is enabled */
Matt Ma41b00942017-11-22 19:31:28 +0800491#if ENABLE_ASSERTIONS
Yatharth Kochara9f776c2016-11-10 16:17:51 +0000492 ldcopr r0, SCTLR
493 tst r0, #SCTLR_C_BIT
494 ASM_ASSERT(eq)
495#endif
496
497 /* ---------------------------------------------
498 * Disable the L2 prefetches.
499 * ---------------------------------------------
500 */
501 bl cortex_a57_disable_l2_prefetch
502
503 /* ---------------------------------------------
504 * Flush L1 caches.
505 * ---------------------------------------------
506 */
507 mov r0, #DC_OP_CISW
508 bl dcsw_op_level1
509
510 /* ---------------------------------------------
511 * Come out of intra cluster coherency
512 * ---------------------------------------------
513 */
514 bl cortex_a57_disable_smp
515
516 /* ---------------------------------------------
517 * Force the debug interfaces to be quiescent
518 * ---------------------------------------------
519 */
520 pop {r12, lr}
521 b cortex_a57_disable_ext_debug
522endfunc cortex_a57_core_pwr_dwn
523
524 /* -------------------------------------------------------
525 * The CPU Ops cluster power down function for Cortex-A57.
526 * Clobbers: r0-r3
527 * -------------------------------------------------------
528 */
529func cortex_a57_cluster_pwr_dwn
530 push {r12, lr}
531
532 /* Assert if cache is enabled */
Matt Ma41b00942017-11-22 19:31:28 +0800533#if ENABLE_ASSERTIONS
Yatharth Kochara9f776c2016-11-10 16:17:51 +0000534 ldcopr r0, SCTLR
535 tst r0, #SCTLR_C_BIT
536 ASM_ASSERT(eq)
537#endif
538
539 /* ---------------------------------------------
540 * Disable the L2 prefetches.
541 * ---------------------------------------------
542 */
543 bl cortex_a57_disable_l2_prefetch
544
545 /* ---------------------------------------------
546 * Flush L1 caches.
547 * ---------------------------------------------
548 */
549 mov r0, #DC_OP_CISW
550 bl dcsw_op_level1
551
552 /* ---------------------------------------------
553 * Disable the optional ACP.
554 * ---------------------------------------------
555 */
556 bl plat_disable_acp
557
558 /* ---------------------------------------------
559 * Flush L2 caches.
560 * ---------------------------------------------
561 */
562 mov r0, #DC_OP_CISW
563 bl dcsw_op_level2
564
565 /* ---------------------------------------------
566 * Come out of intra cluster coherency
567 * ---------------------------------------------
568 */
569 bl cortex_a57_disable_smp
570
571 /* ---------------------------------------------
572 * Force the debug interfaces to be quiescent
573 * ---------------------------------------------
574 */
575 pop {r12, lr}
576 b cortex_a57_disable_ext_debug
577endfunc cortex_a57_cluster_pwr_dwn
578
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +0100579#if REPORT_ERRATA
580/*
581 * Errata printing function for Cortex A57. Must follow AAPCS.
582 */
583func cortex_a57_errata_report
584 push {r12, lr}
585
586 bl cpu_get_rev_var
587 mov r4, r0
588
589 /*
590 * Report all errata. The revision-variant information is passed to
591 * checking functions of each errata.
592 */
593 report_errata ERRATA_A57_806969, cortex_a57, 806969
594 report_errata ERRATA_A57_813419, cortex_a57, 813419
595 report_errata ERRATA_A57_813420, cortex_a57, 813420
Ambroise Vincent1b0db762019-02-21 16:35:07 +0000596 report_errata ERRATA_A57_814670, cortex_a57, 814670
Ambroise Vincentaa2c0292019-02-21 16:35:49 +0000597 report_errata ERRATA_A57_817169, cortex_a57, 817169
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +0100598 report_errata A57_DISABLE_NON_TEMPORAL_HINT, cortex_a57, \
599 disable_ldnp_overread
600 report_errata ERRATA_A57_826974, cortex_a57, 826974
601 report_errata ERRATA_A57_826977, cortex_a57, 826977
602 report_errata ERRATA_A57_828024, cortex_a57, 828024
603 report_errata ERRATA_A57_829520, cortex_a57, 829520
604 report_errata ERRATA_A57_833471, cortex_a57, 833471
Eleanor Bonnici0c9bd272017-08-02 16:35:04 +0100605 report_errata ERRATA_A57_859972, cortex_a57, 859972
Dimitris Papastamos8ca0af22018-01-03 10:48:59 +0000606 report_errata WORKAROUND_CVE_2017_5715, cortex_a57, cve_2017_5715
Dimitris Papastamos4a284a42018-05-17 14:41:13 +0100607 report_errata WORKAROUND_CVE_2018_3639, cortex_a57, cve_2018_3639
John Powell7550aa22022-04-20 15:27:33 -0500608 report_errata WORKAROUND_CVE_2022_23960, cortex_a57, cve_2022_23960
Dimitris Papastamos2b40ca62017-06-05 14:55:41 +0100609
610 pop {r12, lr}
611 bx lr
612endfunc cortex_a57_errata_report
613#endif
614
Yatharth Kochara9f776c2016-11-10 16:17:51 +0000615declare_cpu_ops cortex_a57, CORTEX_A57_MIDR, \
616 cortex_a57_reset_func, \
617 cortex_a57_core_pwr_dwn, \
618 cortex_a57_cluster_pwr_dwn