/* * Copyright (C) 2010 Tobias Klauser * * This file is part of nios2sim-ng. * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. */ #ifndef _BITS_H_ #define _BITS_H_ #define BIT_MASK_FILL(n) (((n) == 64) ? ~0ULL : ((1ULL << (n))-1)) #define BIT_MASK(n) (1UL << ((n) % 32)) #define BIT_UINT32(n) ((n) / 32) /** * Sets a bit in memory. */ static inline void set_bit(unsigned int nr, uint32_t *addr) { uint32_t mask = BIT_MASK(nr); uint32_t *p = addr + BIT_UINT32(nr); *p |= mask; } /** * Clears a bit in memory. */ static inline void clear_bit(unsigned int nr, uint32_t *addr) { uint32_t mask = BIT_MASK(nr); uint32_t *p = addr + BIT_UINT32(nr); *p &= ~mask; } #endif /* _BITS_H_ */