On Sun, 27 Mar 2011 22:48:50 -0700 Lei Wen <lei...@marvell.com> wrote:
> Those api take use of read*/write* to align the current dmb usage. > Also this could short the code length in one line. > > Signed-off-by: Lei Wen <lei...@marvell.com> > --- > arch/arm/include/asm/io.h | 8 ++++++++ > 1 files changed, 8 insertions(+), 0 deletions(-) > > diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h > index 1fbc531..71e85e8 100644 > --- a/arch/arm/include/asm/io.h > +++ b/arch/arm/include/asm/io.h > @@ -141,6 +141,14 @@ extern inline void __raw_readsl(unsigned int addr, void > *data, int longlen) > #define readw(c) ({ u16 __v = __arch_getw(c); __iormb(); __v; }) > #define readl(c) ({ u32 __v = __arch_getl(c); __iormb(); __v; }) > > +#define orb(v,c) writeb(readb(c) | v, c) > +#define orw(v,c) writew(readw(c) | v, c) > +#define orl(v,c) writel(readl(c) | v, c) > + > +#define andb(v,c) writeb(readb(c) & v, c) > +#define andw(v,c) writew(readw(c) & v, c) > +#define andl(v,c) writel(readl(c) & v, c) > + > /* > * The compiler seems to be incapable of optimising constants > * properly. Spell it out to the compiler in some cases. What does this do that setbits*/clrbits* don't? Other than be missing parentheses around "v", causing problems if a complex expression is passed in. -scott _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot