FPU cleanup

- last reference to MF_USED_FPU removed

- proc_used_fpu() used to test for MF_FPU_INITIALIZED
This commit is contained in:
Tomas Hruby 2010-07-01 12:23:25 +00:00
parent b5ae3961bb
commit 7920d48156
5 changed files with 6 additions and 6 deletions

View file

@ -219,7 +219,7 @@ PUBLIC void save_fpu(struct proc *pr)
PUBLIC void restore_fpu(struct proc *pr) PUBLIC void restore_fpu(struct proc *pr)
{ {
if(!(pr->p_misc_flags & MF_FPU_INITIALIZED)) { if(!proc_used_fpu(pr)) {
fninit(); fninit();
pr->p_misc_flags |= MF_FPU_INITIALIZED; pr->p_misc_flags |= MF_FPU_INITIALIZED;
} else { } else {

View file

@ -146,7 +146,7 @@ struct proc {
#define proc_is_preempted(p) ((p)->p_rts_flags & RTS_PREEMPTED) #define proc_is_preempted(p) ((p)->p_rts_flags & RTS_PREEMPTED)
#define proc_no_quantum(p) ((p)->p_rts_flags & RTS_NO_QUANTUM) #define proc_no_quantum(p) ((p)->p_rts_flags & RTS_NO_QUANTUM)
#define proc_ptr_ok(p) ((p)->p_magic == PMAGIC) #define proc_ptr_ok(p) ((p)->p_magic == PMAGIC)
#define proc_used_fpu(p) ((p)->p_misc_flags & (MF_FPU_INITIALIZED|MF_USED_FPU)) #define proc_used_fpu(p) ((p)->p_misc_flags & (MF_FPU_INITIALIZED))
/* test whether the process is scheduled by the kernel's default policy */ /* test whether the process is scheduled by the kernel's default policy */
#define proc_kernel_scheduler(p) ((p)->p_scheduler == NULL || \ #define proc_kernel_scheduler(p) ((p)->p_scheduler == NULL || \

View file

@ -67,7 +67,7 @@ PUBLIC int do_fork(struct proc * caller, message * m_ptr)
#if (_MINIX_CHIP == _CHIP_INTEL) #if (_MINIX_CHIP == _CHIP_INTEL)
rpc->p_seg.p_ldt_sel = old_ldt_sel; /* restore descriptors */ rpc->p_seg.p_ldt_sel = old_ldt_sel; /* restore descriptors */
rpc->p_fpu_state.fpu_save_area_p = old_fpu_save_area_p; rpc->p_fpu_state.fpu_save_area_p = old_fpu_save_area_p;
if(rpp->p_misc_flags & MF_FPU_INITIALIZED) if(proc_used_fpu(rpp)) {
memcpy(rpc->p_fpu_state.fpu_save_area_p, memcpy(rpc->p_fpu_state.fpu_save_area_p,
rpp->p_fpu_state.fpu_save_area_p, rpp->p_fpu_state.fpu_save_area_p,
FPU_XFP_SIZE); FPU_XFP_SIZE);

View file

@ -29,7 +29,7 @@ PUBLIC int do_getmcontext(struct proc * caller, message * m_ptr)
rp = proc_addr(proc_nr); rp = proc_addr(proc_nr);
#if (_MINIX_CHIP == _CHIP_INTEL) #if (_MINIX_CHIP == _CHIP_INTEL)
if (!(rp->p_misc_flags & MF_FPU_INITIALIZED)) if (!proc_used_fpu(rp)) {
return(OK); /* No state to copy */ return(OK); /* No state to copy */
#endif #endif
@ -41,7 +41,7 @@ PUBLIC int do_getmcontext(struct proc * caller, message * m_ptr)
#if (_MINIX_CHIP == _CHIP_INTEL) #if (_MINIX_CHIP == _CHIP_INTEL)
/* Copy FPU state */ /* Copy FPU state */
mc.mc_fpu_flags = 0; mc.mc_fpu_flags = 0;
if (rp->p_misc_flags & MF_FPU_INITIALIZED) { if (proc_used_fpu(rp)) {
/* make sure that the FPU context is saved into proc structure first */ /* make sure that the FPU context is saved into proc structure first */
if (fpu_owner == rp) { if (fpu_owner == rp) {
disable_fpu_exception(); disable_fpu_exception();

View file

@ -44,7 +44,7 @@ PUBLIC int do_sigsend(struct proc * caller, message * m_ptr)
/* Copy the registers to the sigcontext structure. */ /* Copy the registers to the sigcontext structure. */
memcpy(&sc.sc_regs, (char *) &rp->p_reg, sizeof(sigregs)); memcpy(&sc.sc_regs, (char *) &rp->p_reg, sizeof(sigregs));
#if (_MINIX_CHIP == _CHIP_INTEL) #if (_MINIX_CHIP == _CHIP_INTEL)
if(rp->p_misc_flags & MF_FPU_INITIALIZED) { if(proc_used_fpu(rp)) {
/* save the FPU context before saving it to the sig context */ /* save the FPU context before saving it to the sig context */
if (fpu_owner == rp) { if (fpu_owner == rp) {
disable_fpu_exception(); disable_fpu_exception();