Synchronize upper_NN_bits() and lower_NN_bits() macros with Linux 6.16.7
commit 118d777c4cb4 ("wordpart.h: Add REPEAT_BYTE_U32()"). This fixes the
lower_32_bits() macros and assures it works with 64bit systems correctly.
This also adds 16bit variants of these macros, which will be used by the
Airoha PHY driver.

Signed-off-by: Marek Vasut <[email protected]>
---
Cc: "Lucien.Jheng" <[email protected]>
Cc: Rasmus Villemoes <[email protected]>
Cc: Raymond Mao <[email protected]>
Cc: Tom Rini <[email protected]>
Cc: [email protected]
---
 include/linux/kernel.h | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index e0443ecac84..44a639a5e4e 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -111,7 +111,19 @@
  * lower_32_bits - return bits 0-31 of a number
  * @n: the number we're accessing
  */
-#define lower_32_bits(n) ((u32)(n))
+#define lower_32_bits(n) ((u32)((n) & 0xffffffff))
+
+/**
+ * upper_16_bits - return bits 16-31 of a number
+ * @n: the number we're accessing
+ */
+#define upper_16_bits(n) ((u16)((n) >> 16))
+
+/**
+ * lower_16_bits - return bits 0-15 of a number
+ * @n: the number we're accessing
+ */
+#define lower_16_bits(n) ((u16)((n) & 0xffff))
 
 /*
  * abs() handles unsigned and signed longs, ints, shorts and chars.  For all
-- 
2.51.0

Reply via email to