[PATCH] m68k: m68k-specific thread_info changes
authorAl Viro <viro@parcelfarce.linux.theplanet.co.uk>
Mon, 14 Nov 2005 00:06:58 +0000 (16:06 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 14 Nov 2005 02:14:14 +0000 (18:14 -0800)
a) added embedded thread_info [m68k processor.h]

b) added missing symbols in asm-offsets.c

c) task_thread_info() and friends in asm-m68k/thread_info.h

d) made m68k thread_info.h included by m68k processor.h, not the other way
   round.

Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk>
Signed-off-by: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/m68k/kernel/asm-offsets.c
include/asm-m68k/processor.h
include/asm-m68k/thread_info.h

index cee3317b866505da52f3d3e5afe16abec5846f77..30beacfef8fbb5497dd7d58ba402ed9366ec3403 100644 (file)
@@ -31,6 +31,7 @@ int main(void)
        DEFINE(TASK_SIGPENDING, offsetof(struct task_struct, thread.work.sigpending));
        DEFINE(TASK_NOTIFY_RESUME, offsetof(struct task_struct, thread.work.notify_resume));
        DEFINE(TASK_THREAD, offsetof(struct task_struct, thread));
+       DEFINE(TASK_INFO, offsetof(struct task_struct, thread.info));
        DEFINE(TASK_MM, offsetof(struct task_struct, mm));
        DEFINE(TASK_ACTIVE_MM, offsetof(struct task_struct, active_mm));
 
@@ -45,6 +46,10 @@ int main(void)
        DEFINE(THREAD_FPCNTL, offsetof(struct thread_struct, fpcntl));
        DEFINE(THREAD_FPSTATE, offsetof(struct thread_struct, fpstate));
 
+       /* offsets into the thread_info struct */
+       DEFINE(TINFO_PREEMPT, offsetof(struct thread_info, preempt_count));
+       DEFINE(TINFO_FLAGS, offsetof(struct thread_info, flags));
+
        /* offsets into the pt_regs */
        DEFINE(PT_D0, offsetof(struct pt_regs, d0));
        DEFINE(PT_ORIG_D0, offsetof(struct pt_regs, orig_d0));
index df1575db32afb0df7efbb3827762feb3fd2fd917..84b4b26df04c27b1b379adcbf33f1c80622d25d4 100644 (file)
@@ -14,6 +14,7 @@
 #define current_text_addr() ({ __label__ _l; _l: &&_l;})
 
 #include <linux/config.h>
+#include <linux/thread_info.h>
 #include <asm/segment.h>
 #include <asm/fpu.h>
 #include <asm/ptrace.h>
@@ -79,6 +80,7 @@ struct thread_struct {
        unsigned long  fpcntl[3];       /* fp control regs */
        unsigned char  fpstate[FPSTATESIZE];  /* floating point state */
        struct task_work work;
+       struct thread_info info;
 };
 
 #define INIT_THREAD  {                                                 \
index 2aed24f6fd2e75a1193036f4f14ab0bbe22eb0bd..4fdbf55f95e50b93bd7e8b520c965df6e63d0b72 100644 (file)
@@ -2,7 +2,6 @@
 #define _ASM_M68K_THREAD_INFO_H
 
 #include <asm/types.h>
-#include <asm/processor.h>
 #include <asm/page.h>
 
 struct thread_info {
@@ -35,14 +34,21 @@ struct thread_info {
 #define free_thread_info(ti)  free_pages((unsigned long)(ti),1)
 #endif /* PAGE_SHIFT == 13 */
 
-//#define init_thread_info     (init_task.thread.info)
+#define init_thread_info       (init_task.thread.info)
 #define init_stack             (init_thread_union.stack)
 
-#define current_thread_info()  (current->thread_info)
-
+#define task_thread_info(tsk)  (&(tsk)->thread.info)
+#define current_thread_info()  task_thread_info(current)
 
 #define __HAVE_THREAD_FUNCTIONS
 
+#define setup_thread_stack(p, org) ({                  \
+       *(struct task_struct **)(p)->thread_info = (p); \
+       task_thread_info(p)->task = (p);                \
+})
+
+#define end_of_stack(p) ((unsigned long *)(p)->thread_info + 1)
+
 #define TIF_SYSCALL_TRACE      0       /* syscall trace active */
 #define TIF_DELAYED_TRACE      1       /* single step a syscall */
 #define TIF_NOTIFY_RESUME      2       /* resumption notification requested */