summaryrefslogtreecommitdiffstats
path: root/cpukit/score/cpu/sparc/cpu_asm.S
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/cpu/sparc/cpu_asm.S')
-rw-r--r--cpukit/score/cpu/sparc/cpu_asm.S11
1 files changed, 7 insertions, 4 deletions
diff --git a/cpukit/score/cpu/sparc/cpu_asm.S b/cpukit/score/cpu/sparc/cpu_asm.S
index d5afd5f7b0..1251faa2f7 100644
--- a/cpukit/score/cpu/sparc/cpu_asm.S
+++ b/cpukit/score/cpu/sparc/cpu_asm.S
@@ -523,8 +523,9 @@ dont_do_the_window:
* context.
*/
andcc %l0, %l5, %g0
- bne,a dont_switch_stacks
- st %fsr, [%g6 + SPARC_PER_CPU_FSR_OFFSET]
+ beq dont_switch_stacks
+ nop
+ st %fsr, [%g6 + SPARC_PER_CPU_FSR_OFFSET]
#endif
dont_switch_stacks:
@@ -683,11 +684,13 @@ isr_dispatch:
cmp %l6, %l7
bne,a .Ldisable_fp
andn %l0, %l5, %l0
+ st %g0, [%g6 + SPARC_PER_CPU_FP_OWNER_OFFSET]
ba .Lthread_dispatch_done
- st %g0, [%g6 + SPARC_PER_CPU_FP_OWNER_OFFSET]
+ nop
.Ldisable_fp:
+ st %l0, [%fp + ISF_PSR_OFFSET]
ba .Lthread_dispatch_done
- st %l0, [%fp + ISF_PSR_OFFSET]
+ nop
.Lnon_fp_thread_dispatch:
#elif defined(SPARC_USE_SYNCHRONOUS_FP_SWITCH)
/* Test if we interrupted a floating point thread (PSR[EF] == 1) */