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