aboutsummaryrefslogtreecommitdiff
path: root/sys/arm64/include/vfp.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arm64/include/vfp.h')
-rw-r--r--sys/arm64/include/vfp.h20
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__ */