xref: /rk3399_ARM-atf/lib/cpus/aarch64/neoverse_n2.S (revision a438f434de855d53c86887fdc6bb6e3f8f668faa)
125bbbd2dSJavier Almansa Sobrino/*
2*a438f434SArvind Ram Prakash * Copyright (c) 2020-2023, Arm Limited. All rights reserved.
325bbbd2dSJavier Almansa Sobrino *
425bbbd2dSJavier Almansa Sobrino * SPDX-License-Identifier: BSD-3-Clause
525bbbd2dSJavier Almansa Sobrino */
625bbbd2dSJavier Almansa Sobrino
725bbbd2dSJavier Almansa Sobrino#include <arch.h>
825bbbd2dSJavier Almansa Sobrino#include <asm_macros.S>
925bbbd2dSJavier Almansa Sobrino#include <cpu_macros.S>
1025bbbd2dSJavier Almansa Sobrino#include <neoverse_n2.h>
111fe4a9d1SBipin Ravi#include "wa_cve_2022_23960_bhb_vector.S"
1225bbbd2dSJavier Almansa Sobrino
1325bbbd2dSJavier Almansa Sobrino/* Hardware handled coherency */
1425bbbd2dSJavier Almansa Sobrino#if HW_ASSISTED_COHERENCY == 0
1525bbbd2dSJavier Almansa Sobrino#error "Neoverse N2 must be compiled with HW_ASSISTED_COHERENCY enabled"
1625bbbd2dSJavier Almansa Sobrino#endif
1725bbbd2dSJavier Almansa Sobrino
1825bbbd2dSJavier Almansa Sobrino/* 64-bit only core */
1925bbbd2dSJavier Almansa Sobrino#if CTX_INCLUDE_AARCH32_REGS == 1
2025bbbd2dSJavier Almansa Sobrino#error "Neoverse-N2 supports only AArch64. Compile with CTX_INCLUDE_AARCH32_REGS=0"
2125bbbd2dSJavier Almansa Sobrino#endif
2225bbbd2dSJavier Almansa Sobrino
231fe4a9d1SBipin Ravi#if WORKAROUND_CVE_2022_23960
241fe4a9d1SBipin Ravi	wa_cve_2022_23960_bhb_vector_table NEOVERSE_N2_BHB_LOOP_COUNT, neoverse_n2
251fe4a9d1SBipin Ravi#endif /* WORKAROUND_CVE_2022_23960 */
261fe4a9d1SBipin Ravi
279380f754Snayanpatel-arm/* --------------------------------------------------
289380f754Snayanpatel-arm * Errata Workaround for Neoverse N2 Erratum 2002655.
299380f754Snayanpatel-arm * This applies to revision r0p0 of Neoverse N2. it is still open.
309380f754Snayanpatel-arm * Inputs:
319380f754Snayanpatel-arm * x0: variant[4:7] and revision[0:3] of current cpu.
329380f754Snayanpatel-arm * Shall clobber: x0-x17
339380f754Snayanpatel-arm * --------------------------------------------------
349380f754Snayanpatel-arm */
359380f754Snayanpatel-armfunc errata_n2_2002655_wa
369380f754Snayanpatel-arm	/* Check revision. */
379380f754Snayanpatel-arm	mov	x17, x30
389380f754Snayanpatel-arm	bl	check_errata_2002655
399380f754Snayanpatel-arm	cbz	x0, 1f
409380f754Snayanpatel-arm
419380f754Snayanpatel-arm	/* Apply instruction patching sequence */
429380f754Snayanpatel-arm	ldr x0,=0x6
439380f754Snayanpatel-arm	msr S3_6_c15_c8_0,x0
449380f754Snayanpatel-arm	ldr x0,=0xF3A08002
459380f754Snayanpatel-arm	msr S3_6_c15_c8_2,x0
469380f754Snayanpatel-arm	ldr x0,=0xFFF0F7FE
479380f754Snayanpatel-arm	msr S3_6_c15_c8_3,x0
489380f754Snayanpatel-arm	ldr x0,=0x40000001003ff
499380f754Snayanpatel-arm	msr S3_6_c15_c8_1,x0
509380f754Snayanpatel-arm	ldr x0,=0x7
519380f754Snayanpatel-arm	msr S3_6_c15_c8_0,x0
529380f754Snayanpatel-arm	ldr x0,=0xBF200000
539380f754Snayanpatel-arm	msr S3_6_c15_c8_2,x0
549380f754Snayanpatel-arm	ldr x0,=0xFFEF0000
559380f754Snayanpatel-arm	msr S3_6_c15_c8_3,x0
569380f754Snayanpatel-arm	ldr x0,=0x40000001003f3
579380f754Snayanpatel-arm	msr S3_6_c15_c8_1,x0
589380f754Snayanpatel-arm	isb
599380f754Snayanpatel-arm1:
609380f754Snayanpatel-arm	ret	x17
619380f754Snayanpatel-armendfunc errata_n2_2002655_wa
629380f754Snayanpatel-arm
639380f754Snayanpatel-armfunc check_errata_2002655
649380f754Snayanpatel-arm	/* Applies to r0p0 */
659380f754Snayanpatel-arm	mov	x1, #0x00
669380f754Snayanpatel-arm	b	cpu_rev_var_ls
679380f754Snayanpatel-armendfunc check_errata_2002655
689380f754Snayanpatel-arm
6965e04f27SBipin Ravi/* ---------------------------------------------------------------
704618b2bfSBipin Ravi * Errata Workaround for Neoverse N2 Erratum 2025414.
714618b2bfSBipin Ravi * This applies to revision r0p0 of Neoverse N2 and is still open.
724618b2bfSBipin Ravi * Inputs:
734618b2bfSBipin Ravi * x0: variant[4:7] and revision[0:3] of current cpu.
744618b2bfSBipin Ravi * Shall clobber: x0-x17
754618b2bfSBipin Ravi * ---------------------------------------------------------------
764618b2bfSBipin Ravi */
774618b2bfSBipin Ravifunc errata_n2_2025414_wa
784618b2bfSBipin Ravi	/* Compare x0 against revision r0p0 */
794618b2bfSBipin Ravi	mov     x17, x30
804618b2bfSBipin Ravi	bl      check_errata_2025414
814618b2bfSBipin Ravi	cbz     x0, 1f
824618b2bfSBipin Ravi	mrs     x1, NEOVERSE_N2_CPUECTLR_EL1
834618b2bfSBipin Ravi	orr     x1, x1, NEOVERSE_N2_CPUECTLR_EL1_PFSTIDIS_BIT
844618b2bfSBipin Ravi	msr     NEOVERSE_N2_CPUECTLR_EL1, x1
854618b2bfSBipin Ravi
864618b2bfSBipin Ravi1:
874618b2bfSBipin Ravi	ret     x17
884618b2bfSBipin Raviendfunc errata_n2_2025414_wa
894618b2bfSBipin Ravi
904618b2bfSBipin Ravifunc check_errata_2025414
914618b2bfSBipin Ravi	/* Applies to r0p0 */
924618b2bfSBipin Ravi	mov     x1, #0x00
934618b2bfSBipin Ravi	b       cpu_rev_var_ls
944618b2bfSBipin Raviendfunc check_errata_2025414
954618b2bfSBipin Ravi
967cfae932SBipin Ravi/* ---------------------------------------------------------------
97*a438f434SArvind Ram Prakash * Errata Workaround for Neoverse N2 Erratum 2067956.
987cfae932SBipin Ravi * This applies to revision r0p0 of Neoverse N2 and is still open.
997cfae932SBipin Ravi * Inputs:
1007cfae932SBipin Ravi * x0: variant[4:7] and revision[0:3] of current cpu.
1017cfae932SBipin Ravi * Shall clobber: x0-x17
1027cfae932SBipin Ravi * ---------------------------------------------------------------
1037cfae932SBipin Ravi */
104*a438f434SArvind Ram Prakashfunc errata_n2_2067956_wa
1057cfae932SBipin Ravi	/* Compare x0 against revision r0p0 */
1067cfae932SBipin Ravi	mov	x17, x30
107*a438f434SArvind Ram Prakash	bl	check_errata_2067956
1087cfae932SBipin Ravi	cbz	x0, 1f
109*a438f434SArvind Ram Prakash	mrs	x1, NEOVERSE_N2_CPUACTLR_EL1
110*a438f434SArvind Ram Prakash	orr	x1, x1, NEOVERSE_N2_CPUACTLR_EL1_BIT_46
111*a438f434SArvind Ram Prakash	msr	NEOVERSE_N2_CPUACTLR_EL1, x1
1127cfae932SBipin Ravi1:
1137cfae932SBipin Ravi	ret	x17
114*a438f434SArvind Ram Prakashendfunc errata_n2_2067956_wa
1157cfae932SBipin Ravi
116*a438f434SArvind Ram Prakashfunc check_errata_2067956
1177cfae932SBipin Ravi	/* Applies to r0p0 */
1187cfae932SBipin Ravi	mov	x1, #0x00
1197cfae932SBipin Ravi	b	cpu_rev_var_ls
120*a438f434SArvind Ram Prakashendfunc check_errata_2067956
121*a438f434SArvind Ram Prakash
122*a438f434SArvind Ram Prakash/* --------------------------------------------------
123*a438f434SArvind Ram Prakash * Errata Workaround for Neoverse N2 Erratum 2138953.
124*a438f434SArvind Ram Prakash * This applies to revision r0p0 of Neoverse N2. it is still open.
125*a438f434SArvind Ram Prakash * Inputs:
126*a438f434SArvind Ram Prakash * x0: variant[4:7] and revision[0:3] of current cpu.
127*a438f434SArvind Ram Prakash * Shall clobber: x0-x1, x17
128*a438f434SArvind Ram Prakash * --------------------------------------------------
129*a438f434SArvind Ram Prakash */
130*a438f434SArvind Ram Prakashfunc errata_n2_2138953_wa
131*a438f434SArvind Ram Prakash	/* Check revision. */
132*a438f434SArvind Ram Prakash	mov	x17, x30
133*a438f434SArvind Ram Prakash	bl	check_errata_2138953
134*a438f434SArvind Ram Prakash	cbz	x0, 1f
135*a438f434SArvind Ram Prakash
136*a438f434SArvind Ram Prakash	/* Apply instruction patching sequence */
137*a438f434SArvind Ram Prakash	mrs	x1, NEOVERSE_N2_CPUECTLR2_EL1
138*a438f434SArvind Ram Prakash	mov	x0, #NEOVERSE_N2_CPUECTLR2_EL1_PF_MODE_CNSRV
139*a438f434SArvind Ram Prakash	bfi	x1, x0, #CPUECTLR2_EL1_PF_MODE_LSB, #CPUECTLR2_EL1_PF_MODE_WIDTH
140*a438f434SArvind Ram Prakash	msr	NEOVERSE_N2_CPUECTLR2_EL1, x1
141*a438f434SArvind Ram Prakash1:
142*a438f434SArvind Ram Prakash	ret	x17
143*a438f434SArvind Ram Prakashendfunc errata_n2_2138953_wa
144*a438f434SArvind Ram Prakash
145*a438f434SArvind Ram Prakashfunc check_errata_2138953
146*a438f434SArvind Ram Prakash	/* Applies to r0p0 */
147*a438f434SArvind Ram Prakash	mov	x1, #0x00
148*a438f434SArvind Ram Prakash	b	cpu_rev_var_ls
149*a438f434SArvind Ram Prakashendfunc check_errata_2138953
1507cfae932SBipin Ravi
1511cafb08dSBipin Ravi/* --------------------------------------------------
1521cafb08dSBipin Ravi * Errata Workaround for Neoverse N2 Erratum 2138956.
1531cafb08dSBipin Ravi * This applies to revision r0p0 of Neoverse N2. it is still open.
1541cafb08dSBipin Ravi * Inputs:
1551cafb08dSBipin Ravi * x0: variant[4:7] and revision[0:3] of current cpu.
1561cafb08dSBipin Ravi * Shall clobber: x0-x17
1571cafb08dSBipin Ravi * --------------------------------------------------
1581cafb08dSBipin Ravi */
1591cafb08dSBipin Ravifunc errata_n2_2138956_wa
1601cafb08dSBipin Ravi	/* Check revision. */
1611cafb08dSBipin Ravi	mov	x17, x30
1621cafb08dSBipin Ravi	bl	check_errata_2138956
1631cafb08dSBipin Ravi	cbz	x0, 1f
1641cafb08dSBipin Ravi
1651cafb08dSBipin Ravi	/* Apply instruction patching sequence */
1661cafb08dSBipin Ravi	ldr	x0,=0x3
1671cafb08dSBipin Ravi	msr	S3_6_c15_c8_0,x0
1681cafb08dSBipin Ravi	ldr	x0,=0xF3A08002
1691cafb08dSBipin Ravi	msr	S3_6_c15_c8_2,x0
1701cafb08dSBipin Ravi	ldr	x0,=0xFFF0F7FE
1711cafb08dSBipin Ravi	msr	S3_6_c15_c8_3,x0
1721cafb08dSBipin Ravi	ldr	x0,=0x10002001003FF
1731cafb08dSBipin Ravi	msr	S3_6_c15_c8_1,x0
1741cafb08dSBipin Ravi	ldr	x0,=0x4
1751cafb08dSBipin Ravi	msr	S3_6_c15_c8_0,x0
1761cafb08dSBipin Ravi	ldr	x0,=0xBF200000
1771cafb08dSBipin Ravi	msr	S3_6_c15_c8_2,x0
1781cafb08dSBipin Ravi	ldr	x0,=0xFFEF0000
1791cafb08dSBipin Ravi	msr	S3_6_c15_c8_3,x0
1801cafb08dSBipin Ravi	ldr	x0,=0x10002001003F3
1811cafb08dSBipin Ravi	msr	S3_6_c15_c8_1,x0
1821cafb08dSBipin Ravi	isb
1831cafb08dSBipin Ravi1:
1841cafb08dSBipin Ravi	ret	x17
1851cafb08dSBipin Raviendfunc errata_n2_2138956_wa
1861cafb08dSBipin Ravi
1871cafb08dSBipin Ravifunc check_errata_2138956
1881cafb08dSBipin Ravi	/* Applies to r0p0 */
1891cafb08dSBipin Ravi	mov	x1, #0x00
1901cafb08dSBipin Ravi	b	cpu_rev_var_ls
1911cafb08dSBipin Raviendfunc check_errata_2138956
1921cafb08dSBipin Ravi
193ef8f0c52Snayanpatel-arm/* --------------------------------------------------
194c948185cSnayanpatel-arm * Errata Workaround for Neoverse N2 Erratum 2138958.
195c948185cSnayanpatel-arm * This applies to revision r0p0 of Neoverse N2. it is still open.
196c948185cSnayanpatel-arm * Inputs:
197c948185cSnayanpatel-arm * x0: variant[4:7] and revision[0:3] of current cpu.
198c948185cSnayanpatel-arm * Shall clobber: x0-x1, x17
199c948185cSnayanpatel-arm * --------------------------------------------------
200c948185cSnayanpatel-arm */
201c948185cSnayanpatel-armfunc errata_n2_2138958_wa
202c948185cSnayanpatel-arm	/* Check revision. */
203c948185cSnayanpatel-arm	mov	x17, x30
204c948185cSnayanpatel-arm	bl	check_errata_2138958
205c948185cSnayanpatel-arm	cbz	x0, 1f
206c948185cSnayanpatel-arm
207c948185cSnayanpatel-arm	/* Apply instruction patching sequence */
208c948185cSnayanpatel-arm	mrs	x1, NEOVERSE_N2_CPUACTLR5_EL1
209c948185cSnayanpatel-arm	orr	x1, x1, NEOVERSE_N2_CPUACTLR5_EL1_BIT_13
210c948185cSnayanpatel-arm	msr	NEOVERSE_N2_CPUACTLR5_EL1, x1
211c948185cSnayanpatel-arm1:
212c948185cSnayanpatel-arm	ret	x17
213c948185cSnayanpatel-armendfunc errata_n2_2138958_wa
214c948185cSnayanpatel-arm
215c948185cSnayanpatel-armfunc check_errata_2138958
216c948185cSnayanpatel-arm	/* Applies to r0p0 */
217c948185cSnayanpatel-arm	mov	x1, #0x00
218c948185cSnayanpatel-arm	b	cpu_rev_var_ls
219c948185cSnayanpatel-armendfunc check_errata_2138958
220c948185cSnayanpatel-arm
221*a438f434SArvind Ram Prakash/* ---------------------------------------------------------------
222*a438f434SArvind Ram Prakash * Errata Workaround for Neoverse N2 Erratum 2189731.
223*a438f434SArvind Ram Prakash * This applies to revision r0p0 of Neoverse N2 and is still open.
224*a438f434SArvind Ram Prakash * Inputs:
225*a438f434SArvind Ram Prakash * x0: variant[4:7] and revision[0:3] of current cpu.
226*a438f434SArvind Ram Prakash * Shall clobber: x0-x17
227*a438f434SArvind Ram Prakash * ---------------------------------------------------------------
228*a438f434SArvind Ram Prakash */
229*a438f434SArvind Ram Prakashfunc errata_n2_2189731_wa
230*a438f434SArvind Ram Prakash	/* Compare x0 against revision r0p0 */
231*a438f434SArvind Ram Prakash	mov     x17, x30
232*a438f434SArvind Ram Prakash	bl      check_errata_2189731
233*a438f434SArvind Ram Prakash	cbz     x0, 1f
234*a438f434SArvind Ram Prakash	mrs     x1, NEOVERSE_N2_CPUACTLR5_EL1
235*a438f434SArvind Ram Prakash	orr     x1, x1, NEOVERSE_N2_CPUACTLR5_EL1_BIT_44
236*a438f434SArvind Ram Prakash	msr     NEOVERSE_N2_CPUACTLR5_EL1, x1
237*a438f434SArvind Ram Prakash
238*a438f434SArvind Ram Prakash1:
239*a438f434SArvind Ram Prakash	ret     x17
240*a438f434SArvind Ram Prakashendfunc errata_n2_2189731_wa
241*a438f434SArvind Ram Prakash
242*a438f434SArvind Ram Prakashfunc check_errata_2189731
243*a438f434SArvind Ram Prakash	/* Applies to r0p0 */
244*a438f434SArvind Ram Prakash	mov     x1, #0x00
245*a438f434SArvind Ram Prakash	b       cpu_rev_var_ls
246*a438f434SArvind Ram Prakashendfunc check_errata_2189731
247*a438f434SArvind Ram Prakash
248603806d1Snayanpatel-arm/* --------------------------------------------------
249603806d1Snayanpatel-arm * Errata Workaround for Neoverse N2 Erratum 2242400.
250603806d1Snayanpatel-arm * This applies to revision r0p0 of Neoverse N2. it is still open.
251603806d1Snayanpatel-arm * Inputs:
252603806d1Snayanpatel-arm * x0: variant[4:7] and revision[0:3] of current cpu.
253603806d1Snayanpatel-arm * Shall clobber: x0-x1, x17
254603806d1Snayanpatel-arm * --------------------------------------------------
255603806d1Snayanpatel-arm */
256603806d1Snayanpatel-armfunc errata_n2_2242400_wa
257603806d1Snayanpatel-arm	/* Check revision. */
258603806d1Snayanpatel-arm	mov	x17, x30
259603806d1Snayanpatel-arm	bl	check_errata_2242400
260603806d1Snayanpatel-arm	cbz	x0, 1f
261603806d1Snayanpatel-arm
262603806d1Snayanpatel-arm	/* Apply instruction patching sequence */
263603806d1Snayanpatel-arm	mrs	x1, NEOVERSE_N2_CPUACTLR5_EL1
264603806d1Snayanpatel-arm	orr	x1, x1, NEOVERSE_N2_CPUACTLR5_EL1_BIT_17
265603806d1Snayanpatel-arm	msr	NEOVERSE_N2_CPUACTLR5_EL1, x1
266603806d1Snayanpatel-arm	ldr	x0, =0x2
267603806d1Snayanpatel-arm	msr	S3_6_c15_c8_0, x0
268603806d1Snayanpatel-arm	ldr	x0, =0x10F600E000
269603806d1Snayanpatel-arm	msr	S3_6_c15_c8_2, x0
270603806d1Snayanpatel-arm	ldr	x0, =0x10FF80E000
271603806d1Snayanpatel-arm	msr	S3_6_c15_c8_3, x0
272603806d1Snayanpatel-arm	ldr	x0, =0x80000000003FF
273603806d1Snayanpatel-arm	msr	S3_6_c15_c8_1, x0
274603806d1Snayanpatel-arm	isb
275603806d1Snayanpatel-arm1:
276603806d1Snayanpatel-arm	ret	x17
277603806d1Snayanpatel-armendfunc errata_n2_2242400_wa
278603806d1Snayanpatel-arm
279603806d1Snayanpatel-armfunc check_errata_2242400
280603806d1Snayanpatel-arm	/* Applies to r0p0 */
281603806d1Snayanpatel-arm	mov	x1, #0x00
282603806d1Snayanpatel-arm	b	cpu_rev_var_ls
283603806d1Snayanpatel-armendfunc check_errata_2242400
284603806d1Snayanpatel-arm
2850d2d9992Snayanpatel-arm/* --------------------------------------------------
286*a438f434SArvind Ram Prakash * Errata Workaround for Neoverse N2 Erratum 2242415.
287*a438f434SArvind Ram Prakash * This applies to revision r0p0 of Neoverse N2. it is still open.
288*a438f434SArvind Ram Prakash * Inputs:
289*a438f434SArvind Ram Prakash * x0: variant[4:7] and revision[0:3] of current cpu.
290*a438f434SArvind Ram Prakash * Shall clobber: x0-x1, x17
291*a438f434SArvind Ram Prakash * --------------------------------------------------
292*a438f434SArvind Ram Prakash */
293*a438f434SArvind Ram Prakashfunc errata_n2_2242415_wa
294*a438f434SArvind Ram Prakash	/* Check revision. */
295*a438f434SArvind Ram Prakash	mov	x17, x30
296*a438f434SArvind Ram Prakash	bl	check_errata_2242415
297*a438f434SArvind Ram Prakash	cbz	x0, 1f
298*a438f434SArvind Ram Prakash
299*a438f434SArvind Ram Prakash	/* Apply instruction patching sequence */
300*a438f434SArvind Ram Prakash	mrs	x1, NEOVERSE_N2_CPUACTLR_EL1
301*a438f434SArvind Ram Prakash	orr	x1, x1, NEOVERSE_N2_CPUACTLR_EL1_BIT_22
302*a438f434SArvind Ram Prakash	msr	NEOVERSE_N2_CPUACTLR_EL1, x1
303*a438f434SArvind Ram Prakash1:
304*a438f434SArvind Ram Prakash	ret	x17
305*a438f434SArvind Ram Prakashendfunc errata_n2_2242415_wa
306*a438f434SArvind Ram Prakash
307*a438f434SArvind Ram Prakashfunc check_errata_2242415
308*a438f434SArvind Ram Prakash	/* Applies to r0p0 */
309*a438f434SArvind Ram Prakash	mov	x1, #0x00
310*a438f434SArvind Ram Prakash	b	cpu_rev_var_ls
311*a438f434SArvind Ram Prakashendfunc check_errata_2242415
312*a438f434SArvind Ram Prakash
313*a438f434SArvind Ram Prakash/* --------------------------------------------------
3140d2d9992Snayanpatel-arm * Errata Workaround for Neoverse N2 Erratum 2280757.
3150d2d9992Snayanpatel-arm * This applies to revision r0p0 of Neoverse N2. it is still open.
3160d2d9992Snayanpatel-arm * Inputs:
3170d2d9992Snayanpatel-arm * x0: variant[4:7] and revision[0:3] of current cpu.
3180d2d9992Snayanpatel-arm * Shall clobber: x0-x1, x17
3190d2d9992Snayanpatel-arm * --------------------------------------------------
3200d2d9992Snayanpatel-arm */
3210d2d9992Snayanpatel-armfunc errata_n2_2280757_wa
3220d2d9992Snayanpatel-arm	/* Check revision. */
3230d2d9992Snayanpatel-arm	mov	x17, x30
3240d2d9992Snayanpatel-arm	bl	check_errata_2280757
3250d2d9992Snayanpatel-arm	cbz	x0, 1f
3260d2d9992Snayanpatel-arm
3270d2d9992Snayanpatel-arm	/* Apply instruction patching sequence */
3280d2d9992Snayanpatel-arm	mrs	x1, NEOVERSE_N2_CPUACTLR_EL1
3290d2d9992Snayanpatel-arm	orr	x1, x1, NEOVERSE_N2_CPUACTLR_EL1_BIT_22
3300d2d9992Snayanpatel-arm	msr	NEOVERSE_N2_CPUACTLR_EL1, x1
3310d2d9992Snayanpatel-arm1:
3320d2d9992Snayanpatel-arm	ret	x17
3330d2d9992Snayanpatel-armendfunc errata_n2_2280757_wa
3340d2d9992Snayanpatel-arm
3350d2d9992Snayanpatel-armfunc check_errata_2280757
3360d2d9992Snayanpatel-arm	/* Applies to r0p0 */
3370d2d9992Snayanpatel-arm	mov	x1, #0x00
3380d2d9992Snayanpatel-arm	b	cpu_rev_var_ls
3390d2d9992Snayanpatel-armendfunc check_errata_2280757
3400d2d9992Snayanpatel-arm
34143438ad1SBoyan Karatotev/* --------------------------------------------------
34243438ad1SBoyan Karatotev * Errata Workaround for Neoverse N2 Erratum 2326639.
34343438ad1SBoyan Karatotev * This applies to revision r0p0 of Neoverse N2,
34443438ad1SBoyan Karatotev * fixed in r0p1.
34543438ad1SBoyan Karatotev * Inputs:
34643438ad1SBoyan Karatotev * x0: variant[4:7] and revision[0:3] of current cpu.
34743438ad1SBoyan Karatotev * Shall clobber: x0-x1, x17
34843438ad1SBoyan Karatotev * --------------------------------------------------
34943438ad1SBoyan Karatotev */
35043438ad1SBoyan Karatotevfunc errata_n2_2326639_wa
35143438ad1SBoyan Karatotev	/* Check revision. */
35243438ad1SBoyan Karatotev	mov	x17, x30
35343438ad1SBoyan Karatotev	bl	check_errata_2326639
35443438ad1SBoyan Karatotev	cbz	x0, 1f
35543438ad1SBoyan Karatotev
35643438ad1SBoyan Karatotev	/* Set bit 36 in ACTLR2_EL1 */
35743438ad1SBoyan Karatotev	mrs	x1, NEOVERSE_N2_CPUACTLR2_EL1
35843438ad1SBoyan Karatotev	orr	x1, x1, #NEOVERSE_N2_CPUACTLR2_EL1_BIT_36
35943438ad1SBoyan Karatotev	msr	NEOVERSE_N2_CPUACTLR2_EL1, x1
36043438ad1SBoyan Karatotev1:
36143438ad1SBoyan Karatotev	ret	x17
36243438ad1SBoyan Karatotevendfunc errata_n2_2326639_wa
36343438ad1SBoyan Karatotev
36443438ad1SBoyan Karatotevfunc check_errata_2326639
36543438ad1SBoyan Karatotev	/* Applies to r0p0, fixed in r0p1 */
36643438ad1SBoyan Karatotev	mov	x1, #0x00
36743438ad1SBoyan Karatotev	b	cpu_rev_var_ls
36843438ad1SBoyan Karatotevendfunc check_errata_2326639
369e6602d4bSAkram Ahmad
370e6602d4bSAkram Ahmad/* --------------------------------------------------
371e6602d4bSAkram Ahmad * Errata Workaround for Neoverse N2 Erratum 2376738.
372e6602d4bSAkram Ahmad * This applies to revision r0p0 of Neoverse N2,
373e6602d4bSAkram Ahmad * fixed in r0p1.
374e6602d4bSAkram Ahmad * Inputs:
375e6602d4bSAkram Ahmad * x0: variant[4:7] and revision[0:3] of current CPU.
376e6602d4bSAkram Ahmad * Shall clobber: x0-x1, x17
377e6602d4bSAkram Ahmad * --------------------------------------------------
378e6602d4bSAkram Ahmad */
379e6602d4bSAkram Ahmadfunc errata_n2_2376738_wa
380e6602d4bSAkram Ahmad	mov	x17, x30
381e6602d4bSAkram Ahmad	bl	check_errata_2376738
382e6602d4bSAkram Ahmad	cbz	x0, 1f
383e6602d4bSAkram Ahmad
384e6602d4bSAkram Ahmad	/* Set CPUACTLR2_EL1[0] to 1 to force PLDW/PFRM
385e6602d4bSAkram Ahmad	 * ST to behave like PLD/PFRM LD and not cause
386e6602d4bSAkram Ahmad	 * invalidations to other PE caches.
387e6602d4bSAkram Ahmad	 */
388e6602d4bSAkram Ahmad	mrs	x1, NEOVERSE_N2_CPUACTLR2_EL1
389e6602d4bSAkram Ahmad	orr	x1, x1,	NEOVERSE_N2_CPUACTLR2_EL1_BIT_0
390e6602d4bSAkram Ahmad	msr	NEOVERSE_N2_CPUACTLR2_EL1, x1
391e6602d4bSAkram Ahmad1:
392e6602d4bSAkram Ahmad	ret x17
393e6602d4bSAkram Ahmadendfunc errata_n2_2376738_wa
394e6602d4bSAkram Ahmad
395e6602d4bSAkram Ahmadfunc check_errata_2376738
396e6602d4bSAkram Ahmad	/* Applies to r0p0, fixed in r0p1 */
397e6602d4bSAkram Ahmad	mov	x1, 0x00
398e6602d4bSAkram Ahmad	b	cpu_rev_var_ls
399e6602d4bSAkram Ahmadendfunc check_errata_2376738
400e6602d4bSAkram Ahmad
401884d5156SDaniel Boulby/* --------------------------------------------------
402884d5156SDaniel Boulby * Errata Workaround for Neoverse N2 Erratum 2388450.
403884d5156SDaniel Boulby * This applies to revision r0p0 of Neoverse N2,
404884d5156SDaniel Boulby * fixed in r0p1.
405884d5156SDaniel Boulby * Inputs:
406884d5156SDaniel Boulby * x0: variant[4:7] and revision[0:3] of current cpu.
407884d5156SDaniel Boulby * Shall clobber: x0-x1, x17
408884d5156SDaniel Boulby * --------------------------------------------------
409884d5156SDaniel Boulby */
410884d5156SDaniel Boulbyfunc errata_n2_2388450_wa
411884d5156SDaniel Boulby	/* Check revision. */
412884d5156SDaniel Boulby	mov	x17, x30
413884d5156SDaniel Boulby	bl	check_errata_2388450
414884d5156SDaniel Boulby	cbz	x0, 1f
415884d5156SDaniel Boulby
416884d5156SDaniel Boulby	/*Set bit 40 in ACTLR2_EL1 */
417884d5156SDaniel Boulby	mrs	x1, NEOVERSE_N2_CPUACTLR2_EL1
418884d5156SDaniel Boulby	orr	x1, x1, #NEOVERSE_N2_CPUACTLR2_EL1_BIT_40
419884d5156SDaniel Boulby	msr	NEOVERSE_N2_CPUACTLR2_EL1, x1
420884d5156SDaniel Boulby	isb
421884d5156SDaniel Boulby1:
422884d5156SDaniel Boulby	ret	x17
423884d5156SDaniel Boulbyendfunc errata_n2_2388450_wa
424884d5156SDaniel Boulby
425884d5156SDaniel Boulbyfunc check_errata_2388450
426884d5156SDaniel Boulby	/* Applies to r0p0, fixed in r0p1 */
427884d5156SDaniel Boulby	mov	x1, #0x00
428884d5156SDaniel Boulby	b	cpu_rev_var_ls
429884d5156SDaniel Boulbyendfunc check_errata_2388450
430884d5156SDaniel Boulby
4311ee7c823SBipin Ravi/* -------------------------------------------------------
4321ee7c823SBipin Ravi * Errata Workaround for Neoverse N2 Erratum 2743089.
4331ee7c823SBipin Ravi * This applies to revisions <= r0p2 and is fixed in r0p3.
4341ee7c823SBipin Ravi * x0: variant[4:7] and revision[0:3] of current cpu.
4351ee7c823SBipin Ravi * Shall clobber: x0-x17
4361ee7c823SBipin Ravi * -------------------------------------------------------
4371ee7c823SBipin Ravi */
4381ee7c823SBipin Ravifunc errata_n2_2743089_wa
4391ee7c823SBipin Ravi	mov	x17, x30
4401ee7c823SBipin Ravi	bl	check_errata_2743089
4411ee7c823SBipin Ravi	cbz	x0, 1f
4421ee7c823SBipin Ravi
4431ee7c823SBipin Ravi	/* dsb before isb of power down sequence */
4441ee7c823SBipin Ravi	dsb	sy
4451ee7c823SBipin Ravi1:
4461ee7c823SBipin Ravi	ret	x17
4471ee7c823SBipin Raviendfunc errata_n2_2743089_wa
4481ee7c823SBipin Ravi
4491ee7c823SBipin Ravifunc check_errata_2743089
4501ee7c823SBipin Ravi	/* Applies to all revisions <= r0p2 */
4511ee7c823SBipin Ravi	mov	x1, #0x02
4521ee7c823SBipin Ravi	b	cpu_rev_var_ls
4531ee7c823SBipin Raviendfunc check_errata_2743089
4541ee7c823SBipin Ravi
4551fe4a9d1SBipin Ravifunc check_errata_cve_2022_23960
4561fe4a9d1SBipin Ravi#if WORKAROUND_CVE_2022_23960
4571fe4a9d1SBipin Ravi	mov	x0, #ERRATA_APPLIES
4581fe4a9d1SBipin Ravi#else
4591fe4a9d1SBipin Ravi	mov	x0, #ERRATA_MISSING
4601fe4a9d1SBipin Ravi#endif
4611fe4a9d1SBipin Ravi	ret
4621fe4a9d1SBipin Raviendfunc check_errata_cve_2022_23960
4631fe4a9d1SBipin Ravi
4644618b2bfSBipin Ravi	/* -------------------------------------------
46525bbbd2dSJavier Almansa Sobrino	 * The CPU Ops reset function for Neoverse N2.
4664618b2bfSBipin Ravi	 * -------------------------------------------
46725bbbd2dSJavier Almansa Sobrino	 */
46825bbbd2dSJavier Almansa Sobrinofunc neoverse_n2_reset_func
4699380f754Snayanpatel-arm	mov	x19, x30
4709380f754Snayanpatel-arm
47125bbbd2dSJavier Almansa Sobrino	/* Check if the PE implements SSBS */
47225bbbd2dSJavier Almansa Sobrino	mrs	x0, id_aa64pfr1_el1
47325bbbd2dSJavier Almansa Sobrino	tst	x0, #(ID_AA64PFR1_EL1_SSBS_MASK << ID_AA64PFR1_EL1_SSBS_SHIFT)
47425bbbd2dSJavier Almansa Sobrino	b.eq	1f
47525bbbd2dSJavier Almansa Sobrino
47625bbbd2dSJavier Almansa Sobrino	/* Disable speculative loads */
47725bbbd2dSJavier Almansa Sobrino	msr	SSBS, xzr
47825bbbd2dSJavier Almansa Sobrino1:
47925bbbd2dSJavier Almansa Sobrino	/* Force all cacheable atomic instructions to be near */
48025bbbd2dSJavier Almansa Sobrino	mrs	x0, NEOVERSE_N2_CPUACTLR2_EL1
48125bbbd2dSJavier Almansa Sobrino	orr	x0, x0, #NEOVERSE_N2_CPUACTLR2_EL1_BIT_2
48225bbbd2dSJavier Almansa Sobrino	msr	NEOVERSE_N2_CPUACTLR2_EL1, x0
48325bbbd2dSJavier Almansa Sobrino
48403ebf409SBipin Ravi	/* Get the CPU revision and stash it in x18. */
48503ebf409SBipin Ravi	bl	cpu_get_rev_var
48603ebf409SBipin Ravi	mov	x18, x0
48703ebf409SBipin Ravi
4887e3273e8SBipin Ravi#if ERRATA_DSU_2313941
4897e3273e8SBipin Ravi	bl	errata_dsu_2313941_wa
4907e3273e8SBipin Ravi#endif
4917e3273e8SBipin Ravi
49265e04f27SBipin Ravi#if ERRATA_N2_2067956
49365e04f27SBipin Ravi	mov	x0, x18
49465e04f27SBipin Ravi	bl	errata_n2_2067956_wa
49565e04f27SBipin Ravi#endif
49665e04f27SBipin Ravi
4974618b2bfSBipin Ravi#if ERRATA_N2_2025414
4984618b2bfSBipin Ravi	mov	x0, x18
4994618b2bfSBipin Ravi	bl	errata_n2_2025414_wa
5004618b2bfSBipin Ravi#endif
5014618b2bfSBipin Ravi
5027cfae932SBipin Ravi#if ERRATA_N2_2189731
5037cfae932SBipin Ravi	mov	x0, x18
5047cfae932SBipin Ravi	bl	errata_n2_2189731_wa
5057cfae932SBipin Ravi#endif
5067cfae932SBipin Ravi
5071cafb08dSBipin Ravi#if ERRATA_N2_2138956
5081cafb08dSBipin Ravi	mov	x0, x18
5091cafb08dSBipin Ravi	bl	errata_n2_2138956_wa
5101cafb08dSBipin Ravi#endif
5111cafb08dSBipin Ravi
512ef8f0c52Snayanpatel-arm#if ERRATA_N2_2138953
513ef8f0c52Snayanpatel-arm	mov	x0, x18
514ef8f0c52Snayanpatel-arm	bl	errata_n2_2138953_wa
515ef8f0c52Snayanpatel-arm#endif
516ef8f0c52Snayanpatel-arm
5175819e23bSnayanpatel-arm#if ERRATA_N2_2242415
5185819e23bSnayanpatel-arm	mov	x0, x18
5195819e23bSnayanpatel-arm	bl	errata_n2_2242415_wa
5205819e23bSnayanpatel-arm#endif
5215819e23bSnayanpatel-arm
522c948185cSnayanpatel-arm#if ERRATA_N2_2138958
523c948185cSnayanpatel-arm	mov	x0, x18
524c948185cSnayanpatel-arm	bl	errata_n2_2138958_wa
525c948185cSnayanpatel-arm#endif
526c948185cSnayanpatel-arm
527603806d1Snayanpatel-arm#if ERRATA_N2_2242400
528603806d1Snayanpatel-arm	mov	x0, x18
529603806d1Snayanpatel-arm	bl	errata_n2_2242400_wa
530603806d1Snayanpatel-arm#endif
531603806d1Snayanpatel-arm
5320d2d9992Snayanpatel-arm#if ERRATA_N2_2280757
5330d2d9992Snayanpatel-arm	mov	x0, x18
5340d2d9992Snayanpatel-arm	bl	errata_n2_2280757_wa
5350d2d9992Snayanpatel-arm#endif
5360d2d9992Snayanpatel-arm
537e6602d4bSAkram Ahmad#if ERRATA_N2_2376738
538e6602d4bSAkram Ahmad	mov	x0, x18
539e6602d4bSAkram Ahmad	bl	errata_n2_2376738_wa
540e6602d4bSAkram Ahmad#endif
541e6602d4bSAkram Ahmad
542884d5156SDaniel Boulby#if ERRATA_N2_2388450
543884d5156SDaniel Boulby	mov	x0, x18
544884d5156SDaniel Boulby	bl	errata_n2_2388450_wa
545884d5156SDaniel Boulby#endif
546884d5156SDaniel Boulby
547d23acc9eSAndre Przywara#if ENABLE_FEAT_AMU
54825bbbd2dSJavier Almansa Sobrino	/* Make sure accesses from EL0/EL1 and EL2 are not trapped to EL3 */
54925bbbd2dSJavier Almansa Sobrino	mrs	x0, cptr_el3
55025bbbd2dSJavier Almansa Sobrino	orr	x0, x0, #TAM_BIT
55125bbbd2dSJavier Almansa Sobrino	msr	cptr_el3, x0
55225bbbd2dSJavier Almansa Sobrino
55325bbbd2dSJavier Almansa Sobrino	/* Make sure accesses from EL0/EL1 are not trapped to EL2 */
55425bbbd2dSJavier Almansa Sobrino	mrs	x0, cptr_el2
55525bbbd2dSJavier Almansa Sobrino	orr	x0, x0, #TAM_BIT
55625bbbd2dSJavier Almansa Sobrino	msr	cptr_el2, x0
55725bbbd2dSJavier Almansa Sobrino
55825bbbd2dSJavier Almansa Sobrino	/* No need to enable the counters as this would be done at el3 exit */
55925bbbd2dSJavier Almansa Sobrino#endif
56025bbbd2dSJavier Almansa Sobrino
56125bbbd2dSJavier Almansa Sobrino#if NEOVERSE_Nx_EXTERNAL_LLC
56225bbbd2dSJavier Almansa Sobrino	/* Some systems may have External LLC, core needs to be made aware */
56325bbbd2dSJavier Almansa Sobrino	mrs	x0, NEOVERSE_N2_CPUECTLR_EL1
56425bbbd2dSJavier Almansa Sobrino	orr	x0, x0, NEOVERSE_N2_CPUECTLR_EL1_EXTLLC_BIT
56525bbbd2dSJavier Almansa Sobrino	msr	NEOVERSE_N2_CPUECTLR_EL1, x0
56625bbbd2dSJavier Almansa Sobrino#endif
56725bbbd2dSJavier Almansa Sobrino
5689380f754Snayanpatel-arm#if ERRATA_N2_2002655
5699380f754Snayanpatel-arm	mov	x0, x18
5709380f754Snayanpatel-arm	bl	errata_n2_2002655_wa
5719380f754Snayanpatel-arm#endif
5729380f754Snayanpatel-arm
5731fe4a9d1SBipin Ravi#if IMAGE_BL31 && WORKAROUND_CVE_2022_23960
5741fe4a9d1SBipin Ravi	/*
5751fe4a9d1SBipin Ravi	 * The Neoverse-N2 generic vectors are overridden to apply errata
5761fe4a9d1SBipin Ravi         * mitigation on exception entry from lower ELs.
5771fe4a9d1SBipin Ravi	 */
5781fe4a9d1SBipin Ravi	adr	x0, wa_cve_vbar_neoverse_n2
5791fe4a9d1SBipin Ravi	msr	vbar_el3, x0
5801fe4a9d1SBipin Ravi#endif /* IMAGE_BL31 && WORKAROUND_CVE_2022_23960 */
5811fe4a9d1SBipin Ravi
58225bbbd2dSJavier Almansa Sobrino	isb
5839380f754Snayanpatel-arm	ret	x19
58425bbbd2dSJavier Almansa Sobrinoendfunc neoverse_n2_reset_func
58525bbbd2dSJavier Almansa Sobrino
58625bbbd2dSJavier Almansa Sobrinofunc neoverse_n2_core_pwr_dwn
58743438ad1SBoyan Karatotev#if ERRATA_N2_2326639
58843438ad1SBoyan Karatotev	mov	x15, x30
58943438ad1SBoyan Karatotev	bl	cpu_get_rev_var
59043438ad1SBoyan Karatotev	bl	errata_n2_2326639_wa
59143438ad1SBoyan Karatotev	mov	x30, x15
59243438ad1SBoyan Karatotev#endif /* ERRATA_N2_2326639 */
59343438ad1SBoyan Karatotev
5944618b2bfSBipin Ravi	/* ---------------------------------------------------
59525bbbd2dSJavier Almansa Sobrino	 * Enable CPU power down bit in power control register
59625bbbd2dSJavier Almansa Sobrino	 * No need to do cache maintenance here.
5974618b2bfSBipin Ravi	 * ---------------------------------------------------
59825bbbd2dSJavier Almansa Sobrino	 */
59925bbbd2dSJavier Almansa Sobrino	mrs	x0, NEOVERSE_N2_CPUPWRCTLR_EL1
60025bbbd2dSJavier Almansa Sobrino	orr	x0, x0, #NEOVERSE_N2_CORE_PWRDN_EN_BIT
60125bbbd2dSJavier Almansa Sobrino	msr	NEOVERSE_N2_CPUPWRCTLR_EL1, x0
6021ee7c823SBipin Ravi#if ERRATA_N2_2743089
6031ee7c823SBipin Ravi	mov	x15, x30
6041ee7c823SBipin Ravi	bl	cpu_get_rev_var
6051ee7c823SBipin Ravi	bl	errata_n2_2743089_wa
6061ee7c823SBipin Ravi	mov	x30, x15
6071ee7c823SBipin Ravi#endif /* ERRATA_N2_2743089 */
60825bbbd2dSJavier Almansa Sobrino	isb
60925bbbd2dSJavier Almansa Sobrino	ret
61025bbbd2dSJavier Almansa Sobrinoendfunc neoverse_n2_core_pwr_dwn
61125bbbd2dSJavier Almansa Sobrino
61225bbbd2dSJavier Almansa Sobrino#if REPORT_ERRATA
61325bbbd2dSJavier Almansa Sobrino/*
61425bbbd2dSJavier Almansa Sobrino * Errata printing function for Neoverse N2 cores. Must follow AAPCS.
61525bbbd2dSJavier Almansa Sobrino */
61625bbbd2dSJavier Almansa Sobrinofunc neoverse_n2_errata_report
6179380f754Snayanpatel-arm	stp	x8, x30, [sp, #-16]!
6189380f754Snayanpatel-arm
6199380f754Snayanpatel-arm	bl	cpu_get_rev_var
6209380f754Snayanpatel-arm	mov	x8, x0
6219380f754Snayanpatel-arm
6229380f754Snayanpatel-arm	/*
6239380f754Snayanpatel-arm	 * Report all errata. The revision-variant information is passed to
6249380f754Snayanpatel-arm	 * checking functions of each errata.
6259380f754Snayanpatel-arm	 */
6269380f754Snayanpatel-arm	report_errata ERRATA_N2_2002655, neoverse_n2, 2002655
627*a438f434SArvind Ram Prakash	report_errata ERRATA_N2_2002655, neoverse_n2, 2025414
62865e04f27SBipin Ravi	report_errata ERRATA_N2_2067956, neoverse_n2, 2067956
629ef8f0c52Snayanpatel-arm	report_errata ERRATA_N2_2138953, neoverse_n2, 2138953
630*a438f434SArvind Ram Prakash	report_errata ERRATA_N2_2138956, neoverse_n2, 2138956
631c948185cSnayanpatel-arm	report_errata ERRATA_N2_2138958, neoverse_n2, 2138958
632*a438f434SArvind Ram Prakash	report_errata ERRATA_N2_2189731, neoverse_n2, 2189731
633603806d1Snayanpatel-arm	report_errata ERRATA_N2_2242400, neoverse_n2, 2242400
634*a438f434SArvind Ram Prakash	report_errata ERRATA_N2_2242415, neoverse_n2, 2242415
6350d2d9992Snayanpatel-arm	report_errata ERRATA_N2_2280757, neoverse_n2, 2280757
63643438ad1SBoyan Karatotev	report_errata ERRATA_N2_2326639, neoverse_n2, 2326639
637e6602d4bSAkram Ahmad	report_errata ERRATA_N2_2376738, neoverse_n2, 2376738
638884d5156SDaniel Boulby	report_errata ERRATA_N2_2388450, neoverse_n2, 2388450
6391ee7c823SBipin Ravi	report_errata ERRATA_N2_2743089, neoverse_n2, 2743089
6407e3273e8SBipin Ravi	report_errata ERRATA_DSU_2313941, neoverse_n2, dsu_2313941
641*a438f434SArvind Ram Prakash	report_errata WORKAROUND_CVE_2022_23960, neoverse_n2, cve_2022_23960
6429380f754Snayanpatel-arm
6439380f754Snayanpatel-arm	ldp	x8, x30, [sp], #16
64425bbbd2dSJavier Almansa Sobrino	ret
64525bbbd2dSJavier Almansa Sobrinoendfunc neoverse_n2_errata_report
64625bbbd2dSJavier Almansa Sobrino#endif
64725bbbd2dSJavier Almansa Sobrino
64825bbbd2dSJavier Almansa Sobrino	/* ---------------------------------------------
64925bbbd2dSJavier Almansa Sobrino	 * This function provides Neoverse N2 specific
65025bbbd2dSJavier Almansa Sobrino	 * register information for crash reporting.
65125bbbd2dSJavier Almansa Sobrino	 * It needs to return with x6 pointing to
65225bbbd2dSJavier Almansa Sobrino	 * a list of register names in ASCII and
65325bbbd2dSJavier Almansa Sobrino	 * x8 - x15 having values of registers to be
65425bbbd2dSJavier Almansa Sobrino	 * reported.
65525bbbd2dSJavier Almansa Sobrino	 * ---------------------------------------------
65625bbbd2dSJavier Almansa Sobrino	 */
65725bbbd2dSJavier Almansa Sobrino.section .rodata.neoverse_n2_regs, "aS"
65825bbbd2dSJavier Almansa Sobrinoneoverse_n2_regs:  /* The ASCII list of register names to be reported */
65925bbbd2dSJavier Almansa Sobrino	.asciz	"cpupwrctlr_el1", ""
66025bbbd2dSJavier Almansa Sobrino
66125bbbd2dSJavier Almansa Sobrinofunc neoverse_n2_cpu_reg_dump
66225bbbd2dSJavier Almansa Sobrino	adr	x6, neoverse_n2_regs
66325bbbd2dSJavier Almansa Sobrino	mrs	x8, NEOVERSE_N2_CPUPWRCTLR_EL1
66425bbbd2dSJavier Almansa Sobrino	ret
66525bbbd2dSJavier Almansa Sobrinoendfunc neoverse_n2_cpu_reg_dump
66625bbbd2dSJavier Almansa Sobrino
66725bbbd2dSJavier Almansa Sobrinodeclare_cpu_ops neoverse_n2, NEOVERSE_N2_MIDR, \
66825bbbd2dSJavier Almansa Sobrino	neoverse_n2_reset_func, \
66925bbbd2dSJavier Almansa Sobrino	neoverse_n2_core_pwr_dwn
670