Commit 85a5bd8e authored by Paolo \'Blaisorblade\' Giarrusso's avatar Paolo \'Blaisorblade\' Giarrusso Committed by Linus Torvalds

[PATCH] uml: fix some UML own initcall macros

UML has his own initcall mechanism to handle his special userspace
initialization (they are called in different moments, so they are indeed

It must also duplicate some definition for the benefit of userspace code - but
those definition weren't in sync with the main code.  Also, the UML own macros
missed __attribute_used__.  Both problems are fixed by this patch.
Signed-off-by: default avatarPaolo 'Blaisorblade' Giarrusso <blaisorblade_spam@yahoo.it>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent ed4ac64a
...@@ -40,9 +40,18 @@ ...@@ -40,9 +40,18 @@
typedef int (*initcall_t)(void); typedef int (*initcall_t)(void);
typedef void (*exitcall_t)(void); typedef void (*exitcall_t)(void);
#define __init __attribute__ ((__section__ (".text.init"))) /* These are for everybody (although not all archs will actually
#define __exit __attribute__ ((unused, __section__(".text.exit"))) discard it in modules) */
#define __initdata __attribute__ ((__section__ (".data.init"))) #define __init __attribute__ ((__section__ (".init.text")))
#define __initdata __attribute__ ((__section__ (".init.data")))
#define __exitdata __attribute__ ((__section__(".exit.data")))
#define __exit_call __attribute_used__ __attribute__ ((__section__ (".exitcall.exit")))
#ifdef MODULE
#define __exit __attribute__ ((__section__(".exit.text")))
#else
#define __exit __attribute_used__ __attribute__ ((__section__(".exit.text")))
#endif
#endif #endif
...@@ -94,11 +103,11 @@ extern struct uml_param __uml_setup_start, __uml_setup_end; ...@@ -94,11 +103,11 @@ extern struct uml_param __uml_setup_start, __uml_setup_end;
* Mark functions and data as being only used at initialization * Mark functions and data as being only used at initialization
* or exit time. * or exit time.
*/ */
#define __uml_init_setup __attribute__ ((unused,__section__ (".uml.setup.init"))) #define __uml_init_setup __attribute_used__ __attribute__ ((__section__ (".uml.setup.init")))
#define __uml_setup_help __attribute__ ((unused,__section__ (".uml.help.init"))) #define __uml_setup_help __attribute_used__ __attribute__ ((__section__ (".uml.help.init")))
#define __uml_init_call __attribute__ ((unused,__section__ (".uml.initcall.init"))) #define __uml_init_call __attribute_used__ __attribute__ ((__section__ (".uml.initcall.init")))
#define __uml_postsetup_call __attribute__ ((unused,__section__ (".uml.postsetup.init"))) #define __uml_postsetup_call __attribute_used__ __attribute__ ((__section__ (".uml.postsetup.init")))
#define __uml_exit_call __attribute__ ((unused,__section__ (".uml.exitcall.exit"))) #define __uml_exit_call __attribute_used__ __attribute__ ((__section__ (".uml.exitcall.exit")))
#endif /* _LINUX_UML_INIT_H */ #endif /* _LINUX_UML_INIT_H */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment