xref: /optee_os/core/arch/arm/kernel/vfp_a64.S (revision 181f84921804f9b8e2d24027eca1d916d6e15a44)
11bb92983SJerome Forissier/* SPDX-License-Identifier: BSD-2-Clause */
2bc46c1c6SJerome Forissier/*
3bc46c1c6SJerome Forissier * Copyright (c) 2015, Linaro Limited
4bc46c1c6SJerome Forissier */
5bc46c1c6SJerome Forissier
6bc46c1c6SJerome Forissier#include <asm.S>
7bc46c1c6SJerome Forissier
8bc46c1c6SJerome Forissier/* void vfp_save_extension_regs(struct vfp_reg regs[VFP_NUM_REGS]); */
9bc46c1c6SJerome ForissierFUNC vfp_save_extension_regs , :
10bc46c1c6SJerome Forissier	stp	q0, q1, [x0, #16 * 0]
11bc46c1c6SJerome Forissier	stp	q2, q3, [x0, #16 * 2]
12bc46c1c6SJerome Forissier	stp	q4, q5, [x0, #16 * 4]
13bc46c1c6SJerome Forissier	stp	q6, q7, [x0, #16 * 6]
14bc46c1c6SJerome Forissier	stp	q8, q9, [x0, #16 * 8]
15bc46c1c6SJerome Forissier	stp	q10, q11, [x0, #16 * 10]
16bc46c1c6SJerome Forissier	stp	q12, q13, [x0, #16 * 12]
17bc46c1c6SJerome Forissier	stp	q14, q15, [x0, #16 * 14]
18bc46c1c6SJerome Forissier	stp	q16, q17, [x0, #16 * 16]
19bc46c1c6SJerome Forissier	stp	q18, q19, [x0, #16 * 18]
20bc46c1c6SJerome Forissier	stp	q20, q21, [x0, #16 * 20]
21bc46c1c6SJerome Forissier	stp	q22, q23, [x0, #16 * 22]
22bc46c1c6SJerome Forissier	stp	q24, q25, [x0, #16 * 24]
23bc46c1c6SJerome Forissier	stp	q26, q27, [x0, #16 * 26]
24bc46c1c6SJerome Forissier	stp	q28, q29, [x0, #16 * 28]
25bc46c1c6SJerome Forissier	stp	q30, q31, [x0, #16 * 30]
26bc46c1c6SJerome Forissier	ret
27bc46c1c6SJerome ForissierEND_FUNC vfp_save_extension_regs
28bc46c1c6SJerome Forissier
29bc46c1c6SJerome Forissier/* void vfp_restore_extension_regs(struct vfp_reg regs[VFP_NUM_REGS]); */
30bc46c1c6SJerome ForissierFUNC vfp_restore_extension_regs , :
31bc46c1c6SJerome Forissier	ldp	q0, q1, [x0, #16 * 0]
32bc46c1c6SJerome Forissier	ldp	q2, q3, [x0, #16 * 2]
33bc46c1c6SJerome Forissier	ldp	q4, q5, [x0, #16 * 4]
34bc46c1c6SJerome Forissier	ldp	q6, q7, [x0, #16 * 6]
35bc46c1c6SJerome Forissier	ldp	q8, q9, [x0, #16 * 8]
36bc46c1c6SJerome Forissier	ldp	q10, q11, [x0, #16 * 10]
37bc46c1c6SJerome Forissier	ldp	q12, q13, [x0, #16 * 12]
38bc46c1c6SJerome Forissier	ldp	q14, q15, [x0, #16 * 14]
39bc46c1c6SJerome Forissier	ldp	q16, q17, [x0, #16 * 16]
40bc46c1c6SJerome Forissier	ldp	q18, q19, [x0, #16 * 18]
41bc46c1c6SJerome Forissier	ldp	q20, q21, [x0, #16 * 20]
42bc46c1c6SJerome Forissier	ldp	q22, q23, [x0, #16 * 22]
43bc46c1c6SJerome Forissier	ldp	q24, q25, [x0, #16 * 24]
44bc46c1c6SJerome Forissier	ldp	q26, q27, [x0, #16 * 26]
45bc46c1c6SJerome Forissier	ldp	q28, q29, [x0, #16 * 28]
46bc46c1c6SJerome Forissier	ldp	q30, q31, [x0, #16 * 30]
47bc46c1c6SJerome Forissier	ret
48bc46c1c6SJerome ForissierEND_FUNC vfp_restore_extension_regs
49*181f8492SRuchika Gupta
50*181f8492SRuchika GuptaBTI(emit_aarch64_feature_1_and     GNU_PROPERTY_AARCH64_FEATURE_1_BTI)
51