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