Blackfin: fix addr type with bfin_write_{or,and} helpers
authorMike Frysinger <vapier@gentoo.org>
Thu, 19 May 2011 00:46:03 +0000 (20:46 -0400)
committerMike Frysinger <vapier@gentoo.org>
Wed, 25 May 2011 12:24:13 +0000 (08:24 -0400)
Since the bfin_write() func needs proper type information in order to
expand into the right bfin_writeX() variant, preserve the addr's type
when setting up the local __addr.  Otherwise the helpers will detect
the variant based upon sizeof(void) which is almost never right.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
arch/blackfin/include/asm/def_LPBlackfin.h

index 6bc2db6..8236790 100644 (file)
@@ -69,13 +69,13 @@ do { \
 
 #define bfin_write_or(addr, bits) \
 do { \
-       void *__addr = (void *)(addr); \
+       typeof(addr) __addr = (addr); \
        bfin_write(__addr, bfin_read(__addr) | (bits)); \
 } while (0)
 
 #define bfin_write_and(addr, bits) \
 do { \
-       void *__addr = (void *)(addr); \
+       typeof(addr) __addr = (addr); \
        bfin_write(__addr, bfin_read(__addr) & (bits)); \
 } while (0)