|
@@ -351,10 +351,10 @@ struct earlycon_id {
|
|
|
char name[16];
|
|
|
char compatible[128];
|
|
|
int (*setup)(struct earlycon_device *, const char *options);
|
|
|
-} __aligned(32);
|
|
|
+};
|
|
|
|
|
|
-extern const struct earlycon_id __earlycon_table[];
|
|
|
-extern const struct earlycon_id __earlycon_table_end[];
|
|
|
+extern const struct earlycon_id *__earlycon_table[];
|
|
|
+extern const struct earlycon_id *__earlycon_table_end[];
|
|
|
|
|
|
#if defined(CONFIG_SERIAL_EARLYCON) && !defined(MODULE)
|
|
|
#define EARLYCON_USED_OR_UNUSED __used
|
|
@@ -362,12 +362,19 @@ extern const struct earlycon_id __earlycon_table_end[];
|
|
|
#define EARLYCON_USED_OR_UNUSED __maybe_unused
|
|
|
#endif
|
|
|
|
|
|
-#define OF_EARLYCON_DECLARE(_name, compat, fn) \
|
|
|
- static const struct earlycon_id __UNIQUE_ID(__earlycon_##_name) \
|
|
|
- EARLYCON_USED_OR_UNUSED __section(__earlycon_table) \
|
|
|
+#define _OF_EARLYCON_DECLARE(_name, compat, fn, unique_id) \
|
|
|
+ static const struct earlycon_id unique_id \
|
|
|
+ EARLYCON_USED_OR_UNUSED __initconst \
|
|
|
= { .name = __stringify(_name), \
|
|
|
.compatible = compat, \
|
|
|
- .setup = fn }
|
|
|
+ .setup = fn }; \
|
|
|
+ static const struct earlycon_id EARLYCON_USED_OR_UNUSED \
|
|
|
+ __section(__earlycon_table) \
|
|
|
+ * const __PASTE(__p, unique_id) = &unique_id
|
|
|
+
|
|
|
+#define OF_EARLYCON_DECLARE(_name, compat, fn) \
|
|
|
+ _OF_EARLYCON_DECLARE(_name, compat, fn, \
|
|
|
+ __UNIQUE_ID(__earlycon_##_name))
|
|
|
|
|
|
#define EARLYCON_DECLARE(_name, fn) OF_EARLYCON_DECLARE(_name, "", fn)
|
|
|
|