Changeset 005384ad in mainline
- Timestamp:
- 2005-09-04T00:19:47Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 3396f59
- Parents:
- 5eb1379
- Location:
- arch/ia32/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia32/src/fpu_context.c
r5eb1379 r005384ad 39 39 void fpu_context_restore(fpu_context_t *fctx) 40 40 { 41 if (THREAD==CPU->fpu_owner) {reset_TS_flag(); }42 else43 {41 if (THREAD==CPU->fpu_owner) 42 reset_TS_flag(); 43 else { 44 44 set_TS_flag(); 45 if((CPU->fpu_owner)!=NULL)(CPU->fpu_owner)->fpu_context_engaged=1; 45 if (CPU->fpu_owner != NULL) 46 (CPU->fpu_owner)->fpu_context_engaged=1; 46 47 } 47 48 } … … 50 51 void fpu_lazy_context_save(fpu_context_t *fctx) 51 52 { 53 __asm__ volatile ( 54 "fnsave %0" 55 : "=m"(*fctx) 56 ); 52 57 return; 53 __asm__ (54 "fnsave %0"55 : "=m"(fctx)56 );57 58 } 58 59 59 60 void fpu_lazy_context_restore(fpu_context_t *fctx) 60 61 { 62 __asm__ volatile ( 63 "frstor %0" 64 : "=m"(*fctx) 65 ); 61 66 return; 62 __asm__ (63 "frstor %0"64 : "=m"(fctx)65 );66 67 } 67 68 68 69 void fpu_init(void) 69 70 { 70 asm(71 __asm__ volatile ( 71 72 "fninit;" 72 73 ); -
arch/ia32/src/interrupt.c
r5eb1379 r005384ad 111 111 { 112 112 reset_TS_flag(); 113 if ( (CPU->fpu_owner)!=NULL) {113 if (CPU->fpu_owner != NULL) { 114 114 fpu_lazy_context_save(&((CPU->fpu_owner)->saved_fpu_context)); 115 (CPU->fpu_owner)->fpu_context_engaged=0; /* don't prevent migration */115 CPU->fpu_owner->fpu_context_engaged=0; /* don't prevent migration */ 116 116 } 117 if(THREAD->fpu_context_exists) fpu_lazy_context_restore(&(THREAD->saved_fpu_context)); 118 else {fpu_init();THREAD->fpu_context_exists=1;} 117 if (THREAD->fpu_context_exists) 118 fpu_lazy_context_restore(&(THREAD->saved_fpu_context)); 119 else { 120 fpu_init(); 121 THREAD->fpu_context_exists=1; 122 } 119 123 CPU->fpu_owner=THREAD; 120 124 }
Note:
See TracChangeset
for help on using the changeset viewer.