brianp 2002/09/01 02:34:42
Modified: . CHANGES
atomic/solaris_sparc apr_atomic_sparc.s
Log:
Fixed the SPARC v8plus version of apr_atomic_dec so that
it returns the new value instead of the old value (to match
the way the other implementations of this function work)
Revision Changes Path
1.327 +3 -0 apr/CHANGES
Index: CHANGES
===================================================================
RCS file: /home/cvs/apr/CHANGES,v
retrieving revision 1.326
retrieving revision 1.327
diff -u -r1.326 -r1.327
--- CHANGES 25 Aug 2002 04:22:35 -0000 1.326
+++ CHANGES 1 Sep 2002 09:34:42 -0000 1.327
@@ -1,5 +1,8 @@
Changes with APR 0.9.0
+ *) Fixed the native SPARC v8plus version of apr_atomic_dec
+ to match the semantics of the default C version [Brian Pane]
+
*) If the length argument to apr_snprintf is 0, then we should return the
length that the string would be if we actually were going to fill it
out.
However, if the length argument is 0, we can also accept a NULL string.
1.6 +4 -2 apr/atomic/solaris_sparc/apr_atomic_sparc.s
Index: apr_atomic_sparc.s
===================================================================
RCS file: /home/cvs/apr/atomic/solaris_sparc/apr_atomic_sparc.s,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- apr_atomic_sparc.s 22 Apr 2002 03:09:07 -0000 1.5
+++ apr_atomic_sparc.s 1 Sep 2002 09:34:42 -0000 1.6
@@ -65,6 +65,7 @@
! %o1 [input] - the increment delta value
! %o2 [local] - work register (was %l0 in book)
! %o3 [local] - work register (was %l1 in book)
+! %o4 [local] - work register
! %o0 [output] - contains return value
!
!
@@ -90,12 +91,13 @@
ld [%o0], %o2
_apr_atomic_sub_sparc_loop:
sub %o2, %o1, %o3
+ mov %o3, %o4
cas [%o0], %o2, %o3
cmp %o2, %o3
bne,a _apr_atomic_sub_sparc_loop
- ld [%o0], %o2
+ nop
retl
- mov %o3, %o0
+ mov %o4, %o0
SET_SIZE(apr_atomic_sub_sparc)
!