curpcb
if (pcb == curpcb) {
fpusave(curpcb->pcb_save);
KASSERT(curpcb->pcb_save == get_pcb_user_save_pcb(curpcb),
KASSERT(PCB_USER_FPU(curpcb), ("recursive call"));
set_pcb_flags(curpcb, PCB_KERNFPU | PCB_KERNFPU_THR);
return ((curpcb->pcb_flags & PCB_KERNFPU_THR) != 0);
fpusave(curpcb->pcb_save);
pcb_save = curpcb->pcb_save;
mxcsr = curpcb->pcb_save->sv_env.en_mxcsr;
KASSERT((curpcb->pcb_flags & PCB_FPUNOSAVE) == 0,
PCPU_SET(curpcb, thread0.td_pcb);
if (curpcb == pcb &&
if (curpcb->pcb_onfault == NULL)
frame->tf_rip = (register_t)curpcb->pcb_onfault;
if (curpcb->pcb_onfault != NULL) {
frame->tf_rip = (long)curpcb->pcb_onfault;
(curpcb->pcb_saved_ucr3 & ~CR3_PCID_MASK) ==
trap_is_smap(frame) || curpcb->pcb_onfault == NULL)) {
update_pcb_bases(curpcb);
pcb = PCPU_GET(curpcb);
struct pcb *curpcb;
curpcb = curthread->td_pcb;
(curpcb->pcb_fpflags & PCB_FP_KERN) == 0) {
if (curpcb->pcb_vfpcpu != cpu || curthread != PCPU_GET(fpcurthread)) {
vfp_restore(curpcb->pcb_vfpsaved);
curpcb->pcb_vfpcpu = cpu;
curpcb->pcb_vfpsaved == &curpcb->pcb_vfpstate,
struct pcb *curpcb;
curpcb = curthread->td_pcb;
return ((curpcb->pcb_fpflags & PCB_FP_KERN) != 0);
struct pcb *curpcb;
curpcb = curthread->td_pcb;
if ((curpcb->pcb_fpflags & PCB_FP_STARTED) != 0) {
vfp_save_state(td, curpcb);
KASSERT(curpcb->pcb_fpusaved == &curpcb->pcb_fpustate,
KASSERT((curpcb->pcb_fpflags & ~PCB_FP_USERMASK) == 0,
memcpy(mcp->mc_fpregs.fp_q, curpcb->pcb_fpustate.vfp_regs,
mcp->mc_fpregs.fp_cr = curpcb->pcb_fpustate.vfp_fpcr;
mcp->mc_fpregs.fp_sr = curpcb->pcb_fpustate.vfp_fpsr;
mcp->mc_fpregs.fp_flags = curpcb->pcb_fpflags;
struct pcb *curpcb;
curpcb = curthread->td_pcb;
KASSERT(curpcb->pcb_fpusaved == &curpcb->pcb_fpustate,
memcpy(curpcb->pcb_fpustate.vfp_regs, mcp->mc_fpregs.fp_q,
curpcb->pcb_fpustate.vfp_fpcr = mcp->mc_fpregs.fp_cr;
curpcb->pcb_fpustate.vfp_fpsr = mcp->mc_fpregs.fp_sr;
curpcb->pcb_fpflags = mcp->mc_fpregs.fp_flags & PCB_FP_STARTED;
PCPU_SET(curpcb, pcb);
struct pcb *curpcb;
curpcb = curthread->td_pcb;
return ((curpcb->pcb_fpflags & PCB_FP_KERN) != 0);
struct pcb *curpcb;
curpcb = td->td_pcb;
if ((curpcb->pcb_fpflags & PCB_FP_SVEVALID) != 0 &&
curpcb->pcb_fpusaved == &curpcb->pcb_fpustate) {
MPASS(curpcb->pcb_svesaved != NULL);
MPASS((curpcb->pcb_fpflags & PCB_FP_SVEVALID) != 0);
curpcb->pcb_fpflags |= PCB_FP_STARTED;
if (PCPU_GET(fpcurthread) != curthread || cpu != curpcb->pcb_vfpcpu) {
curpcb->pcb_vfpcpu = cpu;
struct pcb *curpcb;
curpcb = td->td_pcb;
MPASS(curpcb->pcb_fpusaved == &curpcb->pcb_fpustate);
if (curpcb->pcb_sve_len == 0) {
MPASS(curpcb->pcb_svesaved == NULL);
curpcb->pcb_sve_len = sve_max_vector_len;
if (curpcb->pcb_svesaved == NULL) {
MPASS((curpcb->pcb_fpflags & PCB_FP_SVEVALID) == 0);
vfp_restore_state_common(td, curpcb->pcb_fpflags);
curpcb->pcb_svesaved = svesaved;
curpcb->pcb_fpflags |= PCB_FP_SVEVALID;
vfp_restore_state_common(td, curpcb->pcb_fpflags);
if ((curpcb->pcb_fpflags & PCB_FP_SVEVALID) == 0) {
curpcb->pcb_fpflags |= PCB_FP_SVEVALID;
if (pcb == curpcb) {
PCPU_SET(curpcb, thread0.td_pcb);
fpusave(curpcb->pcb_save);
KASSERT(curpcb->pcb_save == get_pcb_user_save_pcb(curpcb),
KASSERT(PCB_USER_FPU(curpcb), ("recursive call"));
curpcb->pcb_flags |= PCB_KERNNPX | PCB_KERNNPX_THR;
return ((curpcb->pcb_flags & PCB_KERNNPX_THR) != 0);
fpusave(curpcb->pcb_save);
KASSERT((curpcb->pcb_flags & PCB_NPXNOSAVE) == 0,
(curpcb->pcb_flags & PCB_VM86CALL) == 0)) {
(curpcb->pcb_flags & PCB_VM86CALL) == 0)
if (TRAPF_USERMODE(frame) && (curpcb->pcb_flags & PCB_VM86CALL) == 0) {
if (curpcb->pcb_flags & PCB_VM86CALL)
curpcb->pcb_gs = 0;
if (curpcb->pcb_onfault != NULL) {
frame->tf_eip = (int)curpcb->pcb_onfault;
!(curpcb->pcb_flags & PCB_VM86CALL))
curpcb->pcb_onfault != NULL) {
frame->tf_eip = (int)curpcb->pcb_onfault;
if (curpcb->pcb_ext == 0)
vm86 = &curpcb->pcb_ext->ext_vm86;
vm86 = &curpcb->pcb_ext->ext_vm86;
PCPU_SET(curpcb, curthread->td_pcb);
#ifndef curpcb
extern struct pcb *curpcb;
struct pcb *curpcb;
curpcb = curthread->td_pcb;
return ((curpcb->pcb_flags & PCB_KERN_FPU) != 0);
struct pcb *curpcb;
curpcb = curthread->td_pcb;
KASSERT(td->td_pcb == curpcb, ("Invalid fpe pcb"));
if ((curpcb->pcb_fpflags & PCB_FP_STARTED) != 0) {
KASSERT((curpcb->pcb_fpflags & ~PCB_FP_USERMASK) == 0,
memcpy(mcp->mc_fpregs.fp_x, curpcb->pcb_x,
mcp->mc_fpregs.fp_fcsr = curpcb->pcb_fcsr;
mcp->mc_fpregs.fp_flags = curpcb->pcb_fpflags;
struct pcb *curpcb;
curpcb = curthread->td_pcb;
memcpy(curpcb->pcb_x, mcp->mc_fpregs.fp_x,
curpcb->pcb_fcsr = mcp->mc_fpregs.fp_fcsr;
curpcb->pcb_fpflags = mcp->mc_fpregs.fp_flags & PCB_FP_USERMASK;