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