aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Kbuild56
-rw-r--r--kernel/bounds.c19
2 files changed, 67 insertions, 8 deletions
diff --git a/Kbuild b/Kbuild
index 1570d248ad92..7136de7b6fcb 100644
--- a/Kbuild
+++ b/Kbuild
@@ -1,19 +1,54 @@
1# 1#
2# Kbuild for top-level directory of the kernel 2# Kbuild for top-level directory of the kernel
3# This file takes care of the following: 3# This file takes care of the following:
4# 1) Generate asm-offsets.h 4# 1) Generate bounds.h
5# 2) Check for missing system calls 5# 2) Generate asm-offsets.h (may need bounds.h)
6# 3) Check for missing system calls
6 7
7##### 8#####
8# 1) Generate asm-offsets.h 9# 1) Generate bounds.h
10
11bounds-file := include/linux/bounds.h
12
13always := $(bounds-file)
14targets := $(bounds-file) kernel/bounds.s
15
16quiet_cmd_bounds = GEN $@
17define cmd_bounds
18 (set -e; \
19 echo "#ifndef __LINUX_BOUNDS_H__"; \
20 echo "#define __LINUX_BOUNDS_H__"; \
21 echo "/*"; \
22 echo " * DO NOT MODIFY."; \
23 echo " *"; \
24 echo " * This file was generated by Kbuild"; \
25 echo " *"; \
26 echo " */"; \
27 echo ""; \
28 sed -ne $(sed-y) $<; \
29 echo ""; \
30 echo "#endif" ) > $@
31endef
32
33# We use internal kbuild rules to avoid the "is up to date" message from make
34kernel/bounds.s: kernel/bounds.c FORCE
35 $(Q)mkdir -p $(dir $@)
36 $(call if_changed_dep,cc_s_c)
37
38$(obj)/$(bounds-file): kernel/bounds.s Kbuild
39 $(Q)mkdir -p $(dir $@)
40 $(call cmd,bounds)
41
42#####
43# 2) Generate asm-offsets.h
9# 44#
10 45
11offsets-file := include/asm-$(SRCARCH)/asm-offsets.h 46offsets-file := include/asm-$(SRCARCH)/asm-offsets.h
12 47
13always := $(offsets-file) 48always += $(offsets-file)
14targets := $(offsets-file) 49targets += $(offsets-file)
15targets += arch/$(SRCARCH)/kernel/asm-offsets.s 50targets += arch/$(SRCARCH)/kernel/asm-offsets.s
16clean-files := $(addprefix $(objtree)/,$(targets)) 51
17 52
18# Default sed regexp - multiline due to syntax constraints 53# Default sed regexp - multiline due to syntax constraints
19define sed-y 54define sed-y
@@ -40,7 +75,8 @@ define cmd_offsets
40endef 75endef
41 76
42# We use internal kbuild rules to avoid the "is up to date" message from make 77# We use internal kbuild rules to avoid the "is up to date" message from make
43arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c FORCE 78arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \
79 $(obj)/$(bounds-file) FORCE
44 $(Q)mkdir -p $(dir $@) 80 $(Q)mkdir -p $(dir $@)
45 $(call if_changed_dep,cc_s_c) 81 $(call if_changed_dep,cc_s_c)
46 82
@@ -49,7 +85,7 @@ $(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild
49 $(call cmd,offsets) 85 $(call cmd,offsets)
50 86
51##### 87#####
52# 2) Check for missing system calls 88# 3) Check for missing system calls
53# 89#
54 90
55quiet_cmd_syscalls = CALL $< 91quiet_cmd_syscalls = CALL $<
@@ -58,3 +94,7 @@ quiet_cmd_syscalls = CALL $<
58PHONY += missing-syscalls 94PHONY += missing-syscalls
59missing-syscalls: scripts/checksyscalls.sh FORCE 95missing-syscalls: scripts/checksyscalls.sh FORCE
60 $(call cmd,syscalls) 96 $(call cmd,syscalls)
97
98# Delete all targets during make clean
99clean-files := $(addprefix $(objtree)/,$(targets))
100
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 @@
1/*
2 * Generate definitions needed by the preprocessor.
3 * This code generates raw asm output which is post-processed
4 * to extract and format the required data.
5 */
6
7#define __GENERATING_BOUNDS_H
8/* Include headers that define the enum constants of interest */
9
10#define DEFINE(sym, val) \
11 asm volatile("\n->" #sym " %0 " #val : : "i" (val))
12
13#define BLANK() asm volatile("\n->" : : )
14
15void foo(void)
16{
17 /* The enum constants to put into include/linux/bounds.h */
18 /* End of constants */
19}