Logo Search packages:      
Sourcecode: linux version File versions  Download package

bitops-irq.h

#ifndef __ASM_SH_BITOPS_IRQ_H
#define __ASM_SH_BITOPS_IRQ_H

static inline void set_bit(int nr, volatile void *addr)
{
      int   mask;
      volatile unsigned int *a = addr;
      unsigned long flags;

      a += nr >> 5;
      mask = 1 << (nr & 0x1f);
      local_irq_save(flags);
      *a |= mask;
      local_irq_restore(flags);
}

static inline void clear_bit(int nr, volatile void *addr)
{
      int   mask;
      volatile unsigned int *a = addr;
      unsigned long flags;

      a += nr >> 5;
      mask = 1 << (nr & 0x1f);
      local_irq_save(flags);
      *a &= ~mask;
      local_irq_restore(flags);
}

static inline void change_bit(int nr, volatile void *addr)
{
      int   mask;
      volatile unsigned int *a = addr;
      unsigned long flags;

      a += nr >> 5;
      mask = 1 << (nr & 0x1f);
      local_irq_save(flags);
      *a ^= mask;
      local_irq_restore(flags);
}

static inline int test_and_set_bit(int nr, volatile void *addr)
{
      int   mask, retval;
      volatile unsigned int *a = addr;
      unsigned long flags;

      a += nr >> 5;
      mask = 1 << (nr & 0x1f);
      local_irq_save(flags);
      retval = (mask & *a) != 0;
      *a |= mask;
      local_irq_restore(flags);

      return retval;
}

static inline int test_and_clear_bit(int nr, volatile void *addr)
{
      int   mask, retval;
      volatile unsigned int *a = addr;
      unsigned long flags;

      a += nr >> 5;
      mask = 1 << (nr & 0x1f);
      local_irq_save(flags);
      retval = (mask & *a) != 0;
      *a &= ~mask;
      local_irq_restore(flags);

      return retval;
}

static inline int test_and_change_bit(int nr, volatile void *addr)
{
      int   mask, retval;
      volatile unsigned int *a = addr;
      unsigned long flags;

      a += nr >> 5;
      mask = 1 << (nr & 0x1f);
      local_irq_save(flags);
      retval = (mask & *a) != 0;
      *a ^= mask;
      local_irq_restore(flags);

      return retval;
}

#endif /* __ASM_SH_BITOPS_IRQ_H */

Generated by  Doxygen 1.6.0   Back to index