summaryrefslogtreecommitdiff
path: root/lib/cpus/aarch64/wa_cve_2022_23960_bhb.S
blob: bf266583c84c0f82ef0136c7570309bcafe219b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
 * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#include <context.h>

#if WORKAROUND_CVE_2022_23960
	/*
	 * This macro applies the mitigation for CVE-2022-23960.
         * The macro saves x2 to the CPU context.
         * SP should point to the CPU context.
	 */
	.macro	apply_cve_2022_23960_bhb_wa _bhb_loop_count
	str	x2, [sp, #CTX_GPREGS_OFFSET + CTX_GPREG_X2]

	/* CVE-BHB-NUM loop count */
	mov	x2, \_bhb_loop_count

1:
	/* b pc+4 part of the workaround */
	b	2f
2:
	subs	x2, x2, #1
	bne	1b
	speculation_barrier
	ldr	x2, [sp, #CTX_GPREGS_OFFSET + CTX_GPREG_X2]
	.endm
#endif /* WORKAROUND_CVE_2022_23960 */