diff options
Diffstat (limited to 'cpukit/score')
-rw-r--r-- | cpukit/score/cpu/m68k/cpu.c | 29 | ||||
-rw-r--r-- | cpukit/score/src/thread.c | 2 |
2 files changed, 30 insertions, 1 deletions
diff --git a/cpukit/score/cpu/m68k/cpu.c b/cpukit/score/cpu/m68k/cpu.c index 01fbabd957..afbac7f813 100644 --- a/cpukit/score/cpu/m68k/cpu.c +++ b/cpukit/score/cpu/m68k/cpu.c @@ -177,3 +177,32 @@ const unsigned char __BFFFOtable[256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; #endif + +/*PAGE + * + * The following code context switches the software FPU emulation + * code provided with GCC. + */ + +#if (CPU_SOFTWARE_FP == TRUE) +extern Context_Control_fp _fpCCR; + +void CPU_Context_save_fp (void **fp_context_ptr) +{ + Context_Control_fp *fp; + + fp = (Context_Control_fp *) *fp_context_ptr; + + *fp = _fpCCR; +} + +void CPU_Context_restore_fp (void **fp_context_ptr) +{ + Context_Control_fp *fp; + + fp = (Context_Control_fp *) *fp_context_ptr; + + _fpCCR = *fp; +} +#endif + diff --git a/cpukit/score/src/thread.c b/cpukit/score/src/thread.c index e4a3614a53..b63ad619bd 100644 --- a/cpukit/score/src/thread.c +++ b/cpukit/score/src/thread.c @@ -212,7 +212,7 @@ void _Thread_Start_multitasking( void ) */ -#if ( CPU_HARDWARE_FP == TRUE ) +#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) /* * don't need to worry about saving BSP's floating point state */ |