copy_thread(int nr, unsigned long clone_flags, unsigned long stack_start,
            unsigned long unused, struct task_struct *p, struct pt_regs *regs)
 {
-       struct thread_info *thread = p->thread_info;
+       struct thread_info *thread = task_thread_info(p);
        struct pt_regs *childregs;
 
        childregs = __get_user_regs(thread);
 
  */
 static int ptrace_getfpregs(struct task_struct *tsk, void *ufp)
 {
-       return copy_to_user(ufp, &tsk->thread_info->fpstate,
+       return copy_to_user(ufp, &task_thread_info(tsk)->fpstate,
                            sizeof(struct user_fp)) ? -EFAULT : 0;
 }
 
 static int ptrace_setfpregs(struct task_struct *tsk, void *ufp)
 {
        set_stopped_child_used_math(tsk);
-       return copy_from_user(&tsk->thread_info->fpstate, ufp,
+       return copy_from_user(&task_threas_info(tsk)->fpstate, ufp,
                              sizeof(struct user_fp)) ? -EFAULT : 0;
 }
 
 
 
 #define switch_to(prev,next,last)                                      \
 do {                                                                   \
-       last = __switch_to(prev,prev->thread_info,next->thread_info);   \
+       last = __switch_to(prev,task_thread_info(prev),task_thread_info(next)); \
 } while (0)
 
 /*
 
 #define put_thread_info(ti)    put_task_struct((ti)->task)
 
 #define thread_saved_pc(tsk)   \
-       ((unsigned long)(pc_pointer((tsk)->thread_info->cpu_context.pc)))
+       ((unsigned long)(pc_pointer(task_thread_info(tsk)->cpu_context.pc)))
 #define thread_saved_fp(tsk)   \
-       ((unsigned long)((tsk)->thread_info->cpu_context.fp))
+       ((unsigned long)(task_thread_info(tsk)->cpu_context.fp))
 
 #else /* !__ASSEMBLY__ */