diff options
Diffstat (limited to 'include/linux/serial_core.h')
| -rw-r--r-- | include/linux/serial_core.h | 21 | 
1 files changed, 14 insertions, 7 deletions
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 1d356105f25a..b4c9fda9d833 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h @@ -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)  |