xref: /optee_os/core/arch/arm/kernel/vfp_a32.S (revision 827be46c173f31c57006af70ca3a15a5b1a7fba3)
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 , :
12UNWIND(	.fnstart)
13	vstm	r0!, {d0-d15}
14	vstm	r0, {d16-d31}
15	bx	lr
16UNWIND(	.fnend)
17END_FUNC vfp_save_extension_regs
18
19/* void vfp_restore_extension_regs(uint64_t regs[VFP_NUM_REGS]); */
20FUNC vfp_restore_extension_regs , :
21UNWIND(	.fnstart)
22	vldm	r0!, {d0-d15}
23	vldm	r0, {d16-d31}
24	bx	lr
25UNWIND(	.fnend)
26END_FUNC vfp_restore_extension_regs
27
28/* void vfp_write_fpexc(uint32_t fpexc) */
29FUNC vfp_write_fpexc , :
30UNWIND(	.fnstart)
31	vmsr	fpexc, r0
32	bx	lr
33UNWIND(	.fnend)
34END_FUNC vfp_write_fpexc
35
36/* uint32_t vfp_read_fpexc(void) */
37FUNC vfp_read_fpexc , :
38UNWIND(	.fnstart)
39	vmrs	r0, fpexc
40	bx	lr
41UNWIND(	.fnend)
42END_FUNC vfp_read_fpexc
43
44/* void vfp_write_fpscr(uint32_t fpscr) */
45FUNC vfp_write_fpscr , :
46UNWIND(	.fnstart)
47	vmsr	fpscr, r0
48	bx	lr
49UNWIND(	.fnend)
50END_FUNC vfp_write_fpscr
51
52/* uint32_t vfp_read_fpscr(void) */
53FUNC vfp_read_fpscr , :
54UNWIND(	.fnstart)
55	vmrs	r0, fpscr
56	bx	lr
57UNWIND(	.fnend)
58END_FUNC vfp_read_fpscr
59