xref: /optee_os/core/arch/arm/kernel/vfp_a32.S (revision 9fc2442cc66c279cb962c90c4375746fc9b28bb9)
1/* SPDX-License-Identifier: BSD-2-Clause */
2/*
3 * Copyright (c) 2015-2016, Linaro Limited
4 */
5
6#include <asm.S>
7
8	.fpu	neon
9
10/* void vfp_save_extension_regs(uint64_t regs[VFP_NUM_REGS]); */
11FUNC vfp_save_extension_regs , :
12	vstm	r0!, {d0-d15}
13	vstm	r0, {d16-d31}
14	bx	lr
15END_FUNC vfp_save_extension_regs
16
17/* void vfp_restore_extension_regs(uint64_t regs[VFP_NUM_REGS]); */
18FUNC vfp_restore_extension_regs , :
19	vldm	r0!, {d0-d15}
20	vldm	r0, {d16-d31}
21	bx	lr
22END_FUNC vfp_restore_extension_regs
23
24/* void vfp_write_fpexc(uint32_t fpexc) */
25FUNC vfp_write_fpexc , :
26	vmsr	fpexc, r0
27	bx	lr
28END_FUNC vfp_write_fpexc
29
30/* uint32_t vfp_read_fpexc(void) */
31FUNC vfp_read_fpexc , :
32	vmrs	r0, fpexc
33	bx	lr
34END_FUNC vfp_read_fpexc
35
36/* void vfp_write_fpscr(uint32_t fpscr) */
37FUNC vfp_write_fpscr , :
38	vmsr	fpscr, r0
39	bx	lr
40END_FUNC vfp_write_fpscr
41
42/* uint32_t vfp_read_fpscr(void) */
43FUNC vfp_read_fpscr , :
44	vmrs	r0, fpscr
45	bx	lr
46END_FUNC vfp_read_fpscr
47