/SPARTAN/trunk/arch/ia32/include/cpu.h |
---|
47,6 → 47,7 |
int model; |
int stepping; |
struct tss *tss; |
thread_t *fpu_owner; |
}; |
/SPARTAN/trunk/arch/ia32/src/fpu_context.c |
---|
40,8 → 40,8 |
void fpu_context_restore(fpu_context_t *fctx) |
{ |
if(THREAD==CPU->fpu_owner) {reset_TS_flag(); } |
else {set_TS_flag(); (CPU->fpu_owner)->fpu_context_engaged=1;} |
if(THREAD==CPU->arch.fpu_owner) {reset_TS_flag(); } |
else {set_TS_flag(); ((CPU->arch).fpu_owner)->fpu_context_engaged=1;} |
} |
/SPARTAN/trunk/arch/ia32/src/interrupt.c |
---|
88,16 → 88,16 |
void nm_fault(__u8 n, __u32 stack[]) |
{ |
if ((CPU->fpu_owner)!=NULL) |
if (((CPU->arch).fpu_owner)!=NULL) |
{ |
fpu_lazy_context_save(&((CPU->fpu_owner)->saved_fpu_context)); |
(CPU->fpu_owner)->fpu_context_engaged=0; /* Enables migration */ |
fpu_lazy_context_save(&(((CPU->arch).fpu_owner)->saved_fpu_context)); |
((CPU->arch).fpu_owner)->fpu_context_engaged=0; /* Enables migration */ |
} |
if(THREAD->fpu_context_exists) fpu_lazy_context_restore(&(THREAD->saved_fpu_context)); |
else {fpu_init();THREAD->fpu_context_exists=1;} |
CPU->fpu_owner=THREAD; |
(CPU->arch).fpu_owner=THREAD; |
reset_TS_flag(); |
/SPARTAN/trunk/arch/ia32/src/cpu/cpu.c |
---|
92,7 → 92,7 |
void cpu_arch_init(void) |
{ |
CPU->arch.tss = tss_p; |
CPU->fpu_owner=NULL; |
CPU->arch.fpu_owner=NULL; |
} |
/SPARTAN/trunk/include/cpu.h |
---|
66,8 → 66,6 |
__u32 delay_loop_const; |
cpu_arch_t arch; |
thread_t *fpu_owner; |
__u8 *stack; |
}; |
/SPARTAN/trunk/src/proc/scheduler.c |
---|
269,7 → 269,7 |
spinlock_unlock(&threads_lock); |
spinlock_lock(&THREAD->cpu->lock); |
if(THREAD->cpu->fpu_owner==THREAD) THREAD->cpu->fpu_owner=NULL; |
if(THREAD->cpu->arch.fpu_owner==THREAD) THREAD->cpu->arch.fpu_owner=NULL; |
spinlock_unlock(&THREAD->cpu->lock); |
/SPARTAN/trunk/src/Makefile.config |
---|
1,6 → 1,6 |
#ARCH=ia32 |
ARCH=ia32 |
#ARCH=mips |
ARCH=ia64 |
#ARCH=ia64 |
#ARCH=powerpc |
#ARCH=amd64 |