Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at d430a227d272fa514bade388bf511dba4ec2962a 91 lines 1.7 kB view raw
1#ifndef __ASM_SH_BITOPS_IRQ_H 2#define __ASM_SH_BITOPS_IRQ_H 3 4static inline void set_bit(int nr, volatile void *addr) 5{ 6 int mask; 7 volatile unsigned int *a = addr; 8 unsigned long flags; 9 10 a += nr >> 5; 11 mask = 1 << (nr & 0x1f); 12 local_irq_save(flags); 13 *a |= mask; 14 local_irq_restore(flags); 15} 16 17static inline void clear_bit(int nr, volatile void *addr) 18{ 19 int mask; 20 volatile unsigned int *a = addr; 21 unsigned long flags; 22 23 a += nr >> 5; 24 mask = 1 << (nr & 0x1f); 25 local_irq_save(flags); 26 *a &= ~mask; 27 local_irq_restore(flags); 28} 29 30static inline void change_bit(int nr, volatile void *addr) 31{ 32 int mask; 33 volatile unsigned int *a = addr; 34 unsigned long flags; 35 36 a += nr >> 5; 37 mask = 1 << (nr & 0x1f); 38 local_irq_save(flags); 39 *a ^= mask; 40 local_irq_restore(flags); 41} 42 43static inline int test_and_set_bit(int nr, volatile void *addr) 44{ 45 int mask, retval; 46 volatile unsigned int *a = addr; 47 unsigned long flags; 48 49 a += nr >> 5; 50 mask = 1 << (nr & 0x1f); 51 local_irq_save(flags); 52 retval = (mask & *a) != 0; 53 *a |= mask; 54 local_irq_restore(flags); 55 56 return retval; 57} 58 59static inline int test_and_clear_bit(int nr, volatile void *addr) 60{ 61 int mask, retval; 62 volatile unsigned int *a = addr; 63 unsigned long flags; 64 65 a += nr >> 5; 66 mask = 1 << (nr & 0x1f); 67 local_irq_save(flags); 68 retval = (mask & *a) != 0; 69 *a &= ~mask; 70 local_irq_restore(flags); 71 72 return retval; 73} 74 75static inline int test_and_change_bit(int nr, volatile void *addr) 76{ 77 int mask, retval; 78 volatile unsigned int *a = addr; 79 unsigned long flags; 80 81 a += nr >> 5; 82 mask = 1 << (nr & 0x1f); 83 local_irq_save(flags); 84 retval = (mask & *a) != 0; 85 *a ^= mask; 86 local_irq_restore(flags); 87 88 return retval; 89} 90 91#endif /* __ASM_SH_BITOPS_IRQ_H */