Changeset b49f4ae in mainline for arch/amd64/src
- Timestamp:
- 2005-09-06T09:56:26Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 50a4e25
- Parents:
- a5d1331
- Location:
- arch/amd64/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/amd64/src/cpu/cpu.c
ra5d1331 rb49f4ae 91 91 * 92 92 */ 93 void set_TS_flag(void)93 void fpu_disable(void) 94 94 { 95 95 __asm__ volatile ( … … 103 103 } 104 104 105 void reset_TS_flag(void)105 void fpu_enable(void) 106 106 { 107 107 __asm__ volatile ( -
arch/amd64/src/fpu_context.c
ra5d1331 rb49f4ae 34 34 void fpu_context_save(fpu_context_t *fctx) 35 35 { 36 } 37 38 void fpu_context_restore(fpu_context_t *fctx) 39 { 40 if(THREAD==CPU->fpu_owner) 41 reset_TS_flag(); 42 else 43 set_TS_flag(); 44 } 45 46 47 void fpu_lazy_context_save(fpu_context_t *fctx) 48 { 49 /* TODO: We need malloc that allocates on 16-byte boundary !! */ 36 /* Align on 16-byte boundary */ 50 37 if (((__u64)fctx) & 0xf) 51 38 fctx = (fpu_context_t *)((((__u64)fctx) | 0xf) + 1); … … 57 44 } 58 45 59 void fpu_ lazy_context_restore(fpu_context_t *fctx)46 void fpu_context_restore(fpu_context_t *fctx) 60 47 { 61 48 /* TODO: We need malloc that allocates on 16-byte boundary !! */ -
arch/amd64/src/interrupt.c
ra5d1331 rb49f4ae 39 39 #include <symtab.h> 40 40 #include <arch/asm.h> 41 41 #include <proc/scheduler.h> 42 42 43 43 … … 139 139 void nm_fault(__u8 n, __native stack[]) 140 140 { 141 reset_TS_flag(); 142 if (CPU->fpu_owner != NULL) { 143 fpu_lazy_context_save(&CPU->fpu_owner->saved_fpu_context); 144 /* don't prevent migration */ 145 CPU->fpu_owner->fpu_context_engaged=0; 146 } 147 if (THREAD->fpu_context_exists) 148 fpu_lazy_context_restore(&THREAD->saved_fpu_context); 149 else { 150 fpu_init(); 151 THREAD->fpu_context_exists=1; 152 } 153 CPU->fpu_owner=THREAD; 154 THREAD->fpu_context_engaged = 1; 141 #ifdef FPU_LAZY 142 scheduler_fpu_lazy_request(); 143 #else 144 panic("fpu fault"); 145 #endif 155 146 } 156 147
Note:
See TracChangeset
for help on using the changeset viewer.