Fix for FPU broken by r6131

- cycles accounting must be called earlier, firstly not to clobber the %ebx
  register, secondly to be correctly called in both branches.
This commit is contained in:
Tomas Hruby 2010-03-05 22:23:03 +00:00
parent 35a108b911
commit ecf1a36d48

View file

@ -621,16 +621,16 @@ copr_not_available:
clts
cld /* set direction flag to a known value */
SAVE_PROCESS_CTX_NON_LAZY(0)
/* stop user process cycles */
push %ebp
call cycles_accounting_stop
pop %ebp
lea P_MISC_FLAGS(%ebp), %ebx
movw (%ebx), %cx
and $MF_FPU_INITIALIZED, %cx
jnz 0f /* jump if FPU is already initialized */
orw $MF_FPU_INITIALIZED, (%ebx)
fninit
/* stop user process cycles */
push %ebp
call cycles_accounting_stop
add $4, %esp
jmp copr_return
0: /* load FPU context for current process */
mov %ss:FP_SAVE_AREA_P(%ebp), %eax