diff options
Diffstat (limited to 'sys/arm64/include/vfp.h')
-rw-r--r-- | sys/arm64/include/vfp.h | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/sys/arm64/include/vfp.h b/sys/arm64/include/vfp.h index b28c6edf3c53..7f4c86e7737d 100644 --- a/sys/arm64/include/vfp.h +++ b/sys/arm64/include/vfp.h @@ -24,10 +24,12 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#ifdef __arm__ +#include <arm/vfp.h> +#else /* !__arm__ */ + #ifndef _MACHINE_VFP_H_ #define _MACHINE_VFP_H_ @@ -66,11 +68,17 @@ struct vfpstate { struct pcb; struct thread; -void vfp_init(void); +void vfp_init_secondary(void); +void vfp_enable(void); +void vfp_disable(void); void vfp_discard(struct thread *); +void vfp_store(struct vfpstate *); +void vfp_restore(struct vfpstate *); +void vfp_new_thread(struct thread *, struct thread *, bool); void vfp_reset_state(struct thread *, struct pcb *); void vfp_restore_state(void); void vfp_save_state(struct thread *, struct pcb *); +void vfp_save_state_savectx(struct pcb *); struct fpu_kern_ctx; @@ -89,6 +97,10 @@ int fpu_kern_leave(struct thread *, struct fpu_kern_ctx *); int fpu_kern_thread(u_int); int is_fpu_kern_thread(u_int); +struct vfpstate *fpu_save_area_alloc(void); +void fpu_save_area_free(struct vfpstate *fsa); +void fpu_save_area_reset(struct vfpstate *fsa); + /* Convert to and from Aarch32 FPSCR to Aarch64 FPCR/FPSR */ #define VFP_FPSCR_FROM_SRCR(vpsr, vpcr) ((vpsr) | ((vpcr) & 0x7c00000)) #define VFP_FPSR_FROM_FPSCR(vpscr) ((vpscr) &~ 0x7c00000) @@ -104,3 +116,5 @@ void set_fpcontext32(struct thread *td, mcontext32_vfp_t *mcp); #endif #endif /* !_MACHINE_VFP_H_ */ + +#endif /* !__arm__ */ |