Re: [PATCH 3/23] make atomic_read() and atomic_set() behavior consistent on arm

2007-08-13 Thread Russell King
On Mon, Aug 13, 2007 at 08:46:52AM -0400, Chris Snook wrote:
> On Mon, Aug 13, 2007 at 01:19:31PM +0100, Russell King wrote:
> > On Mon, Aug 13, 2007 at 07:09:46AM -0400, Chris Snook wrote:
> > > By popular demand, I've redone the patchset to include volatile casts in
> > > atomic_set as well.  I've also converted the macros to inline functions, 
> > > to
> > > help catch type mismatches at compile time.
> > 
> > and in the rest of include/asm-arm/atomic.h:
> > 
> > #else /* ARM_ARCH_6 */
> > 
> > #include 
> > 
> > #ifdef CONFIG_SMP
> > #error SMP not supported on pre-ARMv6 CPUs
> > #endif
> > 
> > #define atomic_set(v,i) (((v)->counter) = (i))
> > 
> > Seems you missed that.  Grep is a wonderful tool.
> 
> D'oh!  Try this.

Thanks.

Acked-by: Russell King <[EMAIL PROTECTED]>

> --- linux-2.6.23-rc3-orig/include/asm-arm/atomic.h2007-07-08 
> 19:32:17.0 -0400
> +++ linux-2.6.23-rc3/include/asm-arm/atomic.h 2007-08-13 08:39:52.0 
> -0400
> @@ -14,13 +14,16 @@
>  #include 
>  #include 
>  
> -typedef struct { volatile int counter; } atomic_t;
> +typedef struct { int counter; } atomic_t;
>  
>  #define ATOMIC_INIT(i)   { (i) }
>  
>  #ifdef __KERNEL__
>  
> -#define atomic_read(v)   ((v)->counter)
> +static inline int atomic_read(atomic_t *v)
> +{
> +return *(volatile int *)>counter;
> +}
>  
>  #if __LINUX_ARM_ARCH__ >= 6
>  
> @@ -122,7 +125,10 @@ static inline void atomic_clear_mask(uns
>  #error SMP not supported on pre-ARMv6 CPUs
>  #endif
>  
> -#define atomic_set(v,i)  (((v)->counter) = (i))
> +static inline void atomic_set(atomic_t *v, int i)
> +{
> +*(volatile int *)>counter = i;
> +}
>  
>  static inline int atomic_add_return(int i, atomic_t *v)
>  {
> -
> To unsubscribe from this list: send the line "unsubscribe linux-arch" in
> the body of a message to [EMAIL PROTECTED]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Russell King
 Linux kernel2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:
-
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/


Re: [PATCH 3/23] make atomic_read() and atomic_set() behavior consistent on arm

2007-08-13 Thread Chris Snook
On Mon, Aug 13, 2007 at 01:19:31PM +0100, Russell King wrote:
> On Mon, Aug 13, 2007 at 07:09:46AM -0400, Chris Snook wrote:
> > By popular demand, I've redone the patchset to include volatile casts in
> > atomic_set as well.  I've also converted the macros to inline functions, to
> > help catch type mismatches at compile time.
> 
> and in the rest of include/asm-arm/atomic.h:
> 
> #else /* ARM_ARCH_6 */
> 
> #include 
> 
> #ifdef CONFIG_SMP
> #error SMP not supported on pre-ARMv6 CPUs
> #endif
> 
> #define atomic_set(v,i) (((v)->counter) = (i))
> 
> Seems you missed that.  Grep is a wonderful tool.

D'oh!  Try this.

-- Chris

--- linux-2.6.23-rc3-orig/include/asm-arm/atomic.h  2007-07-08 
19:32:17.0 -0400
+++ linux-2.6.23-rc3/include/asm-arm/atomic.h   2007-08-13 08:39:52.0 
-0400
@@ -14,13 +14,16 @@
 #include 
 #include 
 
-typedef struct { volatile int counter; } atomic_t;
+typedef struct { int counter; } atomic_t;
 
 #define ATOMIC_INIT(i) { (i) }
 
 #ifdef __KERNEL__
 
-#define atomic_read(v) ((v)->counter)
+static inline int atomic_read(atomic_t *v)
+{
+return *(volatile int *)>counter;
+}
 
 #if __LINUX_ARM_ARCH__ >= 6
 
@@ -122,7 +125,10 @@ static inline void atomic_clear_mask(uns
 #error SMP not supported on pre-ARMv6 CPUs
 #endif
 
-#define atomic_set(v,i)(((v)->counter) = (i))
+static inline void atomic_set(atomic_t *v, int i)
+{
+*(volatile int *)>counter = i;
+}
 
 static inline int atomic_add_return(int i, atomic_t *v)
 {
-
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/


Re: [PATCH 3/23] make atomic_read() and atomic_set() behavior consistent on arm

2007-08-13 Thread Russell King
On Mon, Aug 13, 2007 at 07:09:46AM -0400, Chris Snook wrote:
> From: Chris Snook <[EMAIL PROTECTED]>
> 
> Use volatile consistently in atomic.h on arm.
> 
> Signed-off-by: Chris Snook <[EMAIL PROTECTED]>
> 
> --- linux-2.6.23-rc3-orig/include/asm-arm/atomic.h2007-07-08 
> 19:32:17.0 -0400
> +++ linux-2.6.23-rc3/include/asm-arm/atomic.h 2007-08-13 04:44:50.0 
> -0400
> @@ -14,13 +14,16 @@
>  #include 
>  #include 
>  
> -typedef struct { volatile int counter; } atomic_t;
> +typedef struct { int counter; } atomic_t;
>  
>  #define ATOMIC_INIT(i)   { (i) }
>  
>  #ifdef __KERNEL__
>  
> -#define atomic_read(v)   ((v)->counter)
> +static inline int atomic_read(atomic_t *v)
> +{
> +return *(volatile int *)>counter;
> +}
>  
>  #if __LINUX_ARM_ARCH__ >= 6
>  

...
In the first email of the series:
> By popular demand, I've redone the patchset to include volatile casts in
> atomic_set as well.  I've also converted the macros to inline functions, to
> help catch type mismatches at compile time.

and in the rest of include/asm-arm/atomic.h:

#else /* ARM_ARCH_6 */

#include 

#ifdef CONFIG_SMP
#error SMP not supported on pre-ARMv6 CPUs
#endif

#define atomic_set(v,i) (((v)->counter) = (i))

Seems you missed that.  Grep is a wonderful tool.

-- 
Russell King
 Linux kernel2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:
-
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/


[PATCH 3/23] make atomic_read() and atomic_set() behavior consistent on arm

2007-08-13 Thread Chris Snook
From: Chris Snook <[EMAIL PROTECTED]>

Use volatile consistently in atomic.h on arm.

Signed-off-by: Chris Snook <[EMAIL PROTECTED]>

--- linux-2.6.23-rc3-orig/include/asm-arm/atomic.h  2007-07-08 
19:32:17.0 -0400
+++ linux-2.6.23-rc3/include/asm-arm/atomic.h   2007-08-13 04:44:50.0 
-0400
@@ -14,13 +14,16 @@
 #include 
 #include 
 
-typedef struct { volatile int counter; } atomic_t;
+typedef struct { int counter; } atomic_t;
 
 #define ATOMIC_INIT(i) { (i) }
 
 #ifdef __KERNEL__
 
-#define atomic_read(v) ((v)->counter)
+static inline int atomic_read(atomic_t *v)
+{
+return *(volatile int *)>counter;
+}
 
 #if __LINUX_ARM_ARCH__ >= 6
 
-
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/


[PATCH 3/23] make atomic_read() and atomic_set() behavior consistent on arm

2007-08-13 Thread Chris Snook
From: Chris Snook [EMAIL PROTECTED]

Use volatile consistently in atomic.h on arm.

Signed-off-by: Chris Snook [EMAIL PROTECTED]

--- linux-2.6.23-rc3-orig/include/asm-arm/atomic.h  2007-07-08 
19:32:17.0 -0400
+++ linux-2.6.23-rc3/include/asm-arm/atomic.h   2007-08-13 04:44:50.0 
-0400
@@ -14,13 +14,16 @@
 #include linux/compiler.h
 #include asm/system.h
 
-typedef struct { volatile int counter; } atomic_t;
+typedef struct { int counter; } atomic_t;
 
 #define ATOMIC_INIT(i) { (i) }
 
 #ifdef __KERNEL__
 
-#define atomic_read(v) ((v)-counter)
+static inline int atomic_read(atomic_t *v)
+{
+return *(volatile int *)v-counter;
+}
 
 #if __LINUX_ARM_ARCH__ = 6
 
-
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/


Re: [PATCH 3/23] make atomic_read() and atomic_set() behavior consistent on arm

2007-08-13 Thread Russell King
On Mon, Aug 13, 2007 at 07:09:46AM -0400, Chris Snook wrote:
 From: Chris Snook [EMAIL PROTECTED]
 
 Use volatile consistently in atomic.h on arm.
 
 Signed-off-by: Chris Snook [EMAIL PROTECTED]
 
 --- linux-2.6.23-rc3-orig/include/asm-arm/atomic.h2007-07-08 
 19:32:17.0 -0400
 +++ linux-2.6.23-rc3/include/asm-arm/atomic.h 2007-08-13 04:44:50.0 
 -0400
 @@ -14,13 +14,16 @@
  #include linux/compiler.h
  #include asm/system.h
  
 -typedef struct { volatile int counter; } atomic_t;
 +typedef struct { int counter; } atomic_t;
  
  #define ATOMIC_INIT(i)   { (i) }
  
  #ifdef __KERNEL__
  
 -#define atomic_read(v)   ((v)-counter)
 +static inline int atomic_read(atomic_t *v)
 +{
 +return *(volatile int *)v-counter;
 +}
  
  #if __LINUX_ARM_ARCH__ = 6
  

...
In the first email of the series:
 By popular demand, I've redone the patchset to include volatile casts in
 atomic_set as well.  I've also converted the macros to inline functions, to
 help catch type mismatches at compile time.

and in the rest of include/asm-arm/atomic.h:

#else /* ARM_ARCH_6 */

#include asm/system.h

#ifdef CONFIG_SMP
#error SMP not supported on pre-ARMv6 CPUs
#endif

#define atomic_set(v,i) (((v)-counter) = (i))

Seems you missed that.  Grep is a wonderful tool.

-- 
Russell King
 Linux kernel2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:
-
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/


Re: [PATCH 3/23] make atomic_read() and atomic_set() behavior consistent on arm

2007-08-13 Thread Chris Snook
On Mon, Aug 13, 2007 at 01:19:31PM +0100, Russell King wrote:
 On Mon, Aug 13, 2007 at 07:09:46AM -0400, Chris Snook wrote:
  By popular demand, I've redone the patchset to include volatile casts in
  atomic_set as well.  I've also converted the macros to inline functions, to
  help catch type mismatches at compile time.
 
 and in the rest of include/asm-arm/atomic.h:
 
 #else /* ARM_ARCH_6 */
 
 #include asm/system.h
 
 #ifdef CONFIG_SMP
 #error SMP not supported on pre-ARMv6 CPUs
 #endif
 
 #define atomic_set(v,i) (((v)-counter) = (i))
 
 Seems you missed that.  Grep is a wonderful tool.

D'oh!  Try this.

-- Chris

--- linux-2.6.23-rc3-orig/include/asm-arm/atomic.h  2007-07-08 
19:32:17.0 -0400
+++ linux-2.6.23-rc3/include/asm-arm/atomic.h   2007-08-13 08:39:52.0 
-0400
@@ -14,13 +14,16 @@
 #include linux/compiler.h
 #include asm/system.h
 
-typedef struct { volatile int counter; } atomic_t;
+typedef struct { int counter; } atomic_t;
 
 #define ATOMIC_INIT(i) { (i) }
 
 #ifdef __KERNEL__
 
-#define atomic_read(v) ((v)-counter)
+static inline int atomic_read(atomic_t *v)
+{
+return *(volatile int *)v-counter;
+}
 
 #if __LINUX_ARM_ARCH__ = 6
 
@@ -122,7 +125,10 @@ static inline void atomic_clear_mask(uns
 #error SMP not supported on pre-ARMv6 CPUs
 #endif
 
-#define atomic_set(v,i)(((v)-counter) = (i))
+static inline void atomic_set(atomic_t *v, int i)
+{
+*(volatile int *)v-counter = i;
+}
 
 static inline int atomic_add_return(int i, atomic_t *v)
 {
-
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/


Re: [PATCH 3/23] make atomic_read() and atomic_set() behavior consistent on arm

2007-08-13 Thread Russell King
On Mon, Aug 13, 2007 at 08:46:52AM -0400, Chris Snook wrote:
 On Mon, Aug 13, 2007 at 01:19:31PM +0100, Russell King wrote:
  On Mon, Aug 13, 2007 at 07:09:46AM -0400, Chris Snook wrote:
   By popular demand, I've redone the patchset to include volatile casts in
   atomic_set as well.  I've also converted the macros to inline functions, 
   to
   help catch type mismatches at compile time.
  
  and in the rest of include/asm-arm/atomic.h:
  
  #else /* ARM_ARCH_6 */
  
  #include asm/system.h
  
  #ifdef CONFIG_SMP
  #error SMP not supported on pre-ARMv6 CPUs
  #endif
  
  #define atomic_set(v,i) (((v)-counter) = (i))
  
  Seems you missed that.  Grep is a wonderful tool.
 
 D'oh!  Try this.

Thanks.

Acked-by: Russell King [EMAIL PROTECTED]

 --- linux-2.6.23-rc3-orig/include/asm-arm/atomic.h2007-07-08 
 19:32:17.0 -0400
 +++ linux-2.6.23-rc3/include/asm-arm/atomic.h 2007-08-13 08:39:52.0 
 -0400
 @@ -14,13 +14,16 @@
  #include linux/compiler.h
  #include asm/system.h
  
 -typedef struct { volatile int counter; } atomic_t;
 +typedef struct { int counter; } atomic_t;
  
  #define ATOMIC_INIT(i)   { (i) }
  
  #ifdef __KERNEL__
  
 -#define atomic_read(v)   ((v)-counter)
 +static inline int atomic_read(atomic_t *v)
 +{
 +return *(volatile int *)v-counter;
 +}
  
  #if __LINUX_ARM_ARCH__ = 6
  
 @@ -122,7 +125,10 @@ static inline void atomic_clear_mask(uns
  #error SMP not supported on pre-ARMv6 CPUs
  #endif
  
 -#define atomic_set(v,i)  (((v)-counter) = (i))
 +static inline void atomic_set(atomic_t *v, int i)
 +{
 +*(volatile int *)v-counter = i;
 +}
  
  static inline int atomic_add_return(int i, atomic_t *v)
  {
 -
 To unsubscribe from this list: send the line unsubscribe linux-arch in
 the body of a message to [EMAIL PROTECTED]
 More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Russell King
 Linux kernel2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:
-
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/