It works only with the native "as" but not with "gas".
is this a problem on solaris? doesn't every box come with 'as' out of the box?
I don't have the gnu-assembler installed on my solaris machines
if you think it gas on solaris support is needed can you supply me a patch or tell me what is going wrong with it?
TIA Ian
[EMAIL PROTECTED] wrote:
ianh 02/02/19 15:45:06
Modified: . configure.in atomic/solaris_sparc apr_atomic_sparc.s include apr_atomic.h test testatomic.c Log: enable sun-sparc specific code
Revision Changes Path 1.409 +12 -0 apr/configure.in
Index: configure.in =================================================================== RCS file: /home/cvs/apr/configure.in,v retrieving revision 1.408 retrieving revision 1.409 diff -u -r1.408 -r1.409 --- configure.in 15 Feb 2002 22:36:40 -0000 1.408 +++ configure.in 19 Feb 2002 23:45:06 -0000 1.409 @@ -322,6 +322,18 @@ enable_threads="no" eolstr="\\n" ;; + *sun*) + case $host_cpu in + *sparc*) + OSDIR="solaris_sparc" + eolstr="\\n" + ;; + *) + OSDIR="unix" + eolstr="\\n" + ;; + esac + ;; *) OSDIR="unix" eolstr="\\n"
1.3 +30 -7 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.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- apr_atomic_sparc.s 17 Feb 2002 20:17:53 -0000 1.2 +++ apr_atomic_sparc.s 19 Feb 2002 23:45:06 -0000 1.3 @@ -71,19 +71,20 @@ ! ENTRY(apr_atomic_add_sparc)
- ld [%o0], %o2 + ld [%o0], %o2 ! set o2 to current value _apr_atomic_add_sparc_loop: - add %o2, %o1, %o3 - cas [%o0], %o2, %o3 - cmp %o2, %o3 - bne,a _apr_atomic_add_sparc_loop - ld [%o0], %o2 + add %o2, %o1, %o3 ! o3 = o2 + o1 + cas [%o0], %o2, %o3 ! if cur-val==o2 then cur-val=03 + cmp %o2, %o3 ! see if the CAS worked + bne,a _apr_atomic_add_sparc_loop ! if not try again + ld [%o0], %o2 ! return the previous value retl mov %o3, %o0
SET_SIZE(apr_atomic_add_sparc) ! ! +! ENTRY(apr_atomic_sub_sparc)
ld [%o0], %o2 @@ -96,5 +97,27 @@ retl mov %o3, %o0
- SET_SIZE(apr_atomic_sub_sparc) + SET_SIZE(apr_atomic_sub_sparc) +! +! +! +! %o0 [input] - the address of the value to compare +! %o1 [input] - the new value +! %o2 [input] - value to compare against +! %o0 [output] - the return value +! + ENTRY(apr_atomic_cas_sparc) + ENTRY(apr_atomic_casptr_sparc) + + cas [%o0], %o2, %o1 + cmp %o1, %o2 ! if o1 == o2 values weren't swapped + bne,a _apr_atomic_cas_ne + mov %o2, %o0 + retl + mov %o2, %o0 +_apr_atomic_cas_ne: + retl + mov %o1, %o0 + + SET_SIZE(apr_atomic_cas_sparc)
1.8 +1 -1 apr/include/apr_atomic.h
Index: apr_atomic.h =================================================================== RCS file: /home/cvs/apr/include/apr_atomic.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- apr_atomic.h 19 Feb 2002 23:15:40 -0000 1.7 +++ apr_atomic.h 19 Feb 2002 23:45:06 -0000 1.8 @@ -173,7 +173,7 @@
#define APR_ATOMIC_NEED_CAS_DEFAULT 1
-#elif defined(__sparc__not_yet) +#elif defined(__sparc__) #define apr_atomic_t apr_uint32_t #define apr_atomic_read(p) *p
1.5 +0 -1 apr/test/testatomic.c
Index: testatomic.c =================================================================== RCS file: /home/cvs/apr/test/testatomic.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- testatomic.c 19 Feb 2002 23:15:39 -0000 1.4 +++ testatomic.c 19 Feb 2002 23:45:06 -0000 1.5 @@ -83,7 +83,6 @@ return APR_EGENERAL; } printf("OK\n"); - printf("debug\n y=%d\n",y); printf("%-60s", "testing CAS - match non-null"); oldval = apr_atomic_cas(&y,23,12); if (oldval != 12) {
