aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um/include
diff options
context:
space:
mode:
authorJeff Dike <jdike@addtoit.com>2006-01-11 15:17:23 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-11 21:42:09 -0500
commit4ee189a9260849ebacbdd3caf1fd5eb077fcf6a9 (patch)
tree016e90e4f3d7da648e3739e08849457ffbc50cfd /arch/um/include
parent10b5aabddd1e8f26fdccc56666ddcad653e02fd6 (diff)
[PATCH] uml: fix missing KBUILD_BASENAME
2.6.15-mm1 caused kernel-offsets.c to stop compiling with a syntax error in a header. The problem was with KBUILD_BASENAME, which didn't get a definition with the by-hand compilation in the main UML Makefile. This was OK before since the expansion was syntactically the same as the KBUILD_BASENAME token. With -mm1, the expansion is now a quote-delimited string, so there needs to be a definition of it. Since kernel-offsets.c is basically the same as other arches' asm-offsets.c, and those seem to build OK, this patch turns kernel-offsets.c into asm-offsets.c. kernel-offsets.c is in arch/um/sys-$(SUBARCH), i.e. sys-i386 and sys-x86_64, while kbuild expects it to be in arch/um/kernel. kernel-offsets.c is moved to arch/um/include/sysdep-$(SUBARCH)/kernel-offsets.h, which is included by arch/um/kernel/asm-offsets.c. With that, include/asm-um/asm-offsets.h is generated automatically. kernel-offsets.h continues to exist because it needs to be accessible to userspace UML code, and include/asm-um isn't. So, a symlink is made from arch/um/include/kernel-offsets.h to include/asm-um/asm-offsets.h. Signed-off-by: Jeff Dike <jdike@addtoit.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/um/include')
-rw-r--r--arch/um/include/sysdep-i386/kernel-offsets.h23
-rw-r--r--arch/um/include/sysdep-x86_64/kernel-offsets.h25
2 files changed, 48 insertions, 0 deletions
diff --git a/arch/um/include/sysdep-i386/kernel-offsets.h b/arch/um/include/sysdep-i386/kernel-offsets.h
new file mode 100644
index 000000000000..82f96c574144
--- /dev/null
+++ b/arch/um/include/sysdep-i386/kernel-offsets.h
@@ -0,0 +1,23 @@
1#include <linux/stddef.h>
2#include <linux/sched.h>
3#include <linux/elf.h>
4
5#define DEFINE(sym, val) \
6 asm volatile("\n->" #sym " %0 " #val : : "i" (val))
7
8#define STR(x) #x
9#define DEFINE_STR(sym, val) asm volatile("\n->" #sym " " STR(val) " " #val: : )
10
11#define BLANK() asm volatile("\n->" : : )
12
13#define OFFSET(sym, str, mem) \
14 DEFINE(sym, offsetof(struct str, mem));
15
16void foo(void)
17{
18 OFFSET(HOST_TASK_DEBUGREGS, task_struct, thread.arch.debugregs);
19#ifdef CONFIG_MODE_TT
20 OFFSET(HOST_TASK_EXTERN_PID, task_struct, thread.mode.tt.extern_pid);
21#endif
22#include <common-offsets.h>
23}
diff --git a/arch/um/include/sysdep-x86_64/kernel-offsets.h b/arch/um/include/sysdep-x86_64/kernel-offsets.h
new file mode 100644
index 000000000000..5ce93abd0b54
--- /dev/null
+++ b/arch/um/include/sysdep-x86_64/kernel-offsets.h
@@ -0,0 +1,25 @@
1#include <linux/config.h>
2#include <linux/stddef.h>
3#include <linux/sched.h>
4#include <linux/time.h>
5#include <linux/elf.h>
6#include <asm/page.h>
7
8#define DEFINE(sym, val) \
9 asm volatile("\n->" #sym " %0 " #val : : "i" (val))
10
11#define DEFINE_STR1(x) #x
12#define DEFINE_STR(sym, val) asm volatile("\n->" #sym " " DEFINE_STR1(val) " " #val: : )
13
14#define BLANK() asm volatile("\n->" : : )
15
16#define OFFSET(sym, str, mem) \
17 DEFINE(sym, offsetof(struct str, mem));
18
19void foo(void)
20{
21#ifdef CONFIG_MODE_TT
22 OFFSET(HOST_TASK_EXTERN_PID, task_struct, thread.mode.tt.extern_pid);
23#endif
24#include <common-offsets.h>
25}