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