2005-05-06 07:15:25 +08:00
|
|
|
#include <linux/stddef.h>
|
|
|
|
#include <linux/sched.h>
|
2005-09-07 05:33:51 +08:00
|
|
|
#include <linux/elf.h>
|
2006-04-19 13:20:24 +08:00
|
|
|
#include <asm/mman.h>
|
2005-05-06 07:15:25 +08:00
|
|
|
|
|
|
|
#define DEFINE(sym, val) \
|
[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>
2006-01-12 04:17:23 +08:00
|
|
|
asm volatile("\n->" #sym " %0 " #val : : "i" (val))
|
2005-05-06 07:15:25 +08:00
|
|
|
|
|
|
|
#define STR(x) #x
|
|
|
|
#define DEFINE_STR(sym, val) asm volatile("\n->" #sym " " STR(val) " " #val: : )
|
|
|
|
|
|
|
|
#define BLANK() asm volatile("\n->" : : )
|
|
|
|
|
|
|
|
#define OFFSET(sym, str, mem) \
|
|
|
|
DEFINE(sym, offsetof(struct str, mem));
|
|
|
|
|
|
|
|
void foo(void)
|
|
|
|
{
|
2005-09-29 05:27:23 +08:00
|
|
|
OFFSET(HOST_TASK_DEBUGREGS, task_struct, thread.arch.debugregs);
|
2006-04-19 13:20:24 +08:00
|
|
|
DEFINE(KERNEL_MADV_REMOVE, MADV_REMOVE);
|
2005-05-06 07:15:25 +08:00
|
|
|
#ifdef CONFIG_MODE_TT
|
2005-09-29 05:27:23 +08:00
|
|
|
OFFSET(HOST_TASK_EXTERN_PID, task_struct, thread.mode.tt.extern_pid);
|
2005-05-06 07:15:25 +08:00
|
|
|
#endif
|
|
|
|
#include <common-offsets.h>
|
|
|
|
}
|