aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/xen/init.h
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-10-28 10:55:17 +0000
committerKeir Fraser <keir.fraser@citrix.com>2009-10-28 10:55:17 +0000
commit6b8d4098ca9a333cf4440e79f05e37a2b678bed1 (patch)
treeb22a68371457d5cc2c99cfddf36265626276f18f /xen/include/xen/init.h
parenta8b1845a784516e51266e9f33fc3fe5b1e2790d5 (diff)
downloadxen-6b8d4098ca9a333cf4440e79f05e37a2b678bed1.tar.gz
xen-6b8d4098ca9a333cf4440e79f05e37a2b678bed1.tar.bz2
xen-6b8d4098ca9a333cf4440e79f05e37a2b678bed1.zip
Boot parameter definition adjustments
Consolidate the various attributes into macros, and tell the compiler not to needlessly waste spec for aligning strings used at most once. Signed-off-by: Jan Beulich <jbeulich@novell.com>
Diffstat (limited to 'xen/include/xen/init.h')
-rw-r--r--xen/include/xen/init.h38
1 files changed, 20 insertions, 18 deletions
diff --git a/xen/include/xen/init.h b/xen/include/xen/init.h
index 4f9019afe0..fdfdb55835 100644
--- a/xen/include/xen/init.h
+++ b/xen/include/xen/init.h
@@ -92,30 +92,32 @@ struct kernel_param {
extern struct kernel_param __setup_start, __setup_end;
+#define __setup_str static __initdata __attribute__((__aligned__(1))) char
+#define __kparam static __attribute_used__ __initsetup struct kernel_param
+
#define custom_param(_name, _var) \
- static char __setup_str_##_var[] __initdata = _name; \
- static struct kernel_param __setup_##_var __attribute_used__ \
- __initsetup = { __setup_str_##_var, OPT_CUSTOM, &_var, 0 }
+ __setup_str __setup_str_##_var[] = _name; \
+ __kparam __setup_##_var = { __setup_str_##_var, OPT_CUSTOM, _var, 0 }
#define boolean_param(_name, _var) \
- static char __setup_str_##_var[] __initdata = _name; \
- static struct kernel_param __setup_##_var __attribute_used__ \
- __initsetup = { __setup_str_##_var, OPT_BOOL, &_var, sizeof(_var) }
+ __setup_str __setup_str_##_var[] = _name; \
+ __kparam __setup_##_var = \
+ { __setup_str_##_var, OPT_BOOL, &_var, sizeof(_var) }
#define invbool_param(_name, _var) \
- static char __setup_str_##_var[] __initdata = _name; \
- static struct kernel_param __setup_##_var __attribute_used__ \
- __initsetup = { __setup_str_##_var, OPT_INVBOOL, &_var, sizeof(_var) }
+ __setup_str __setup_str_##_var[] = _name; \
+ __kparam __setup_##_var = \
+ { __setup_str_##_var, OPT_INVBOOL, &_var, sizeof(_var) }
#define integer_param(_name, _var) \
- static char __setup_str_##_var[] __initdata = _name; \
- static struct kernel_param __setup_##_var __attribute_used__ \
- __initsetup = { __setup_str_##_var, OPT_UINT, &_var, sizeof(_var) }
+ __setup_str __setup_str_##_var[] = _name; \
+ __kparam __setup_##_var = \
+ { __setup_str_##_var, OPT_UINT, &_var, sizeof(_var) }
#define size_param(_name, _var) \
- static char __setup_str_##_var[] __initdata = _name; \
- static struct kernel_param __setup_##_var __attribute_used__ \
- __initsetup = { __setup_str_##_var, OPT_SIZE, &_var, sizeof(_var) }
+ __setup_str __setup_str_##_var[] = _name; \
+ __kparam __setup_##_var = \
+ { __setup_str_##_var, OPT_SIZE, &_var, sizeof(_var) }
#define string_param(_name, _var) \
- static char __setup_str_##_var[] __initdata = _name; \
- static struct kernel_param __setup_##_var __attribute_used__ \
- __initsetup = { __setup_str_##_var, OPT_STR, &_var, sizeof(_var) }
+ __setup_str __setup_str_##_var[] = _name; \
+ __kparam __setup_##_var = \
+ { __setup_str_##_var, OPT_STR, &_var, sizeof(_var) }
/* Make sure obsolete cmdline params don't break the build. */
#define __setup(_name, _fn) static void * __attribute_used__ _dummy_##_fn = _fn