Changeset a3eeceb6 in mainline for generic/src/proc/scheduler.c


Ignore:
Timestamp:
2006-02-09T23:29:57Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d0a0f12
Parents:
8f00329
Message:

Unimportant changes regarding FPU context.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • generic/src/proc/scheduler.c

    r8f00329 ra3eeceb6  
    5656 * tread is passed control.
    5757 *
     58 * THREAD->lock is locked on entry
     59 *
    5860 */
    5961void before_thread_runs(void)
     
    7072                fpu_context_restore(&(THREAD->saved_fpu_context));
    7173        else {
    72                 fpu_init();
     74                fpu_init(&(THREAD->saved_fpu_context));
    7375                THREAD->fpu_context_exists=1;
    7476        }
     
    8082{
    8183        fpu_enable();
     84        spinlock_lock(&CPU->lock);
     85
     86        /* Save old context */
    8287        if (CPU->fpu_owner != NULL) { 
     88                spinlock_lock(&CPU->fpu_owner->lock);
    8389                fpu_context_save(&CPU->fpu_owner->saved_fpu_context);
    8490                /* don't prevent migration */
    8591                CPU->fpu_owner->fpu_context_engaged=0;
    86         }
     92                spinlock_unlock(&CPU->fpu_owner->lock);
     93        }
     94
     95        spinlock_lock(&THREAD->lock);
    8796        if (THREAD->fpu_context_exists)
    8897                fpu_context_restore(&THREAD->saved_fpu_context);
    8998        else {
    90                 fpu_init();
     99                fpu_init(&(THREAD->saved_fpu_context));
    91100                THREAD->fpu_context_exists=1;
    92101        }
    93102        CPU->fpu_owner=THREAD;
    94103        THREAD->fpu_context_engaged = 1;
     104
     105        spinlock_unlock(&THREAD->lock);
     106        spinlock_unlock(&CPU->lock);
    95107}
    96108#endif
Note: See TracChangeset for help on using the changeset viewer.