* Kumar Gala ([EMAIL PROTECTED]) wrote: > is there a reason this isn't local_add_return(long a, local_t *l) on > ppc32? > > (same comment for other functions) > > - k
no, except that we use the code is taken from atomic.h and used an int parameter. However, due to the semantics of local_t, we should manipulate longs instead of ints, even if they are the same size on a given architecture (ppc32 and mips32 are affectec by this). Signed-off-by: Mathieu Desnoyers <[EMAIL PROTECTED]> --- a/include/asm-powerpc/local.h +++ b/include/asm-powerpc/local.h @@ -21,9 +21,9 @@ typedef struct #ifndef __powerpc64__ -static __inline__ int local_add_return(int a, local_t *l) +static __inline__ long local_add_return(long a, local_t *l) { - int t; + long t; __asm__ __volatile__( "1: lwarx %0,0,%2 # local_add_return\n\ @@ -40,9 +40,9 @@ static __inline__ int local_add_return(int a, local_t *l) #define local_add_negative(a, l) (local_add_return((a), (l)) < 0) -static __inline__ int local_sub_return(int a, local_t *l) +static __inline__ long local_sub_return(long a, local_t *l) { - int t; + long t; __asm__ __volatile__( "1: lwarx %0,0,%2 # local_sub_return\n\ @@ -57,9 +57,9 @@ static __inline__ int local_sub_return(int a, local_t *l) return t; } -static __inline__ int local_inc_return(local_t *l) +static __inline__ long local_inc_return(local_t *l) { - int t; + long t; __asm__ __volatile__( "1: lwarx %0,0,%1 # local_inc_return\n\ @@ -84,9 +84,9 @@ static __inline__ int local_inc_return(local_t *l) */ #define local_inc_and_test(l) (local_inc_return(l) == 0) -static __inline__ int local_dec_return(local_t *l) +static __inline__ long local_dec_return(local_t *l) { - int t; + long t; __asm__ __volatile__( "1: lwarx %0,0,%1 # local_dec_return\n\ @@ -114,9 +114,9 @@ static __inline__ int local_dec_return(local_t *l) * Atomically adds @a to @l, so long as it was not @u. * Returns non-zero if @l was not @u, and zero otherwise. */ -static __inline__ int local_add_unless(local_t *l, int a, int u) +static __inline__ int local_add_unless(local_t *l, long a, long u) { - int t; + long t; __asm__ __volatile__ ( "1: lwarx %0,0,%1 # local_add_unless\n\ @@ -144,9 +144,9 @@ static __inline__ int local_add_unless(local_t *l, int a, int u) * Atomically test *l and decrement if it is greater than 0. * The function returns the old value of *l minus 1. */ -static __inline__ int local_dec_if_positive(local_t *l) +static __inline__ long local_dec_if_positive(local_t *l) { - int t; + long t; __asm__ __volatile__( "1: lwarx %0,0,%1 # local_dec_if_positive\n\ -- Mathieu Desnoyers Computer Engineering Ph.D. Candidate, École Polytechnique de Montréal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/