forked from Imagelibrary/rtems
bsps/sparc: Remove fix for ERC32 with FPU rev. B/C
This commit is contained in:
@@ -420,70 +420,6 @@ dont_switch_stacks:
|
|||||||
|
|
||||||
mov %l0, %g5
|
mov %l0, %g5
|
||||||
and %l3, 0x0ff, %g4
|
and %l3, 0x0ff, %g4
|
||||||
|
|
||||||
/* This is a fix for ERC32 with FPU rev.B or rev.C */
|
|
||||||
|
|
||||||
#if defined(FPU_REVB)
|
|
||||||
|
|
||||||
|
|
||||||
subcc %g4, 0x08, %g0
|
|
||||||
be fpu_revb
|
|
||||||
subcc %g4, 0x11, %g0
|
|
||||||
bl dont_fix_pil
|
|
||||||
subcc %g4, 0x1f, %g0
|
|
||||||
bg dont_fix_pil
|
|
||||||
sll %g4, 8, %g4
|
|
||||||
and %g4, SPARC_PSR_PIL_MASK, %g4
|
|
||||||
andn %l0, SPARC_PSR_PIL_MASK, %g5
|
|
||||||
or %g4, %g5, %g5
|
|
||||||
srl %l0, 12, %g4
|
|
||||||
andcc %g4, 1, %g0
|
|
||||||
be dont_fix_pil
|
|
||||||
nop
|
|
||||||
ba,a enable_irq
|
|
||||||
|
|
||||||
|
|
||||||
fpu_revb:
|
|
||||||
srl %l0, 12, %g4 ! check if EF is set in %psr
|
|
||||||
andcc %g4, 1, %g0
|
|
||||||
be dont_fix_pil ! if FPU disabled than continue as normal
|
|
||||||
and %l3, 0xff, %g4
|
|
||||||
subcc %g4, 0x08, %g0
|
|
||||||
bne enable_irq ! if not a FPU exception then do two fmovs
|
|
||||||
set __sparc_fq, %g4
|
|
||||||
st %fsr, [%g4] ! if FQ is not empty and FQ[1] = fmovs
|
|
||||||
ld [%g4], %g4 ! than this is bug 3.14
|
|
||||||
srl %g4, 13, %g4
|
|
||||||
andcc %g4, 1, %g0
|
|
||||||
be dont_fix_pil
|
|
||||||
set __sparc_fq, %g4
|
|
||||||
std %fq, [%g4]
|
|
||||||
ld [%g4+4], %g4
|
|
||||||
set 0x81a00020, %g5
|
|
||||||
subcc %g4, %g5, %g0
|
|
||||||
bne,a dont_fix_pil2
|
|
||||||
wr %l0, SPARC_PSR_ET_MASK, %psr ! **** ENABLE TRAPS ****
|
|
||||||
ba,a simple_return
|
|
||||||
|
|
||||||
enable_irq:
|
|
||||||
or %g5, SPARC_PSR_PIL_MASK, %g4
|
|
||||||
wr %g4, SPARC_PSR_ET_MASK, %psr ! **** ENABLE TRAPS ****
|
|
||||||
nop; nop; nop
|
|
||||||
fmovs %f0, %f0
|
|
||||||
ba dont_fix_pil
|
|
||||||
fmovs %f0, %f0
|
|
||||||
|
|
||||||
.data
|
|
||||||
.global __sparc_fq
|
|
||||||
.align 8
|
|
||||||
__sparc_fq:
|
|
||||||
.word 0,0
|
|
||||||
|
|
||||||
.text
|
|
||||||
/* end of ERC32 FPU rev.B/C fix */
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
subcc %g4, 0x11, %g0
|
subcc %g4, 0x11, %g0
|
||||||
bl dont_fix_pil
|
bl dont_fix_pil
|
||||||
subcc %g4, 0x1f, %g0
|
subcc %g4, 0x1f, %g0
|
||||||
@@ -493,8 +429,6 @@ __sparc_fq:
|
|||||||
andn %l0, SPARC_PSR_PIL_MASK, %g5
|
andn %l0, SPARC_PSR_PIL_MASK, %g5
|
||||||
ba pil_fixed
|
ba pil_fixed
|
||||||
or %g4, %g5, %g5
|
or %g4, %g5, %g5
|
||||||
#endif
|
|
||||||
|
|
||||||
dont_fix_pil:
|
dont_fix_pil:
|
||||||
or %g5, SPARC_PSR_PIL_MASK, %g5
|
or %g5, SPARC_PSR_PIL_MASK, %g5
|
||||||
pil_fixed:
|
pil_fixed:
|
||||||
|
|||||||
Reference in New Issue
Block a user