Changeset a3eeceb6 in mainline


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.

Files:
9 edited

Legend:

Unmodified
Added
Removed
  • arch/amd64/src/fpu_context.c

    r8f00329 ra3eeceb6  
    5757}
    5858
    59 void fpu_init(void)
     59void fpu_init(fpu_context_t *fctx)
    6060{
    6161        /* TODO: Zero all SSE, MMX etc. registers */
  • arch/ia32/src/fpu_context.c

    r8f00329 ra3eeceb6  
    4949}
    5050
    51 void fpu_init(void)
     51void fpu_init(fpu_context_t *fctx)
    5252{
    5353        __asm__ volatile (
  • arch/mips32/src/fpu_context.c

    r8f00329 ra3eeceb6  
    5151}
    5252
    53 void fpu_init(void)
     53void fpu_init(fpu_context_t *fctx)
    5454{
    5555        /* TODO: Zero all registers */
  • generic/include/fpu_context.h

    r8f00329 ra3eeceb6  
    3636extern void fpu_context_save(fpu_context_t *);
    3737extern void fpu_context_restore(fpu_context_t *);
    38 extern void fpu_init(void);
     38extern void fpu_init(fpu_context_t *);
    3939extern void fpu_enable(void);
    4040extern void fpu_disable(void);
  • generic/include/mm/frame.h

    r8f00329 ra3eeceb6  
    5858        __address e1 = s1+sz1;
    5959        __address e2 = s2+sz2;
    60         if (s1 >= s2 && s1 < e2)
    61                 return 1;
    62         if (e1 >= s2 && e1 < e2)
    63                 return 1;
    64         if ((s1 < s2) && (e1 >= e2))
    65                 return 1;
    66         return 0;
     60
     61        return s1 < e2 && s2 < e1;
    6762}
    6863
  • 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
  • test/fpu/fpu1/test.c

    r8f00329 ra3eeceb6  
    127127        waitq_wakeup(&can_start, WAKEUP_ALL);
    128128
    129         while (threads_ok != THREADS)
     129        while (atomic_get(&threads_ok) != THREADS)
    130130                ;
    131131               
  • test/fpu/mips1/test.c

    r8f00329 ra3eeceb6  
    4848{
    4949        int i;
    50         volatile long long j;
    51         double e,d,le,f;
    5250        int arg __attribute__((aligned(16))) = (int)((__native) data);
    5351        int after_arg __attribute__((aligned(16)));
     
    7876{
    7977        int i;
    80         volatile long long j;
    81         double e,d,le,f;
    8278        int arg __attribute__((aligned(16))) = (int)((__native) data);
    8379        int after_arg __attribute__((aligned(16)));
     
    130126        waitq_wakeup(&can_start, WAKEUP_ALL);
    131127
    132         while (threads_ok != THREADS)
     128        while (atomic_get(&threads_ok) != THREADS)
    133129                ;
    134130               
  • test/fpu/sse1/test.c

    r8f00329 ra3eeceb6  
    4848{
    4949        int i;
    50         volatile long long j;
    51         double e,d,le,f;
    5250        int arg __attribute__((aligned(16))) = (int)((__native) data);
    5351        int after_arg __attribute__((aligned(16)));
     
    7876{
    7977        int i;
    80         volatile long long j;
    81         double e,d,le,f;
    8278        int arg __attribute__((aligned(16))) = (int)((__native) data);
    8379        int after_arg __attribute__((aligned(16)));
     
    130126        waitq_wakeup(&can_start, WAKEUP_ALL);
    131127
    132         while (threads_ok != THREADS)
     128        while (atomic_get(&threads_ok) != THREADS)
    133129                ;
    134130               
Note: See TracChangeset for help on using the changeset viewer.