[PATCH 1/2] SPARC: syscall code clean-up and minor optimizations
Joel Sherrill
joel.sherrill at OARcorp.com
Fri May 23 14:01:45 UTC 2014
This looks OK as best I can tell.
On 5/23/2014 8:52 AM, Daniel Hellstrom wrote:
> ---
> 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 */
--
Joel Sherrill, Ph.D. Director of Research & Development
joel.sherrill at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the devel
mailing list