svn commit: r202238 - stable/7/sys/sparc64/sparc64
Marius Strobl
marius at FreeBSD.org
Wed Jan 13 20:40:52 UTC 2010
Author: marius
Date: Wed Jan 13 20:40:51 2010
New Revision: 202238
URL: http://svn.freebsd.org/changeset/base/202238
Log:
MFC: r200914
Don't use an out register to hold the vector number across the call
of the interrupt handler in intr_fast() as the handler might clobber
it (no in-tree handler currently does but an upcoming one will).
While at it, tidy the register usage in the interrupt counting code.
Modified:
stable/7/sys/sparc64/sparc64/interrupt.S
Directory Properties:
stable/7/sys/ (props changed)
stable/7/sys/cddl/contrib/opensolaris/ (props changed)
stable/7/sys/contrib/dev/acpica/ (props changed)
stable/7/sys/contrib/pf/ (props changed)
Modified: stable/7/sys/sparc64/sparc64/interrupt.S
==============================================================================
--- stable/7/sys/sparc64/sparc64/interrupt.S Wed Jan 13 20:40:49 2010 (r202237)
+++ stable/7/sys/sparc64/sparc64/interrupt.S Wed Jan 13 20:40:51 2010 (r202238)
@@ -176,7 +176,7 @@ ENTRY(intr_fast)
3: ldx [%l0 + IR_FUNC], %o0
ldx [%l0 + IR_ARG], %o1
- lduw [%l0 + IR_VEC], %o2
+ lduw [%l0 + IR_VEC], %l2
ldx [PCPU(IRFREE)], %l1
stx %l1, [%l0 + IR_NEXT]
@@ -188,17 +188,17 @@ ENTRY(intr_fast)
call %o0
mov %o1, %o0
- /* intrcnt[intr_countp[%o2]]++ */
- SET(intrcnt, %l7, %l2) /* %l2 = intrcnt */
- prefetcha [%l2] ASI_N, 1
- SET(intr_countp, %l7, %l3) /* %l3 = intr_countp */
- sllx %o2, 1, %l4 /* %l4 = vec << 1 */
- lduh [%l4 + %l3], %l5 /* %l5 = intr_countp[%o2] */
- sllx %l5, 3, %l6 /* %l6 = intr_countp[%o2] << 3 */
- add %l6, %l2, %l7 /* %l7 = intrcnt[intr_countp[%o2]] */
- ldx [%l7], %l2
+ /* intrcnt[intr_countp[%l2]]++ */
+ SET(intrcnt, %l7, %l3) /* %l3 = intrcnt */
+ prefetcha [%l3] ASI_N, 1
+ SET(intr_countp, %l7, %l4) /* %l4 = intr_countp */
+ sllx %l2, 1, %l2 /* %l2 = vec << 1 */
+ lduh [%l4 + %l2], %l4 /* %l4 = intr_countp[%l2] */
+ sllx %l4, 3, %l4 /* %l4 = intr_countp[%l2] << 3 */
+ add %l4, %l3, %l4 /* %l4 = intrcnt[intr_countp[%l2]] */
+ ldx [%l4], %l2
inc %l2
- stx %l2, [%l7]
+ stx %l2, [%l4]
ba,a %xcc, 1b
nop
More information about the svn-src-stable-7
mailing list