sparc: Remove superfluous FP enable

The FP context save/restore makes only sense in the context of FP
threads.

Update #2270.
This commit is contained in:
Sebastian Huber
2015-05-29 15:54:29 +02:00
parent 8a1dc71b8e
commit 1f6cdba6e1
2 changed files with 7 additions and 22 deletions

View File

@@ -125,6 +125,11 @@ void _CPU_Initialize(void)
{ {
#if (SPARC_HAS_FPU == 1) #if (SPARC_HAS_FPU == 1)
Context_Control_fp *pointer; Context_Control_fp *pointer;
uint32_t psr;
sparc_get_psr( psr );
psr |= SPARC_PSR_EF_MASK;
sparc_set_psr( psr );
/* /*
* This seems to be the most appropriate way to obtain an initial * This seems to be the most appropriate way to obtain an initial

View File

@@ -44,17 +44,7 @@
.align 4 .align 4
PUBLIC(_CPU_Context_save_fp) PUBLIC(_CPU_Context_save_fp)
SYM(_CPU_Context_save_fp): SYM(_CPU_Context_save_fp):
/* ld [%o0], %o1
* The following enables the floating point unit.
*/
mov %psr, %o1
sethi %hi(SPARC_PSR_EF_MASK), %o2
or %o2, %lo(SPARC_PSR_EF_MASK), %o2
or %o1, %o2, %o1
mov %o1, %psr ! **** ENABLE FLOAT ACCESS ****
nop; nop; nop; ! Need three nops before EF is
ld [%o0], %o1 ! active due to pipeline delay!!!
std %f0, [%o1 + FO_F1_OFFSET] std %f0, [%o1 + FO_F1_OFFSET]
std %f2, [%o1 + F2_F3_OFFSET] std %f2, [%o1 + F2_F3_OFFSET]
std %f4, [%o1 + F4_F5_OFFSET] std %f4, [%o1 + F4_F5_OFFSET]
@@ -90,17 +80,7 @@ SYM(_CPU_Context_save_fp):
.align 4 .align 4
PUBLIC(_CPU_Context_restore_fp) PUBLIC(_CPU_Context_restore_fp)
SYM(_CPU_Context_restore_fp): SYM(_CPU_Context_restore_fp):
/* ld [%o0], %o1
* The following enables the floating point unit.
*/
mov %psr, %o1
sethi %hi(SPARC_PSR_EF_MASK), %o2
or %o2, %lo(SPARC_PSR_EF_MASK), %o2
or %o1, %o2, %o1
mov %o1, %psr ! **** ENABLE FLOAT ACCESS ****
nop; nop; nop; ! Need three nops before EF is
ld [%o0], %o1 ! active due to pipeline delay!!!
ldd [%o1 + FO_F1_OFFSET], %f0 ldd [%o1 + FO_F1_OFFSET], %f0
ldd [%o1 + F2_F3_OFFSET], %f2 ldd [%o1 + F2_F3_OFFSET], %f2
ldd [%o1 + F4_F5_OFFSET], %f4 ldd [%o1 + F4_F5_OFFSET], %f4