linux-mips
[Top] [All Lists]

Re: Re: Re: used_math not cleared for new processes?

To: "linux-mips@oss.sgi.com" <linux-mips@oss.sgi.com>
Subject: Re: Re: Re: used_math not cleared for new processes?
From: Zhang Fuxin <fxzhang@ict.ac.cn>
Date: Fri, 1 Mar 2002 11:11:22 +0800
Cc: "jsun@mvista.com" <jsun@mvista.com>
Sender: owner-linux-mips@oss.sgi.com
hi,
 sorry,it seems this patch bring other problem,please don't use.
i am investigating it.

>>
>>I think it make sense to clear used_math in do_exec().  It also improvies the
>> performance slightly by not loading the parent's FPU context when it uses the
>>FPU for the first time.
>>
>>Do you have a patch for this?
>Yes. Here it is.
>
>--- processor.h.ori     Thu Feb 28 15:02:20 2002
>+++ processor.h Thu Feb 28 15:00:10 2002
>@@ -215,6 +215,7 @@
>        regs->cp0_epc = new_pc;                                         \
>        regs->regs[29] = new_sp;                                        \
>        current->thread.current_ds = USER_DS;                           \
>+       current->used_math = 0;                                         \
> } while (0)
> 
> unsigned long get_wchan(struct task_struct *p);
>
>
>--- traps.c.ori Thu Feb 28 15:04:48 2002
>+++ traps.c     Thu Feb 28 15:05:23 2002
>@@ -668,8 +668,12 @@
>        if (current->used_math) {               /* Using the FPU again.  */
>                lazy_fpu_switch(last_task_used_math);
>        } else {                                /* First time FPU user.  */
>-               if (last_task_used_math != NULL)
>+               if (last_task_used_math != NULL) {
>+                       int status = read_32bit_cp0_register(CP0_STATUS);
>+                       write_32bit_cp0_register(CP0_STATUS,status|ST0_CU1);
>+
>                        save_fp(last_task_used_math);
>+               }
>                init_fpu();
>                current->used_math = 1;
>        }
>
>
>>
>>Jun
>
>Regards
>            Zhang Fuxin
>            fxzhang@ict.ac.cn

Regards
            Zhang Fuxin
            fxzhang@ict.ac.cn


<Prev in Thread] Current Thread [Next in Thread>