blob: 31e7a3a71991df2fa8ce9370d963016334175c7c [file] [log] [blame]
Isla Mitchellea84d6b2017-08-03 16:04:46 +01001/*
John Tsichritzis56369c12019-02-19 13:49:06 +00002 * Copyright (c) 2017-2019, ARM Limited and Contributors. All rights reserved.
Isla Mitchellea84d6b2017-08-03 16:04:46 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#include <arch.h>
8#include <asm_macros.S>
John Tsichritzis56369c12019-02-19 13:49:06 +00009#include <neoverse_n1.h>
Dimitris Papastamos89736dd2018-02-13 11:28:02 +000010#include <cpuamu.h>
Isla Mitchellea84d6b2017-08-03 16:04:46 +010011#include <cpu_macros.S>
Dimitris Papastamos89736dd2018-02-13 11:28:02 +000012
John Tsichritzisfe6df392019-03-19 17:20:52 +000013/* Hardware handled coherency */
14#if HW_ASSISTED_COHERENCY == 0
15#error "Neoverse N1 must be compiled with HW_ASSISTED_COHERENCY enabled"
16#endif
17
John Tsichritzis7557c662019-06-03 13:54:30 +010018/* 64-bit only core */
19#if CTX_INCLUDE_AARCH32_REGS == 1
20#error "Neoverse-N1 supports only AArch64. Compile with CTX_INCLUDE_AARCH32_REGS=0"
21#endif
22
Dimitris Papastamos7ca21db2018-03-26 16:46:01 +010023/* --------------------------------------------------
Andre Przywarab9347402019-05-20 14:57:06 +010024 * Errata Workaround for Neoverse N1 Erratum 1043202.
John Tsichritzis56369c12019-02-19 13:49:06 +000025 * This applies to revision r0p0 and r1p0 of Neoverse N1.
Dimitris Papastamos7ca21db2018-03-26 16:46:01 +010026 * Inputs:
27 * x0: variant[4:7] and revision[0:3] of current cpu.
28 * Shall clobber: x0-x17
29 * --------------------------------------------------
30 */
John Tsichritzis56369c12019-02-19 13:49:06 +000031func errata_n1_1043202_wa
Dimitris Papastamos7ca21db2018-03-26 16:46:01 +010032 /* Compare x0 against revision r1p0 */
33 mov x17, x30
34 bl check_errata_1043202
35 cbz x0, 1f
36
37 /* Apply instruction patching sequence */
38 ldr x0, =0x0
39 msr CPUPSELR_EL3, x0
40 ldr x0, =0xF3BF8F2F
41 msr CPUPOR_EL3, x0
42 ldr x0, =0xFFFFFFFF
43 msr CPUPMR_EL3, x0
44 ldr x0, =0x800200071
45 msr CPUPCR_EL3, x0
laurenw-arm33e58f32019-08-19 11:06:18 -050046 isb
Dimitris Papastamos7ca21db2018-03-26 16:46:01 +0100471:
48 ret x17
John Tsichritzis56369c12019-02-19 13:49:06 +000049endfunc errata_n1_1043202_wa
Dimitris Papastamos7ca21db2018-03-26 16:46:01 +010050
51func check_errata_1043202
52 /* Applies to r0p0 and r1p0 */
53 mov x1, #0x10
54 b cpu_rev_var_ls
55endfunc check_errata_1043202
56
Sami Mujawara8722e92019-05-10 14:28:37 +010057/* --------------------------------------------------
58 * Disable speculative loads if Neoverse N1 supports
59 * SSBS.
60 *
61 * Shall clobber: x0.
62 * --------------------------------------------------
63 */
64func neoverse_n1_disable_speculative_loads
65 /* Check if the PE implements SSBS */
66 mrs x0, id_aa64pfr1_el1
67 tst x0, #(ID_AA64PFR1_EL1_SSBS_MASK << ID_AA64PFR1_EL1_SSBS_SHIFT)
68 b.eq 1f
69
70 /* Disable speculative loads */
71 msr SSBS, xzr
Sami Mujawara8722e92019-05-10 14:28:37 +010072
731:
74 ret
75endfunc neoverse_n1_disable_speculative_loads
76
Andre Przywarab9347402019-05-20 14:57:06 +010077/* --------------------------------------------------
lauwal01bd555f42019-06-24 11:23:50 -050078 * Errata Workaround for Neoverse N1 Errata #1073348
79 * This applies to revision r0p0 and r1p0 of Neoverse N1.
80 * Inputs:
81 * x0: variant[4:7] and revision[0:3] of current cpu.
82 * Shall clobber: x0-x17
83 * --------------------------------------------------
84 */
85func errata_n1_1073348_wa
86 /* Compare x0 against revision r1p0 */
87 mov x17, x30
88 bl check_errata_1073348
89 cbz x0, 1f
90 mrs x1, NEOVERSE_N1_CPUACTLR_EL1
91 orr x1, x1, NEOVERSE_N1_CPUACTLR_EL1_BIT_6
92 msr NEOVERSE_N1_CPUACTLR_EL1, x1
lauwal01bd555f42019-06-24 11:23:50 -0500931:
94 ret x17
95endfunc errata_n1_1073348_wa
96
97func check_errata_1073348
98 /* Applies to r0p0 and r1p0 */
99 mov x1, #0x10
100 b cpu_rev_var_ls
101endfunc check_errata_1073348
102
103/* --------------------------------------------------
lauwal01363ee3c2019-06-24 11:28:34 -0500104 * Errata Workaround for Neoverse N1 Errata #1130799
105 * This applies to revision <=r2p0 of Neoverse N1.
106 * Inputs:
107 * x0: variant[4:7] and revision[0:3] of current cpu.
108 * Shall clobber: x0-x17
109 * --------------------------------------------------
110 */
111func errata_n1_1130799_wa
112 /* Compare x0 against revision r2p0 */
113 mov x17, x30
114 bl check_errata_1130799
115 cbz x0, 1f
116 mrs x1, NEOVERSE_N1_CPUACTLR2_EL1
117 orr x1, x1, NEOVERSE_N1_CPUACTLR2_EL1_BIT_59
118 msr NEOVERSE_N1_CPUACTLR2_EL1, x1
lauwal01363ee3c2019-06-24 11:28:34 -05001191:
120 ret x17
121endfunc errata_n1_1130799_wa
122
123func check_errata_1130799
124 /* Applies to <=r2p0 */
125 mov x1, #0x20
126 b cpu_rev_var_ls
127endfunc check_errata_1130799
128
129/* --------------------------------------------------
lauwal01f2adb132019-06-24 11:32:40 -0500130 * Errata Workaround for Neoverse N1 Errata #1165347
131 * This applies to revision <=r2p0 of Neoverse N1.
132 * Inputs:
133 * x0: variant[4:7] and revision[0:3] of current cpu.
134 * Shall clobber: x0-x17
135 * --------------------------------------------------
136 */
137func errata_n1_1165347_wa
138 /* Compare x0 against revision r2p0 */
139 mov x17, x30
140 bl check_errata_1165347
141 cbz x0, 1f
142 mrs x1, NEOVERSE_N1_CPUACTLR2_EL1
143 orr x1, x1, NEOVERSE_N1_CPUACTLR2_EL1_BIT_0
144 orr x1, x1, NEOVERSE_N1_CPUACTLR2_EL1_BIT_15
145 msr NEOVERSE_N1_CPUACTLR2_EL1, x1
lauwal01f2adb132019-06-24 11:32:40 -05001461:
147 ret x17
148endfunc errata_n1_1165347_wa
149
150func check_errata_1165347
151 /* Applies to <=r2p0 */
152 mov x1, #0x20
153 b cpu_rev_var_ls
154endfunc check_errata_1165347
155
156/* --------------------------------------------------
lauwal01e1590442019-06-24 11:35:37 -0500157 * Errata Workaround for Neoverse N1 Errata #1207823
158 * This applies to revision <=r2p0 of Neoverse N1.
159 * Inputs:
160 * x0: variant[4:7] and revision[0:3] of current cpu.
161 * Shall clobber: x0-x17
162 * --------------------------------------------------
163 */
164func errata_n1_1207823_wa
165 /* Compare x0 against revision r2p0 */
166 mov x17, x30
167 bl check_errata_1207823
168 cbz x0, 1f
169 mrs x1, NEOVERSE_N1_CPUACTLR2_EL1
170 orr x1, x1, NEOVERSE_N1_CPUACTLR2_EL1_BIT_11
171 msr NEOVERSE_N1_CPUACTLR2_EL1, x1
lauwal01e1590442019-06-24 11:35:37 -05001721:
173 ret x17
174endfunc errata_n1_1207823_wa
175
176func check_errata_1207823
177 /* Applies to <=r2p0 */
178 mov x1, #0x20
179 b cpu_rev_var_ls
180endfunc check_errata_1207823
181
182/* --------------------------------------------------
lauwal01197f14c2019-06-24 11:38:53 -0500183 * Errata Workaround for Neoverse N1 Errata #1220197
184 * This applies to revision <=r2p0 of Neoverse N1.
185 * Inputs:
186 * x0: variant[4:7] and revision[0:3] of current cpu.
187 * Shall clobber: x0-x17
188 * --------------------------------------------------
189 */
190func errata_n1_1220197_wa
191 /* Compare x0 against revision r2p0 */
192 mov x17, x30
193 bl check_errata_1220197
194 cbz x0, 1f
195 mrs x1, NEOVERSE_N1_CPUECTLR_EL1
196 orr x1, x1, NEOVERSE_N1_WS_THR_L2_MASK
197 msr NEOVERSE_N1_CPUECTLR_EL1, x1
lauwal01197f14c2019-06-24 11:38:53 -05001981:
199 ret x17
200endfunc errata_n1_1220197_wa
201
202func check_errata_1220197
203 /* Applies to <=r2p0 */
204 mov x1, #0x20
205 b cpu_rev_var_ls
206endfunc check_errata_1220197
207
208/* --------------------------------------------------
lauwal0107c2a232019-06-24 11:42:02 -0500209 * Errata Workaround for Neoverse N1 Errata #1257314
210 * This applies to revision <=r3p0 of Neoverse N1.
211 * Inputs:
212 * x0: variant[4:7] and revision[0:3] of current cpu.
213 * Shall clobber: x0-x17
214 * --------------------------------------------------
215 */
216func errata_n1_1257314_wa
217 /* Compare x0 against revision r3p0 */
218 mov x17, x30
219 bl check_errata_1257314
220 cbz x0, 1f
221 mrs x1, NEOVERSE_N1_CPUACTLR3_EL1
222 orr x1, x1, NEOVERSE_N1_CPUACTLR3_EL1_BIT_10
223 msr NEOVERSE_N1_CPUACTLR3_EL1, x1
lauwal0107c2a232019-06-24 11:42:02 -05002241:
225 ret x17
226endfunc errata_n1_1257314_wa
227
228func check_errata_1257314
229 /* Applies to <=r3p0 */
230 mov x1, #0x30
231 b cpu_rev_var_ls
232endfunc check_errata_1257314
233
234/* --------------------------------------------------
lauwal0142771af2019-06-24 11:44:58 -0500235 * Errata Workaround for Neoverse N1 Errata #1262606
236 * This applies to revision <=r3p0 of Neoverse N1.
237 * Inputs:
238 * x0: variant[4:7] and revision[0:3] of current cpu.
239 * Shall clobber: x0-x17
240 * --------------------------------------------------
241 */
242func errata_n1_1262606_wa
243 /* Compare x0 against revision r3p0 */
244 mov x17, x30
245 bl check_errata_1262606
246 cbz x0, 1f
247 mrs x1, NEOVERSE_N1_CPUACTLR_EL1
248 orr x1, x1, NEOVERSE_N1_CPUACTLR_EL1_BIT_13
249 msr NEOVERSE_N1_CPUACTLR_EL1, x1
lauwal0142771af2019-06-24 11:44:58 -05002501:
251 ret x17
252endfunc errata_n1_1262606_wa
253
254func check_errata_1262606
255 /* Applies to <=r3p0 */
256 mov x1, #0x30
257 b cpu_rev_var_ls
258endfunc check_errata_1262606
259
260/* --------------------------------------------------
lauwal0100396bf2019-06-24 11:47:30 -0500261 * Errata Workaround for Neoverse N1 Errata #1262888
262 * This applies to revision <=r3p0 of Neoverse N1.
263 * Inputs:
264 * x0: variant[4:7] and revision[0:3] of current cpu.
265 * Shall clobber: x0-x17
266 * --------------------------------------------------
267 */
268func errata_n1_1262888_wa
269 /* Compare x0 against revision r3p0 */
270 mov x17, x30
271 bl check_errata_1262888
272 cbz x0, 1f
273 mrs x1, NEOVERSE_N1_CPUECTLR_EL1
274 orr x1, x1, NEOVERSE_N1_CPUECTLR_EL1_MM_TLBPF_DIS_BIT
275 msr NEOVERSE_N1_CPUECTLR_EL1, x1
lauwal0100396bf2019-06-24 11:47:30 -05002761:
277 ret x17
278endfunc errata_n1_1262888_wa
279
280func check_errata_1262888
281 /* Applies to <=r3p0 */
282 mov x1, #0x30
283 b cpu_rev_var_ls
284endfunc check_errata_1262888
285
286/* --------------------------------------------------
lauwal01644b6ed2019-06-24 11:49:01 -0500287 * Errata Workaround for Neoverse N1 Errata #1275112
288 * This applies to revision <=r3p0 of Neoverse N1.
289 * Inputs:
290 * x0: variant[4:7] and revision[0:3] of current cpu.
291 * Shall clobber: x0-x17
292 * --------------------------------------------------
293 */
294func errata_n1_1275112_wa
295 /* Compare x0 against revision r3p0 */
296 mov x17, x30
297 bl check_errata_1275112
298 cbz x0, 1f
299 mrs x1, NEOVERSE_N1_CPUACTLR_EL1
300 orr x1, x1, NEOVERSE_N1_CPUACTLR_EL1_BIT_13
301 msr NEOVERSE_N1_CPUACTLR_EL1, x1
lauwal01644b6ed2019-06-24 11:49:01 -05003021:
303 ret x17
304endfunc errata_n1_1275112_wa
305
306func check_errata_1275112
307 /* Applies to <=r3p0 */
308 mov x1, #0x30
309 b cpu_rev_var_ls
310endfunc check_errata_1275112
311
312/* --------------------------------------------------
Andre Przywarab9347402019-05-20 14:57:06 +0100313 * Errata Workaround for Neoverse N1 Erratum 1315703.
314 * This applies to revision <= r3p0 of Neoverse N1.
315 * Inputs:
316 * x0: variant[4:7] and revision[0:3] of current cpu.
317 * Shall clobber: x0-x17
318 * --------------------------------------------------
319 */
320func errata_n1_1315703_wa
321 /* Compare x0 against revision r3p1 */
322 mov x17, x30
323 bl check_errata_1315703
324 cbz x0, 1f
325
326 mrs x0, NEOVERSE_N1_CPUACTLR2_EL1
327 orr x0, x0, #NEOVERSE_N1_CPUACTLR2_EL1_BIT_16
328 msr NEOVERSE_N1_CPUACTLR2_EL1, x0
Andre Przywarab9347402019-05-20 14:57:06 +0100329
3301:
331 ret x17
332endfunc errata_n1_1315703_wa
333
334func check_errata_1315703
335 /* Applies to everything <= r3p0. */
336 mov x1, #0x30
337 b cpu_rev_var_ls
338endfunc check_errata_1315703
339
John Tsichritzis56369c12019-02-19 13:49:06 +0000340func neoverse_n1_reset_func
Dimitris Papastamos7ca21db2018-03-26 16:46:01 +0100341 mov x19, x30
John Tsichritzis1f9ff492019-03-04 16:41:26 +0000342
Sami Mujawara8722e92019-05-10 14:28:37 +0100343 bl neoverse_n1_disable_speculative_loads
John Tsichritzis1f9ff492019-03-04 16:41:26 +0000344
Louis Mayencourtb58142b2019-04-18 14:34:11 +0100345 /* Forces all cacheable atomic instructions to be near */
346 mrs x0, NEOVERSE_N1_CPUACTLR2_EL1
347 orr x0, x0, #NEOVERSE_N1_CPUACTLR2_EL1_BIT_2
348 msr NEOVERSE_N1_CPUACTLR2_EL1, x0
349 isb
350
Dimitris Papastamos7ca21db2018-03-26 16:46:01 +0100351 bl cpu_get_rev_var
352 mov x18, x0
353
John Tsichritzis56369c12019-02-19 13:49:06 +0000354#if ERRATA_N1_1043202
Dimitris Papastamos7ca21db2018-03-26 16:46:01 +0100355 mov x0, x18
John Tsichritzis56369c12019-02-19 13:49:06 +0000356 bl errata_n1_1043202_wa
Dimitris Papastamos7ca21db2018-03-26 16:46:01 +0100357#endif
358
lauwal01bd555f42019-06-24 11:23:50 -0500359#if ERRATA_N1_1073348
360 mov x0, x18
361 bl errata_n1_1073348_wa
362#endif
363
lauwal01363ee3c2019-06-24 11:28:34 -0500364#if ERRATA_N1_1130799
365 mov x0, x18
366 bl errata_n1_1130799_wa
367#endif
368
lauwal01f2adb132019-06-24 11:32:40 -0500369#if ERRATA_N1_1165347
370 mov x0, x18
371 bl errata_n1_1165347_wa
372#endif
373
lauwal01e1590442019-06-24 11:35:37 -0500374#if ERRATA_N1_1207823
375 mov x0, x18
376 bl errata_n1_1207823_wa
377#endif
378
lauwal01197f14c2019-06-24 11:38:53 -0500379#if ERRATA_N1_1220197
380 mov x0, x18
381 bl errata_n1_1220197_wa
382#endif
383
lauwal0107c2a232019-06-24 11:42:02 -0500384#if ERRATA_N1_1257314
385 mov x0, x18
386 bl errata_n1_1257314_wa
387#endif
388
lauwal0142771af2019-06-24 11:44:58 -0500389#if ERRATA_N1_1262606
390 mov x0, x18
391 bl errata_n1_1262606_wa
392#endif
393
lauwal0100396bf2019-06-24 11:47:30 -0500394#if ERRATA_N1_1262888
395 mov x0, x18
396 bl errata_n1_1262888_wa
397#endif
398
lauwal01644b6ed2019-06-24 11:49:01 -0500399#if ERRATA_N1_1275112
400 mov x0, x18
401 bl errata_n1_1275112_wa
402#endif
403
Andre Przywarab9347402019-05-20 14:57:06 +0100404#if ERRATA_N1_1315703
405 mov x0, x18
406 bl errata_n1_1315703_wa
407#endif
408
Dimitris Papastamos89736dd2018-02-13 11:28:02 +0000409#if ENABLE_AMU
410 /* Make sure accesses from EL0/EL1 and EL2 are not trapped to EL3 */
411 mrs x0, actlr_el3
John Tsichritzis56369c12019-02-19 13:49:06 +0000412 orr x0, x0, #NEOVERSE_N1_ACTLR_AMEN_BIT
Dimitris Papastamos89736dd2018-02-13 11:28:02 +0000413 msr actlr_el3, x0
Dimitris Papastamos89736dd2018-02-13 11:28:02 +0000414
415 /* Make sure accesses from EL0/EL1 are not trapped to EL2 */
416 mrs x0, actlr_el2
John Tsichritzis56369c12019-02-19 13:49:06 +0000417 orr x0, x0, #NEOVERSE_N1_ACTLR_AMEN_BIT
Dimitris Papastamos89736dd2018-02-13 11:28:02 +0000418 msr actlr_el2, x0
Dimitris Papastamos89736dd2018-02-13 11:28:02 +0000419
420 /* Enable group0 counters */
John Tsichritzis56369c12019-02-19 13:49:06 +0000421 mov x0, #NEOVERSE_N1_AMU_GROUP0_MASK
Dimitris Papastamos89736dd2018-02-13 11:28:02 +0000422 msr CPUAMCNTENSET_EL0, x0
Dimitris Papastamos89736dd2018-02-13 11:28:02 +0000423#endif
Louis Mayencourt8b8b13b2019-06-10 16:43:39 +0100424
425#if ERRATA_DSU_936184
426 bl errata_dsu_936184_wa
427#endif
428
lauwal01cf12f262019-06-27 11:03:25 -0500429 isb
Dimitris Papastamos7ca21db2018-03-26 16:46:01 +0100430 ret x19
John Tsichritzis56369c12019-02-19 13:49:06 +0000431endfunc neoverse_n1_reset_func
Isla Mitchellea84d6b2017-08-03 16:04:46 +0100432
433 /* ---------------------------------------------
434 * HW will do the cache maintenance while powering down
435 * ---------------------------------------------
436 */
John Tsichritzis56369c12019-02-19 13:49:06 +0000437func neoverse_n1_core_pwr_dwn
Isla Mitchellea84d6b2017-08-03 16:04:46 +0100438 /* ---------------------------------------------
439 * Enable CPU power down bit in power control register
440 * ---------------------------------------------
441 */
John Tsichritzis56369c12019-02-19 13:49:06 +0000442 mrs x0, NEOVERSE_N1_CPUPWRCTLR_EL1
443 orr x0, x0, #NEOVERSE_N1_CORE_PWRDN_EN_MASK
444 msr NEOVERSE_N1_CPUPWRCTLR_EL1, x0
Isla Mitchellea84d6b2017-08-03 16:04:46 +0100445 isb
446 ret
John Tsichritzis56369c12019-02-19 13:49:06 +0000447endfunc neoverse_n1_core_pwr_dwn
Isla Mitchellea84d6b2017-08-03 16:04:46 +0100448
Dimitris Papastamos7ca21db2018-03-26 16:46:01 +0100449#if REPORT_ERRATA
450/*
John Tsichritzis56369c12019-02-19 13:49:06 +0000451 * Errata printing function for Neoverse N1. Must follow AAPCS.
Dimitris Papastamos7ca21db2018-03-26 16:46:01 +0100452 */
John Tsichritzis56369c12019-02-19 13:49:06 +0000453func neoverse_n1_errata_report
Dimitris Papastamos7ca21db2018-03-26 16:46:01 +0100454 stp x8, x30, [sp, #-16]!
455
456 bl cpu_get_rev_var
457 mov x8, x0
458
459 /*
460 * Report all errata. The revision-variant information is passed to
461 * checking functions of each errata.
462 */
John Tsichritzis56369c12019-02-19 13:49:06 +0000463 report_errata ERRATA_N1_1043202, neoverse_n1, 1043202
lauwal01bd555f42019-06-24 11:23:50 -0500464 report_errata ERRATA_N1_1073348, neoverse_n1, 1073348
lauwal01363ee3c2019-06-24 11:28:34 -0500465 report_errata ERRATA_N1_1130799, neoverse_n1, 1130799
lauwal01f2adb132019-06-24 11:32:40 -0500466 report_errata ERRATA_N1_1165347, neoverse_n1, 1165347
lauwal01e1590442019-06-24 11:35:37 -0500467 report_errata ERRATA_N1_1207823, neoverse_n1, 1207823
lauwal01197f14c2019-06-24 11:38:53 -0500468 report_errata ERRATA_N1_1220197, neoverse_n1, 1220197
lauwal0107c2a232019-06-24 11:42:02 -0500469 report_errata ERRATA_N1_1257314, neoverse_n1, 1257314
lauwal0142771af2019-06-24 11:44:58 -0500470 report_errata ERRATA_N1_1262606, neoverse_n1, 1262606
lauwal0100396bf2019-06-24 11:47:30 -0500471 report_errata ERRATA_N1_1262888, neoverse_n1, 1262888
lauwal01644b6ed2019-06-24 11:49:01 -0500472 report_errata ERRATA_N1_1275112, neoverse_n1, 1275112
Andre Przywarab9347402019-05-20 14:57:06 +0100473 report_errata ERRATA_N1_1315703, neoverse_n1, 1315703
Louis Mayencourt8b8b13b2019-06-10 16:43:39 +0100474 report_errata ERRATA_DSU_936184, neoverse_n1, dsu_936184
Dimitris Papastamos7ca21db2018-03-26 16:46:01 +0100475
476 ldp x8, x30, [sp], #16
477 ret
John Tsichritzis56369c12019-02-19 13:49:06 +0000478endfunc neoverse_n1_errata_report
Dimitris Papastamos7ca21db2018-03-26 16:46:01 +0100479#endif
480
Isla Mitchellea84d6b2017-08-03 16:04:46 +0100481 /* ---------------------------------------------
John Tsichritzis56369c12019-02-19 13:49:06 +0000482 * This function provides neoverse_n1 specific
Isla Mitchellea84d6b2017-08-03 16:04:46 +0100483 * register information for crash reporting.
484 * It needs to return with x6 pointing to
485 * a list of register names in ascii and
486 * x8 - x15 having values of registers to be
487 * reported.
488 * ---------------------------------------------
489 */
John Tsichritzis56369c12019-02-19 13:49:06 +0000490.section .rodata.neoverse_n1_regs, "aS"
491neoverse_n1_regs: /* The ascii list of register names to be reported */
Isla Mitchellea84d6b2017-08-03 16:04:46 +0100492 .asciz "cpuectlr_el1", ""
493
John Tsichritzis56369c12019-02-19 13:49:06 +0000494func neoverse_n1_cpu_reg_dump
495 adr x6, neoverse_n1_regs
496 mrs x8, NEOVERSE_N1_CPUECTLR_EL1
Isla Mitchellea84d6b2017-08-03 16:04:46 +0100497 ret
John Tsichritzis56369c12019-02-19 13:49:06 +0000498endfunc neoverse_n1_cpu_reg_dump
Isla Mitchellea84d6b2017-08-03 16:04:46 +0100499
John Tsichritzis56369c12019-02-19 13:49:06 +0000500declare_cpu_ops neoverse_n1, NEOVERSE_N1_MIDR, \
501 neoverse_n1_reset_func, \
502 neoverse_n1_core_pwr_dwn