forked from Imagelibrary/rtems
SPARC: syscall code clean-up and minor optimizations
This commit is contained in:
committed by
Joel Sherrill
parent
b3049a1d90
commit
434e7f7bee
@@ -37,42 +37,37 @@ SYM(syscall):
|
|||||||
|
|
||||||
subcc %g1, 2, %g0 ! syscall 2, disable interrupts
|
subcc %g1, 2, %g0 ! syscall 2, disable interrupts
|
||||||
bne 3f
|
bne 3f
|
||||||
|
subcc %g1, 3, %g0 ! syscall 3, enable interrupts
|
||||||
or %l0, 0x0f00, %l4 ! set PIL=15
|
or %l0, 0x0f00, %l4 ! set PIL=15
|
||||||
mov %l4, %psr
|
ba 9f
|
||||||
or %l0, SPARC_PSR_ET_MASK, %i0 ! return old psr with ET=1
|
or %l0, SPARC_PSR_ET_MASK, %i0 ! return old psr with ET=1
|
||||||
ba,a 9f
|
|
||||||
3:
|
3:
|
||||||
subcc %g1, 3, %g0 ! syscall 3, enable interrupts
|
|
||||||
bne 1f
|
bne 1f
|
||||||
and %i0, SPARC_PSR_PIL_MASK, %l4
|
and %i0, SPARC_PSR_PIL_MASK, %l4
|
||||||
andn %l0, SPARC_PSR_PIL_MASK, %l5
|
andn %l0, SPARC_PSR_PIL_MASK, %l5
|
||||||
or %l5, %l4, %l4
|
or %l5, %l4, %l4
|
||||||
mov %l4, %psr
|
|
||||||
ba,a 9f
|
|
||||||
|
|
||||||
1:
|
|
||||||
ta 0 ! halt
|
|
||||||
9: ! leave
|
9: ! leave
|
||||||
|
mov %l4, %psr ! Update PSR according to Syscall 2 or 3
|
||||||
mov 0, %g1 ! clear %g1
|
mov 0, %g1 ! clear %g1
|
||||||
jmpl %l2, %g0
|
jmpl %l2, %g0
|
||||||
rett %l2 + 4
|
rett %l2 + 4
|
||||||
|
1:
|
||||||
|
ta 0 ! syscall 1 (not 2 or 3), halt
|
||||||
|
|
||||||
PUBLIC(sparc_disable_interrupts)
|
PUBLIC(sparc_disable_interrupts)
|
||||||
|
|
||||||
SYM(sparc_disable_interrupts):
|
SYM(sparc_disable_interrupts):
|
||||||
|
|
||||||
mov SYS_irqdis, %g1
|
mov SYS_irqdis, %g1
|
||||||
ta 0
|
|
||||||
retl
|
retl
|
||||||
nop
|
ta 0
|
||||||
|
|
||||||
PUBLIC(sparc_enable_interrupts)
|
PUBLIC(sparc_enable_interrupts)
|
||||||
|
|
||||||
SYM(sparc_enable_interrupts):
|
SYM(sparc_enable_interrupts):
|
||||||
|
|
||||||
mov SYS_irqen, %g1
|
mov SYS_irqen, %g1
|
||||||
ta 0
|
|
||||||
retl
|
retl
|
||||||
nop
|
ta 0
|
||||||
|
|
||||||
/* end of file */
|
/* end of file */
|
||||||
|
|||||||
Reference in New Issue
Block a user