diff options
Diffstat (limited to 'cpukit/score/cpu/sparc/cpu_asm.S')
-rw-r--r-- | cpukit/score/cpu/sparc/cpu_asm.S | 11 |
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) */ |