On Wed, Mar 08, 2006 at 04:32:58PM -0800, Andrew Morton wrote: > Ravikiran G Thirumalai <[EMAIL PROTECTED]> wrote: > > > > On Wed, Mar 08, 2006 at 03:43:21PM -0800, Andrew Morton wrote: > > > Benjamin LaHaise <[EMAIL PROTECTED]> wrote: > > > > > > > > I think it may make more sense to simply convert local_t into a long, > > > > given > > > > that most of the users will be things like stats counters. > > > > > > > > > > Yes, I agree that making local_t signed would be better. It's consistent > > > with atomic_t, atomic64_t and atomic_long_t and it's a bit more flexible. > > > > > > Perhaps. A lot of applications would just be upcounters for statistics, > > > where unsigned is desired. But I think the consistency argument wins out. > > > > It already is... for most of the arches except x86_64. > > x86 uses unsigned long.
Here's a patch making x86_64 local_t to 64 bits like other 64 bit arches. This keeps local_t unsigned long. (We can change it to signed value along with other arches later in one go I guess) Thanks, Kiran Change x86_64 local_t to 64 bits like all other arches. Signed-off-by: Ravikiran Thirumalai <[EMAIL PROTECTED]> Index: linux-2.6.16-rc5mm3/include/asm-x86_64/local.h =================================================================== --- linux-2.6.16-rc5mm3.orig/include/asm-x86_64/local.h 2006-03-08 16:51:31.000000000 -0800 +++ linux-2.6.16-rc5mm3/include/asm-x86_64/local.h 2006-03-08 21:56:01.000000000 -0800 @@ -5,18 +5,18 @@ typedef struct { - volatile unsigned int counter; + volatile long counter; } local_t; #define LOCAL_INIT(i) { (i) } -#define local_read(v) ((v)->counter) +#define local_read(v) ((unsigned long)(v)->counter) #define local_set(v,i) (((v)->counter) = (i)) static __inline__ void local_inc(local_t *v) { __asm__ __volatile__( - "incl %0" + "incq %0" :"=m" (v->counter) :"m" (v->counter)); } @@ -24,7 +24,7 @@ static __inline__ void local_inc(local_t static __inline__ void local_dec(local_t *v) { __asm__ __volatile__( - "decl %0" + "decq %0" :"=m" (v->counter) :"m" (v->counter)); } @@ -32,7 +32,7 @@ static __inline__ void local_dec(local_t static __inline__ void local_add(unsigned int i, local_t *v) { __asm__ __volatile__( - "addl %1,%0" + "addq %1,%0" :"=m" (v->counter) :"ir" (i), "m" (v->counter)); } @@ -40,7 +40,7 @@ static __inline__ void local_add(unsigne static __inline__ void local_sub(unsigned int i, local_t *v) { __asm__ __volatile__( - "subl %1,%0" + "subq %1,%0" :"=m" (v->counter) :"ir" (i), "m" (v->counter)); } @@ -71,4 +71,4 @@ static __inline__ void local_sub(unsigne #define __cpu_local_add(i, v) cpu_local_add((i), (v)) #define __cpu_local_sub(i, v) cpu_local_sub((i), (v)) -#endif /* _ARCH_I386_LOCAL_H */ +#endif /* _ARCH_X8664_LOCAL_H */ - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html