1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _LINUX_INIT_H
3 #define _LINUX_INIT_H
4 
5 #include <linux/compiler.h>
6 #include <asm/export.h>
7 #include <linux/memory_hotplug.h>
8 
9 #define __section(section)              __attribute__((__section__(section)))
10 
11 #define __initconst
12 #define __meminit
13 #define __meminitdata
14 #define __refdata
15 #define __initdata
16 
17 struct obs_kernel_param {
18 	const char *str;
19 	int (*setup_func)(char *st);
20 	int early;
21 };
22 
23 #define __setup_param(str, unique_id, fn, early)			\
24 	static const char __setup_str_##unique_id[] __initconst		\
25 		__aligned(1) = str;					\
26 	static struct obs_kernel_param __setup_##unique_id		\
27 		__used __section(".init.setup")				\
28 		__aligned(__alignof__(struct obs_kernel_param)) =	\
29 		{ __setup_str_##unique_id, fn, early }
30 
31 #define early_param(str, fn)						\
32 	__setup_param(str, fn, fn, 1)
33 
34 #endif
35