vmlinuz.lds: define OF table sections with macros
authorRob Herring <robh@kernel.org>
Mon, 24 Mar 2014 21:59:20 +0000 (16:59 -0500)
committerRob Herring <robh@kernel.org>
Tue, 20 May 2014 19:24:41 +0000 (14:24 -0500)
OF table sections all have the same pattern, so create a macro to define
them and insure consistency.

Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <robh@kernel.org>
include/asm-generic/vmlinux.lds.h

index fe57c5f1bd1a2502cd87b95f914182d1c7d298b9..b9404f6590f1b0d9d9d8b703b1add645a43c1bce 100644 (file)
 #define TRACE_SYSCALLS()
 #endif
 
-#ifdef CONFIG_CLKSRC_OF
-#define CLKSRC_OF_TABLES() . = ALIGN(8);                               \
-                          VMLINUX_SYMBOL(__clksrc_of_table) = .;       \
-                          *(__clksrc_of_table)                         \
-                          *(__clksrc_of_table_end)
-#else
-#define CLKSRC_OF_TABLES()
-#endif
 
-#ifdef CONFIG_IRQCHIP
-#define IRQCHIP_OF_MATCH_TABLE()                                       \
+#define ___OF_TABLE(cfg, name) _OF_TABLE_##cfg(name)
+#define __OF_TABLE(cfg, name)  ___OF_TABLE(cfg, name)
+#define OF_TABLE(cfg, name)    __OF_TABLE(config_enabled(cfg), name)
+#define _OF_TABLE_0(name)
+#define _OF_TABLE_1(name)                                              \
        . = ALIGN(8);                                                   \
-       VMLINUX_SYMBOL(__irqchip_of_table) = .;                         \
-       *(__irqchip_of_table)                                           \
-       *(__irqchip_of_table_end)
-#else
-#define IRQCHIP_OF_MATCH_TABLE()
-#endif
-
-#ifdef CONFIG_COMMON_CLK
-#define CLK_OF_TABLES() . = ALIGN(8);                          \
-                       VMLINUX_SYMBOL(__clk_of_table) = .;     \
-                       *(__clk_of_table)                       \
-                       *(__clk_of_table_end)
-#else
-#define CLK_OF_TABLES()
-#endif
-
-#ifdef CONFIG_OF_RESERVED_MEM
-#define RESERVEDMEM_OF_TABLES()                                \
-       . = ALIGN(8);                                   \
-       VMLINUX_SYMBOL(__reservedmem_of_table) = .;     \
-       *(__reservedmem_of_table)                       \
-       *(__reservedmem_of_table_end)
-#else
-#define RESERVEDMEM_OF_TABLES()
-#endif
-
-#ifdef CONFIG_SMP
-#define CPU_METHOD_OF_TABLES() . = ALIGN(8);                               \
-                          VMLINUX_SYMBOL(__cpu_method_of_table) = .; \
-                          *(__cpu_method_of_table)                         \
-                          *(__cpu_method_of_table_end)
-#else
-#define CPU_METHOD_OF_TABLES()
-#endif
+       VMLINUX_SYMBOL(__##name##_of_table) = .;                        \
+       *(__##name##_of_table)                                          \
+       *(__##name##_of_table_end)
+
+#define CLKSRC_OF_TABLES()     OF_TABLE(CONFIG_CLKSRC_OF, clksrc)
+#define IRQCHIP_OF_MATCH_TABLE() OF_TABLE(CONFIG_IRQCHIP, irqchip)
+#define CLK_OF_TABLES()                OF_TABLE(CONFIG_COMMON_CLK, clk)
+#define RESERVEDMEM_OF_TABLES()        OF_TABLE(CONFIG_OF_RESERVED_MEM, reservedmem)
+#define CPU_METHOD_OF_TABLES() OF_TABLE(CONFIG_SMP, cpu_method)
 
 #define KERNEL_DTB()                                                   \
        STRUCT_ALIGN();                                                 \