]> git.sur5r.net Git - u-boot/blobdiff - include/linker_lists.h
dm: sunxi: Use DM for MMC and SATA on all A10 boards
[u-boot] / include / linker_lists.h
index 940c87128194b654c364c477fc3ba864a523ffc0..e0759d446f44baabb178a1de7f01680bfc3a3d8d 100644 (file)
@@ -1,11 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
 /*
  * include/linker_lists.h
  *
  * Implementation of linker-generated arrays
  *
  * Copyright (C) 2012 Marek Vasut <marex@denx.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #ifndef __LINKER_LISTS_H__
@@ -14,8 +13,7 @@
 #include <linux/compiler.h>
 
 /*
- * There is no use in including this from ASM files, but that happens
- * anyway, e.g. PPC kgdb.S includes command.h which incluse us.
+ * There is no use in including this from ASM files.
  * So just don't define anything when included from ASM.
  */
 
@@ -83,7 +81,7 @@
  * global list name ("outer"); iterators for only a sub-list should use
  * the full sub-list name ("outer_2_inner").
  *
- *  Here is an example of the sections generated from a global list
+ * Here is an example of the sections generated from a global list
  * named "drivers", two sub-lists named "i2c" and "pci", and iterators
  * defined for the whole list and each sub-list:
  *
  *   %u_boot_list_2_drivers_3
  */
 
+/**
+ * llsym() - Access a linker-generated array entry
+ * @_type:     Data type of the entry
+ * @_name:     Name of the entry
+ * @_list:     name of the list. Should contain only characters allowed
+ *             in a C variable name!
+ */
+#define llsym(_type, _name, _list) \
+               ((_type *)&_u_boot_list_2_##_list##_2_##_name)
+
 /**
  * ll_entry_declare() - Declare linker-generated array entry
  * @_type:     Data type of the entry
  *    the inner sections are present in the array.
  *
  * Example:
- * ll_entry_declare(struct my_sub_cmd, my_sub_cmd, cmd_sub, cmd.sub) = {
+ * ll_entry_declare(struct my_sub_cmd, my_sub_cmd, cmd_sub) = {
  *         .x = 3,
  *         .y = 4,
  * };
  * This is like ll_entry_declare() but creates multiple entries. It should
  * be assigned to an array.
  *
- * ll_entry_declare_list(struct my_sub_cmd, my_sub_cmd, cmd_sub, cmd.sub) = {
+ * ll_entry_declare_list(struct my_sub_cmd, my_sub_cmd, cmd_sub) = {
  *     { .x = 3, .y = 4 },
  *     { .x = 8, .y = 2 },
  *     { .x = 1, .y = 7 }
  */
 #define ll_entry_end(_type, _list)                                     \
 ({                                                                     \
-       static char end[0] __aligned(4) __attribute__((unused,  \
+       static char end[0] __aligned(4) __attribute__((unused,          \
                section(".u_boot_list_2_"#_list"_3")));                 \
        (_type *)&end;                                                  \
 })
  * @_name:     Name of the entry
  * @_list:     Name of the list in which this entry is placed
  *
- * This function returns a pointer to a particular entry in LG-array
- * identified by the subsection of u_boot_list where the entry resides
+ * This function returns a pointer to a particular entry in linker-generated
+ * array identified by the subsection of u_boot_list where the entry resides
  * and it's name.
  *
  * Example:
        ({                                                              \
                extern _type _u_boot_list_2_##_list##_2_##_name;        \
                _type *_ll_result =                                     \
-                       &_u_boot_list_2_##_list##_2_##_name;    \
+                       &_u_boot_list_2_##_list##_2_##_name;            \
                _ll_result;                                             \
        })
 
 })
 
 /**
- * ll_entry_end() - Point after last entry of last linker-generated array
+ * ll_end() - Point after last entry of last linker-generated array
  * @_type:     Data type of the entry
  *
  * This function returns (_type *) pointer after the very last entry of
  */
 #define ll_end(_type)                                                  \
 ({                                                                     \
-       static char end[0] __aligned(4) __attribute__((unused,  \
+       static char end[0] __aligned(4) __attribute__((unused,          \
                section(".u_boot_list_3")));                            \
        (_type *)&end;                                                  \
 })