---
 c/src/lib/libcpu/sparc/syscall/syscall.S |   27 +++++++++++----------------
 1 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/c/src/lib/libcpu/sparc/syscall/syscall.S 
b/c/src/lib/libcpu/sparc/syscall/syscall.S
index aa69f45..2d53ebe 100644
--- a/c/src/lib/libcpu/sparc/syscall/syscall.S
+++ b/c/src/lib/libcpu/sparc/syscall/syscall.S
@@ -37,42 +37,37 @@ SYM(syscall):
 
        subcc   %g1, 2, %g0             ! syscall 2, disable interrupts
        bne     3f
+        subcc   %g1, 3, %g0            ! syscall 3, enable interrupts
        or      %l0, 0x0f00, %l4        ! set PIL=15
-       mov     %l4, %psr
-       or      %l0, SPARC_PSR_ET_MASK, %i0     ! return old psr with ET=1
-       ba,a    9f
+       ba      9f
+        or     %l0, SPARC_PSR_ET_MASK, %i0     ! return old psr with ET=1
 3:
-       subcc   %g1, 3, %g0             ! syscall 3, enable interrupts
        bne     1f
-       and     %i0, SPARC_PSR_PIL_MASK, %l4
+        and    %i0, SPARC_PSR_PIL_MASK, %l4
        andn    %l0, SPARC_PSR_PIL_MASK, %l5
        or      %l5, %l4, %l4
-       mov     %l4, %psr
-       ba,a    9f
-
-1:
-       ta      0                       ! halt
 9:                                     ! leave
+       mov     %l4, %psr               ! Update PSR according to Syscall 2 or 3
        mov     0, %g1                  ! clear %g1
-        jmpl    %l2, %g0
-        rett    %l2 + 4
+       jmpl    %l2, %g0
+        rett    %l2 + 4
+1:
+       ta      0                       ! syscall 1 (not 2 or 3), halt
 
         PUBLIC(sparc_disable_interrupts)
 
 SYM(sparc_disable_interrupts):
 
        mov     SYS_irqdis, %g1
-       ta      0
        retl
-       nop
+        ta     0
 
         PUBLIC(sparc_enable_interrupts)
 
 SYM(sparc_enable_interrupts):
 
        mov     SYS_irqen, %g1
-       ta      0
        retl
-       nop
+        ta     0
 
 /* end of file */
-- 
1.7.0.4

_______________________________________________
rtems-devel mailing list
rtems-devel@rtems.org
http://www.rtems.org/mailman/listinfo/rtems-devel

Reply via email to