arm64: Create a version of vfp_save_state for cpu_switch

This will be used when we add SVE support to reduce the registers
needed to be saved on context switch.

Reviewed by:	imp
Sponsored by:	Arm Ltd
Differential Revision:	https://reviews.freebsd.org/D43305
This commit is contained in:
Andrew Turner 2024-06-12 14:09:14 +01:00
parent 4eec584d79
commit a30149b2a9
3 changed files with 10 additions and 3 deletions

View File

@ -148,9 +148,7 @@ ENTRY(cpu_switch)
mov x21, x2
#ifdef VFP
/* Load the pcb address */
mov x1, x4
bl vfp_save_state
bl vfp_save_state_switch
mov x0, x20
#else
mov x0, x1

View File

@ -216,6 +216,14 @@ vfp_save_state_savectx(struct pcb *pcb)
vfp_save_state_common(curthread, pcb);
}
void
vfp_save_state_switch(struct thread *td)
{
KASSERT(td != NULL, ("NULL vfp thread"));
vfp_save_state_common(td, td->td_pcb);
}
/*
* Update the VFP state for a forked process or new thread. The PCB will
* have been copied from the old thread.

View File

@ -79,6 +79,7 @@ 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 *);
void vfp_save_state_switch(struct thread *);
struct fpu_kern_ctx;