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