1*1bb92983SJerome Forissier /* SPDX-License-Identifier: BSD-2-Clause */ 2bc46c1c6SJerome Forissier /* 3bc46c1c6SJerome Forissier * Copyright (c) 2015, Linaro Limited 4bc46c1c6SJerome Forissier */ 5bc46c1c6SJerome Forissier 6abe38974SJens Wiklander #ifndef VFP_PRIVATE 7abe38974SJens Wiklander #define VFP_PRIVATE 8abe38974SJens Wiklander 9abe38974SJens Wiklander #include <kernel/vfp.h> 10abe38974SJens Wiklander 11bc46c1c6SJerome Forissier void vfp_save_extension_regs(struct vfp_reg regs[VFP_NUM_REGS]); 12bc46c1c6SJerome Forissier void vfp_restore_extension_regs(struct vfp_reg regs[VFP_NUM_REGS]); 13abe38974SJens Wiklander void vfp_clear_extension_regs(void); 14abe38974SJens Wiklander 15bc46c1c6SJerome Forissier #ifdef ARM32 16bc46c1c6SJerome Forissier 17bc46c1c6SJerome Forissier #define FPEXC_EN (1 << 30) 18bc46c1c6SJerome Forissier 19bc46c1c6SJerome Forissier /* 20bc46c1c6SJerome Forissier * These functions can't be implemented in inline assembly when compiling 21bc46c1c6SJerome Forissier * for thumb mode, to make it easy always implement then in ARM assembly as 22bc46c1c6SJerome Forissier * ordinary functions. 23bc46c1c6SJerome Forissier */ 24bc46c1c6SJerome Forissier void vfp_write_fpexc(uint32_t fpexc); 25bc46c1c6SJerome Forissier uint32_t vfp_read_fpexc(void); 26bc46c1c6SJerome Forissier void vfp_write_fpscr(uint32_t fpscr); 27bc46c1c6SJerome Forissier uint32_t vfp_read_fpscr(void); 28bc46c1c6SJerome Forissier 29bc46c1c6SJerome Forissier #endif /* ARM32 */ 30bc46c1c6SJerome Forissier 31abe38974SJens Wiklander #endif /*VFP_PRIVATE*/ 32