Index: arch/hppa/hppa/lock_stubs.S =================================================================== RCS file: /cvsroot/src/sys/arch/hppa/hppa/lock_stubs.S,v retrieving revision 1.18 diff -u -p -u -r1.18 lock_stubs.S --- arch/hppa/hppa/lock_stubs.S 22 Jan 2011 19:10:16 -0000 1.18 +++ arch/hppa/hppa/lock_stubs.S 29 Jan 2011 18:52:53 -0000 @@ -31,14 +31,18 @@ #include "opt_multiprocessor.h" #include "opt_lockdebug.h" +#if 0 #include "opt_cputype.h" #include "opt_ddb.h" +#endif #define __MUTEX_PRIVATE #include #include +#include #include +#include #include "assym.h" @@ -51,10 +55,8 @@ * we don't need the overhead of interlocking. */ -#ifndef MULTIPROCESSOR - .global _lock_cas_ras_start - .global _lock_cas_ras_end +#ifndef LOCKDEBUG .global mutex_enter_crit_start .global mutex_enter_crit_end @@ -63,38 +65,6 @@ .import mutex_vector_exit, code .import mutex_wakeup, code -LEAF_ENTRY(_lock_cas) -_lock_cas_ras_start: - ldw 0(%arg0),%t1 - comb,<> %arg1, %t1, 1f - copy %t1,%ret0 -_lock_cas_ras_end: - stw %arg2,0(%arg0) - copy %arg1,%ret0 -1: - bv,n %r0(%rp) - -EXIT(_lock_cas) - -STRONG_ALIAS(_atomic_cas_ulong,_lock_cas) -STRONG_ALIAS(atomic_cas_ulong,_lock_cas) -STRONG_ALIAS(_atomic_cas_32,_lock_cas) -STRONG_ALIAS(atomic_cas_32,_lock_cas) -STRONG_ALIAS(_atomic_cas_uint,_lock_cas) -STRONG_ALIAS(atomic_cas_uint,_lock_cas) -STRONG_ALIAS(_atomic_cas_ptr,_lock_cas) -STRONG_ALIAS(atomic_cas_ptr,_lock_cas) - -STRONG_ALIAS(_atomic_cas_ulong_ni,_lock_cas) -STRONG_ALIAS(atomic_cas_ulong_ni,_lock_cas) -STRONG_ALIAS(_atomic_cas_32_ni,_lock_cas) -STRONG_ALIAS(atomic_cas_32_ni,_lock_cas) -STRONG_ALIAS(_atomic_cas_uint_ni,_lock_cas) -STRONG_ALIAS(atomic_cas_uint_ni,_lock_cas) -STRONG_ALIAS(_atomic_cas_ptr_ni,_lock_cas) -STRONG_ALIAS(atomic_cas_ptr_ni,_lock_cas) - -#ifndef LOCKDEBUG /* * void mutex_exit(kmutex_t *mtx); */ @@ -186,7 +156,7 @@ LEAF_ENTRY(mutex_enter) mutex_enter_crit_start: comib,= 0,%ret0,.Lenter_slowpath - mfctl CR_CURLWP, %t2 + GET_CURLWP(%t2) bv %r0(%rp) mutex_enter_crit_end: @@ -195,6 +165,44 @@ EXIT(mutex_enter) #endif /* !LOCKDEBUG */ + + +#ifndef MULTIPROCESSOR + + .global _lock_cas_ras_start + .global _lock_cas_ras_end + +LEAF_ENTRY(_lock_cas) +_lock_cas_ras_start: + ldw 0(%arg0),%t1 + comb,<> %arg1, %t1, 1f + copy %t1,%ret0 +_lock_cas_ras_end: + stw %arg2,0(%arg0) + copy %arg1,%ret0 +1: + bv,n %r0(%rp) + +EXIT(_lock_cas) + +STRONG_ALIAS(_atomic_cas_ulong,_lock_cas) +STRONG_ALIAS(atomic_cas_ulong,_lock_cas) +STRONG_ALIAS(_atomic_cas_32,_lock_cas) +STRONG_ALIAS(atomic_cas_32,_lock_cas) +STRONG_ALIAS(_atomic_cas_uint,_lock_cas) +STRONG_ALIAS(atomic_cas_uint,_lock_cas) +STRONG_ALIAS(_atomic_cas_ptr,_lock_cas) +STRONG_ALIAS(atomic_cas_ptr,_lock_cas) + +STRONG_ALIAS(_atomic_cas_ulong_ni,_lock_cas) +STRONG_ALIAS(atomic_cas_ulong_ni,_lock_cas) +STRONG_ALIAS(_atomic_cas_32_ni,_lock_cas) +STRONG_ALIAS(atomic_cas_32_ni,_lock_cas) +STRONG_ALIAS(_atomic_cas_uint_ni,_lock_cas) +STRONG_ALIAS(atomic_cas_uint_ni,_lock_cas) +STRONG_ALIAS(_atomic_cas_ptr_ni,_lock_cas) +STRONG_ALIAS(atomic_cas_ptr_ni,_lock_cas) + #else /* !MULTIPROCESSOR */ /*