/* These are for everybody (although not all archs will actually
discard it in modules) */
-#define __init __section(.init.text) __cold
+#define __init __section(.init.text) __cold notrace
#define __initdata __section(.init.data)
#define __initconst __section(.init.rodata)
#define __exitdata __section(.exit.data)
__attribute__((aligned((sizeof(long))))) \
= { __setup_str_##unique_id, fn, early }
-#define __setup_null_param(str, unique_id) \
- __setup_param(str, unique_id, NULL, 0)
-
#define __setup(str, fn) \
__setup_param(str, fn, fn, 0)
/* Relies on boot_command_line being set */
void __init parse_early_param(void);
-
-struct dyn_array {
- void **name;
- unsigned long size;
- unsigned int *nr;
- unsigned long align;
- void (*init_work)(void *);
-};
-extern struct dyn_array *__dyn_array_start[], *__dyn_array_end[];
-
-#define DEFINE_DYN_ARRAY(nameX, sizeX, nrX, alignX, init_workX) \
- static struct dyn_array __dyn_array_##nameX __initdata = \
- { .name = (void **)&nameX,\
- .size = sizeX,\
- .nr = &nrX,\
- .align = alignX,\
- .init_work = init_workX,\
- }; \
- static struct dyn_array *__dyn_array_ptr_##nameX __used \
- __attribute__((__section__(".dyn_array.init"))) = \
- &__dyn_array_##nameX
-
-extern void pre_alloc_dyn_array(void);
#endif /* __ASSEMBLY__ */
/**
void cleanup_module(void) __attribute__((alias(#exitfn)));
#define __setup_param(str, unique_id, fn) /* nothing */
-#define __setup_null_param(str, unique_id) /* nothing */
#define __setup(str, func) /* nothing */
#endif