-#define __uml_init_setup __attribute__ ((unused,__section__ (".uml.setup.init")))
-#define __uml_setup_help __attribute__ ((unused,__section__ (".uml.help.init")))
-#define __uml_init_call __attribute__ ((unused,__section__ (".uml.initcall.init")))
-#define __uml_postsetup_call __attribute__ ((unused,__section__ (".uml.postsetup.init")))
-#define __uml_exit_call __attribute__ ((unused,__section__ (".uml.exitcall.exit")))
+#define __uml_init_setup __attribute_used__ __attribute__ ((__section__ (".uml.setup.init")))
+#define __uml_setup_help __attribute_used__ __attribute__ ((__section__ (".uml.help.init")))
+#define __uml_init_call __attribute_used__ __attribute__ ((__section__ (".uml.initcall.init")))
+#define __uml_postsetup_call __attribute_used__ __attribute__ ((__section__ (".uml.postsetup.init")))
+#define __uml_exit_call __attribute_used__ __attribute__ ((__section__ (".uml.exitcall.exit")))
+
+#ifndef __KERNEL__
+
+#define __initcall(fn) static initcall_t __initcall_##fn __init_call = fn
+#define __exitcall(fn) static exitcall_t __exitcall_##fn __exit_call = fn
+
+#define __init_call __attribute__ ((unused,__section__ (".initcall.init")))
+
+#endif