Changeset 9c926f3 in mainline


Ignore:
Timestamp:
2005-05-08T23:47:00Z (20 years ago)
Author:
Jakub Vana <jakub.vana@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
79f1f38f
Parents:
0c47db1
Message:

Begin support for FPU context switching on platforms which can't do it in lazy way.

Files:
7 edited

Legend:

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

    r0c47db1 r9c926f3  
    3131#include <fpu_context.h>
    3232
    33 void fpu_context_save(void)
     33void fpu_context_save(fpu_context_t *fctx)
    3434{
    3535}
    3636
    3737
    38 void fpu_context_restore()
     38void fpu_context_restore(fpu_context_t *fctx)
    3939{
    4040}
    4141
    4242
    43 void fpu_lazy_context_save()
     43void fpu_lazy_context_save(fpu_context_t *fctx)
    4444{
    4545/*
     
    5252}
    5353
    54 void fpu_lazy_context_restore()
     54void fpu_lazy_context_restore(fpu_context_t *fctx)
    5555{
    5656/*
  • arch/ia64/src/fpu_context.c

    r0c47db1 r9c926f3  
    3131#include <fpu_context.h>
    3232
    33 void fpu_context_save(void)
     33void fpu_context_save(fpu_context_t *fctx)
    3434{
    3535}
    3636
    3737
    38 void fpu_context_restore()
     38void fpu_context_restore(fpu_context_t *fctx)
    3939{
    4040}
    4141
    4242
    43 void fpu_lazy_context_save()
     43void fpu_lazy_context_save(fpu_context_t *fctx)
    4444{
    45 /*
    46         pushl %eax
    47         mov 8(%esp),%eax
    48         fxsave (%eax)
    49         popl %eax
    50         ret
    51 */     
    5245}
    5346
    54 void fpu_lazy_context_restore()
     47void fpu_lazy_context_restore(fpu_context_t *fctx)
    5548{
    56 /*
    57         pushl %eax
    58         mov 8(%esp),%eax
    59         fxrstor (%eax)
    60         popl %eax
    61         ret
    62 */     
    6349}
  • arch/mips/src/fpu_context.c

    r0c47db1 r9c926f3  
    3131#include <fpu_context.h>
    3232
    33 void fpu_context_save(void)
     33void fpu_context_save(fpu_context_t *fctx)
    3434{
    3535}
    3636
    3737
    38 void fpu_context_restore()
     38void fpu_context_restore(fpu_context_t *fctx)
    3939{
    4040}
    4141
    4242
    43 void fpu_lazy_context_save()
     43void fpu_lazy_context_save(fpu_context_t *fctx)
    4444{
    45 /*
    46         pushl %eax
    47         mov 8(%esp),%eax
    48         fxsave (%eax)
    49         popl %eax
    50         ret
    51 */     
    5245}
    5346
    54 void fpu_lazy_context_restore()
     47void fpu_lazy_context_restore(fpu_context_t *fctx)
    5548{
    56 /*
    57         pushl %eax
    58         mov 8(%esp),%eax
    59         fxrstor (%eax)
    60         popl %eax
    61         ret
    62 */     
    6349}
  • arch/powerpc/src/fpu_context.c

    r0c47db1 r9c926f3  
    3131#include <fpu_context.h>
    3232
    33 void fpu_context_save(void)
     33void fpu_context_save(fpu_context_t *fctx)
    3434{
    3535}
    3636
    3737
    38 void fpu_context_restore()
     38void fpu_context_restore(fpu_context_t *fctx)
    3939{
    4040}
    4141
    4242
    43 void fpu_lazy_context_save()
     43void fpu_lazy_context_save(fpu_context_t *fctx)
    4444{
    45 /*
    46         pushl %eax
    47         mov 8(%esp),%eax
    48         fxsave (%eax)
    49         popl %eax
    50         ret
    51 */     
    5245}
    5346
    54 void fpu_lazy_context_restore()
     47void fpu_lazy_context_restore(fpu_context_t *fctx)
    5548{
    56 /*
    57         pushl %eax
    58         mov 8(%esp),%eax
    59         fxrstor (%eax)
    60         popl %eax
    61         ret
    62 */     
     49
    6350}
  • include/fpu_context.h

    r0c47db1 r9c926f3  
    55
    66#include <arch/fpu_context.h>
     7#include <typedefs.h>
    78
    8 
    9 extern void fpu_context_save(void);
    10 extern void fpu_context_restore(void);
    11 extern void fpu_lazy_context_save(void);
    12 extern void fpu_lazy_context_restore(void);
     9extern void fpu_context_save(fpu_context_t *);
     10extern void fpu_context_restore(fpu_context_t *);
     11extern void fpu_lazy_context_save(fpu_context_t *);
     12extern void fpu_lazy_context_restore(fpu_context_t *);
    1313
    1414
  • include/proc/thread.h

    r0c47db1 r9c926f3  
    7474        context_t saved_context;
    7575        context_t sleep_timeout_context;
    76         fpu_context_t saved_fpu;                       
     76        fpu_context_t saved_fpu_context;                       
    7777       
    7878       
  • src/proc/scheduler.c

    r0c47db1 r9c926f3  
    5858{
    5959        before_thread_runs_arch();
    60         fpu_context_restore();
     60        fpu_context_restore(&(THREAD->saved_fpu_context));
    6161}
    6262
     
    205205        if (THREAD) {
    206206                spinlock_lock(&THREAD->lock);
     207                fpu_context_save(&(THREAD->saved_fpu_context));
    207208                if (!context_save(&THREAD->saved_context)) {
    208209                        /*
Note: See TracChangeset for help on using the changeset viewer.