From 434e7f7bee74fbd5467a7c8d239bb3faf8880044 Mon Sep 17 00:00:00 2001 From: Daniel Hellstrom Date: Fri, 23 May 2014 08:52:15 -0500 Subject: SPARC: syscall code clean-up and minor optimizations --- c/src/lib/libcpu/sparc/syscall/syscall.S | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) (limited to 'c/src/lib/libcpu/sparc/syscall') diff --git a/c/src/lib/libcpu/sparc/syscall/syscall.S b/c/src/lib/libcpu/sparc/syscall/syscall.S index aa69f45d48..2d53ebeae1 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 */ -- cgit v1.2.3