There are several drivers which duplicate bit generation macro.
Introduce a generic bit macros so that such drivers avoid redefining
same in multiple drivers.
Signed-off-by: Parav Pandit <parav@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
#include <rte_debug.h>
#include <rte_compat.h>
#include <rte_debug.h>
#include <rte_compat.h>
+/**
+ * Get the uint64_t value for a specified bit set.
+ *
+ * @param nr
+ * The bit number in range of 0 to 63.
+ */
+#define RTE_BIT64(nr) (UINT64_C(1) << (nr))
+
+/**
+ * Get the uint32_t value for a specified bit set.
+ *
+ * @param nr
+ * The bit number in range of 0 to 31.
+ */
+#define RTE_BIT32(nr) (UINT32_C(1) << (nr))
+
/*------------------------ 32-bit relaxed operations ------------------------*/
/**
/*------------------------ 32-bit relaxed operations ------------------------*/
/**
- uint32_t mask = UINT32_C(1) << nr;
+ uint32_t mask = RTE_BIT32(nr);
*addr = (*addr) | mask;
}
*addr = (*addr) | mask;
}
- uint32_t mask = UINT32_C(1) << nr;
+ uint32_t mask = RTE_BIT32(nr);
*addr = (*addr) & (~mask);
}
*addr = (*addr) & (~mask);
}
- uint32_t mask = UINT32_C(1) << nr;
+ uint32_t mask = RTE_BIT32(nr);
uint32_t val = *addr;
*addr = val | mask;
return val & mask;
uint32_t val = *addr;
*addr = val | mask;
return val & mask;
- uint32_t mask = UINT32_C(1) << nr;
+ uint32_t mask = RTE_BIT32(nr);
uint32_t val = *addr;
*addr = val & (~mask);
return val & mask;
uint32_t val = *addr;
*addr = val & (~mask);
return val & mask;
- uint64_t mask = UINT64_C(1) << nr;
+ uint64_t mask = RTE_BIT64(nr);
- uint64_t mask = UINT64_C(1) << nr;
+ uint64_t mask = RTE_BIT64(nr);
(*addr) = (*addr) | mask;
}
(*addr) = (*addr) | mask;
}
- uint64_t mask = UINT64_C(1) << nr;
+ uint64_t mask = RTE_BIT64(nr);
*addr = (*addr) & (~mask);
}
*addr = (*addr) & (~mask);
}
- uint64_t mask = UINT64_C(1) << nr;
+ uint64_t mask = RTE_BIT64(nr);
uint64_t val = *addr;
*addr = val | mask;
return val;
uint64_t val = *addr;
*addr = val | mask;
return val;
- uint64_t mask = UINT64_C(1) << nr;
+ uint64_t mask = RTE_BIT64(nr);
uint64_t val = *addr;
*addr = val & (~mask);
return val & mask;
uint64_t val = *addr;
*addr = val & (~mask);
return val & mask;