sys: util: Move BIT macros from util.h to util_macro.h

Moving the BIT macros from <sys/util.h> to <sys/util_macro.h>
allows the BIT macros to be used in device trees.

Testing: twister -T tests/drivers/build_all/sensor/

Signed-off-by: Sam Hurst <sbh1187@gmail.com>
This commit is contained in:
Sam Hurst 2021-06-18 15:16:12 -07:00 committed by Christopher Friedt
commit 7f46523f74
2 changed files with 40 additions and 40 deletions

View file

@ -305,46 +305,6 @@ uint8_t u8_to_dec(char *buf, uint8_t buflen, uint8_t value);
/** @brief Number of Hz in @p x MHz */ /** @brief Number of Hz in @p x MHz */
#define MHZ(x) (KHZ(x) * 1000) #define MHZ(x) (KHZ(x) * 1000)
#ifndef BIT
#if defined(_ASMLANGUAGE)
#define BIT(n) (1 << (n))
#else
/**
* @brief Unsigned integer with bit position @p n set (signed in
* assembly language).
*/
#define BIT(n) (1UL << (n))
#endif
#endif
/** @brief 64-bit unsigned integer with bit position @p _n set. */
#define BIT64(_n) (1ULL << (_n))
/**
* @brief Set or clear a bit depending on a boolean value
*
* The argument @p var is a variable whose value is written to as a
* side effect.
*
* @param var Variable to be altered
* @param bit Bit number
* @param set if 0, clears @p bit in @p var; any other value sets @p bit
*/
#define WRITE_BIT(var, bit, set) \
((var) = (set) ? ((var) | BIT(bit)) : ((var) & ~BIT(bit)))
/**
* @brief Bit mask with bits 0 through <tt>n-1</tt> (inclusive) set,
* or 0 if @p n is 0.
*/
#define BIT_MASK(n) (BIT(n) - 1UL)
/**
* @brief 64-bit bit mask with bits 0 through <tt>n-1</tt> (inclusive) set,
* or 0 if @p n is 0.
*/
#define BIT64_MASK(n) (BIT64(n) - 1ULL)
/** /**
* @} * @}
*/ */

View file

@ -33,6 +33,46 @@ extern "C" {
*/ */
#include <sys/util_internal.h> #include <sys/util_internal.h>
#ifndef BIT
#if defined(_ASMLANGUAGE)
#define BIT(n) (1 << (n))
#else
/**
* @brief Unsigned integer with bit position @p n set (signed in
* assembly language).
*/
#define BIT(n) (1UL << (n))
#endif
#endif
/** @brief 64-bit unsigned integer with bit position @p _n set. */
#define BIT64(_n) (1ULL << (_n))
/**
* @brief Set or clear a bit depending on a boolean value
*
* The argument @p var is a variable whose value is written to as a
* side effect.
*
* @param var Variable to be altered
* @param bit Bit number
* @param set if 0, clears @p bit in @p var; any other value sets @p bit
*/
#define WRITE_BIT(var, bit, set) \
((var) = (set) ? ((var) | BIT(bit)) : ((var) & ~BIT(bit)))
/**
* @brief Bit mask with bits 0 through <tt>n-1</tt> (inclusive) set,
* or 0 if @p n is 0.
*/
#define BIT_MASK(n) (BIT(n) - 1UL)
/**
* @brief 64-bit bit mask with bits 0 through <tt>n-1</tt> (inclusive) set,
* or 0 if @p n is 0.
*/
#define BIT64_MASK(n) (BIT64(n) - 1ULL)
/** /**
* @brief Check for macro definition in compiler-visible expressions * @brief Check for macro definition in compiler-visible expressions
* *