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