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