From 3388b44905c2a5f467a88d30349e3a5b4e3ff599 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Thu, 5 May 2005 16:15:25 -0700 Subject: [PATCH] --- yaml --- r: 983 b: refs/heads/master c: a31769ed3ee82198fd530cb1d79ee9c7f8eeb1d1 h: refs/heads/master i: 981: 8795a5e7a66d233eec4aa0e8b1b8e2d74306136a 979: f89bd67fd466e63b55da5bbf05f50d46d2494e82 975: 04c4ac8f03a930a04d932689d014aa75ddf16911 v: v3 --- [refs] | 2 +- trunk/arch/um/Makefile | 13 ++++++++++++ trunk/arch/um/include/common-offsets.h | 14 +++++++++++++ trunk/arch/um/sys-i386/kernel-offsets.c | 25 +++++++++++++++++++++++ trunk/arch/um/sys-x86_64/kernel-offsets.c | 24 ++++++++++++++++++++++ 5 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 trunk/arch/um/include/common-offsets.h create mode 100644 trunk/arch/um/sys-i386/kernel-offsets.c create mode 100644 trunk/arch/um/sys-x86_64/kernel-offsets.c diff --git a/[refs] b/[refs] index 043af43851f3..be9ed20dba55 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6bae32d395b532959703462c21248fbeb9894e95 +refs/heads/master: a31769ed3ee82198fd530cb1d79ee9c7f8eeb1d1 diff --git a/trunk/arch/um/Makefile b/trunk/arch/um/Makefile index 46a332f96e3c..df492d8afe95 100644 --- a/trunk/arch/um/Makefile +++ b/trunk/arch/um/Makefile @@ -174,6 +174,19 @@ $(ARCH_DIR)/user-offsets.h: $(ARCH_DIR)/user-offsets.s CLEAN_FILES += $(ARCH_DIR)/user-offsets.s $(ARCH_DIR)/user-offsets.h +$(ARCH_DIR)/kernel-offsets.s: $(ARCH_DIR)/sys-$(SUBARCH)/kernel-offsets.c \ + $(ARCH_SYMLINKS) \ + $(SYS_DIR)/sc.h \ + include/asm include/linux/version.h \ + include/config/MARKER \ + $(ARCH_DIR)/include/user_constants.h + $(CC) $(CFLAGS) $(NOSTDINC_FLAGS) $(CPPFLAGS) -S -o $@ $< + +$(ARCH_DIR)/kernel-offsets.h: $(ARCH_DIR)/kernel-offsets.s + $(call filechk,gen-asm-offsets) + +CLEAN_FILES += $(ARCH_DIR)/kernel-offsets.s $(ARCH_DIR)/kernel-offsets.h + $(ARCH_DIR)/include/task.h: $(ARCH_DIR)/util/mk_task $(call filechk,gen_header) diff --git a/trunk/arch/um/include/common-offsets.h b/trunk/arch/um/include/common-offsets.h new file mode 100644 index 000000000000..d705daa2d854 --- /dev/null +++ b/trunk/arch/um/include/common-offsets.h @@ -0,0 +1,14 @@ +/* for use by sys-$SUBARCH/kernel-offsets.c */ + +OFFSET(TASK_REGS, task_struct, thread.regs); +OFFSET(TASK_PID, task_struct, pid); +DEFINE(UM_KERN_PAGE_SIZE, PAGE_SIZE); +DEFINE(UM_NSEC_PER_SEC, NSEC_PER_SEC); +DEFINE_STR(UM_KERN_EMERG, KERN_EMERG); +DEFINE_STR(UM_KERN_ALERT, KERN_ALERT); +DEFINE_STR(UM_KERN_CRIT, KERN_CRIT); +DEFINE_STR(UM_KERN_ERR, KERN_ERR); +DEFINE_STR(UM_KERN_WARNING, KERN_WARNING); +DEFINE_STR(UM_KERN_NOTICE, KERN_NOTICE); +DEFINE_STR(UM_KERN_INFO, KERN_INFO); +DEFINE_STR(UM_KERN_DEBUG, KERN_DEBUG); diff --git a/trunk/arch/um/sys-i386/kernel-offsets.c b/trunk/arch/um/sys-i386/kernel-offsets.c new file mode 100644 index 000000000000..9f8ecd1fdd96 --- /dev/null +++ b/trunk/arch/um/sys-i386/kernel-offsets.c @@ -0,0 +1,25 @@ +#include +#include +#include +#include +#include + +#define DEFINE(sym, val) \ + asm volatile("\n->" #sym " %0 " #val : : "i" (val)) + +#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) +{ + OFFSET(TASK_DEBUGREGS, task_struct, thread.arch.debugregs); +#ifdef CONFIG_MODE_TT + OFFSET(TASK_EXTERN_PID, task_struct, thread.mode.tt.extern_pid); +#endif +#include +} diff --git a/trunk/arch/um/sys-x86_64/kernel-offsets.c b/trunk/arch/um/sys-x86_64/kernel-offsets.c new file mode 100644 index 000000000000..220e875cbe29 --- /dev/null +++ b/trunk/arch/um/sys-x86_64/kernel-offsets.c @@ -0,0 +1,24 @@ +#include +#include +#include +#include +#include + +#define DEFINE(sym, val) \ + asm volatile("\n->" #sym " %0 " #val : : "i" (val)) + +#define DEFINE_STR1(x) #x +#define DEFINE_STR(sym, val) asm volatile("\n->" #sym " " DEFINE_STR1(val) " " #val: : ) + +#define BLANK() asm volatile("\n->" : : ) + +#define OFFSET(sym, str, mem) \ + DEFINE(sym, offsetof(struct str, mem)); + +void foo(void) +{ +#ifdef CONFIG_MODE_TT + OFFSET(TASK_EXTERN_PID, task_struct, thread.mode.tt.extern_pid); +#endif +#include +}