summaryrefslogtreecommitdiff
path: root/kernel/bounds.c
diff options
context:
space:
mode:
authorChristoph Lameter <clameter@sgi.com>2008-04-28 02:12:44 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-04-28 08:58:21 -0700
commit1cdf25d704f7951d02a04064c97db547d6021872 (patch)
tree2571b70c1d95ea66086500b362a0f7fe2999acbc /kernel/bounds.c
parent308c05e35e3517d19bb67a7e97772235c9e15cd7 (diff)
downloadlwn-1cdf25d704f7951d02a04064c97db547d6021872.tar.gz
lwn-1cdf25d704f7951d02a04064c97db547d6021872.zip
kbuild: create a way to create preprocessor constants from C expressions
The use of enums create constants that are not available to the preprocessor when building the kernel (f.e. MAX_NR_ZONES). Arch code already has a way to export constants calculated to the preprocessor through the asm-offsets.c file. Generate something similar for the core kernel through kbuild. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Christoph Lameter <clameter@sgi.com> Cc: Andy Whitcroft <apw@shadowen.org> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Cc: Rik van Riel <riel@redhat.com> Cc: Mel Gorman <mel@csn.ul.ie> Cc: Jeremy Fitzhardinge <jeremy@goop.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/bounds.c')
-rw-r--r--kernel/bounds.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/kernel/bounds.c b/kernel/bounds.c
new file mode 100644
index 000000000000..85bb281858cb
--- /dev/null
+++ b/kernel/bounds.c
@@ -0,0 +1,19 @@
+/*
+ * Generate definitions needed by the preprocessor.
+ * This code generates raw asm output which is post-processed
+ * to extract and format the required data.
+ */
+
+#define __GENERATING_BOUNDS_H
+/* Include headers that define the enum constants of interest */
+
+#define DEFINE(sym, val) \
+ asm volatile("\n->" #sym " %0 " #val : : "i" (val))
+
+#define BLANK() asm volatile("\n->" : : )
+
+void foo(void)
+{
+ /* The enum constants to put into include/linux/bounds.h */
+ /* End of constants */
+}