]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
arm64: Convert core type check macros into inline functions
authorMarek Vasut <marek.vasut+renesas@mailbox.org>
Wed, 1 Jan 2025 19:19:04 +0000 (20:19 +0100)
committerMarek Vasut <marek.vasut+renesas@mailbox.org>
Sun, 12 Jan 2025 22:49:58 +0000 (23:49 +0100)
Turn the core type check macros into inline functions to perform
better type checking on them. The inline functions get optimized
out in case they are not used. Indent the MIDR_PARTNUM_CORTEX_An
macros in preparation for addition of future three-digit cores
and use MIDR_PARTNUM_SHIFT in MIDR_PARTNUM_MASK to be consistent.

Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Reviewed-by: Peter Robinson <pbrobinson@gmail.com>
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
arch/arm/include/asm/armv8/cpu.h

index 40d54dc85abca09beb0747e60f3b0ab2b383b8ed..aa1470bb72dba4d9048c480ef8540a4055b38489 100644 (file)
@@ -3,11 +3,11 @@
  * Copyright 2018 NXP
  */
 
-#define MIDR_PARTNUM_CORTEX_A35        0xD04
-#define MIDR_PARTNUM_CORTEX_A53        0xD03
-#define MIDR_PARTNUM_CORTEX_A72        0xD08
-#define MIDR_PARTNUM_SHIFT     0x4
-#define MIDR_PARTNUM_MASK      (0xFFF << 0x4)
+#define MIDR_PARTNUM_CORTEX_A35                0xD04
+#define MIDR_PARTNUM_CORTEX_A53                0xD03
+#define MIDR_PARTNUM_CORTEX_A72                0xD08
+#define MIDR_PARTNUM_SHIFT             0x4
+#define MIDR_PARTNUM_MASK              (0xFFF << MIDR_PARTNUM_SHIFT)
 
 static inline unsigned int read_midr(void)
 {
@@ -18,9 +18,15 @@ static inline unsigned int read_midr(void)
        return val;
 }
 
-#define is_cortex_a35() (((read_midr() & MIDR_PARTNUM_MASK) >> \
-                        MIDR_PARTNUM_SHIFT) == MIDR_PARTNUM_CORTEX_A35)
-#define is_cortex_a53() (((read_midr() & MIDR_PARTNUM_MASK) >> \
-                        MIDR_PARTNUM_SHIFT) == MIDR_PARTNUM_CORTEX_A53)
-#define is_cortex_a72() (((read_midr() & MIDR_PARTNUM_MASK) >>\
-                        MIDR_PARTNUM_SHIFT) == MIDR_PARTNUM_CORTEX_A72)
+#define is_cortex_a(__n)                                       \
+       static inline int is_cortex_a##__n(void)                \
+       {                                                       \
+               unsigned int midr = read_midr();                \
+               midr &= MIDR_PARTNUM_MASK;                      \
+               midr >>= MIDR_PARTNUM_SHIFT;                    \
+               return midr == MIDR_PARTNUM_CORTEX_A##__n;      \
+       }
+
+is_cortex_a(35)
+is_cortex_a(53)
+is_cortex_a(72)