From: Al Viro Signed-off-by: Al Viro Signed-off-by: Andrew Morton --- arch/sparc64/kernel/ptrace.c | 12 ++++++------ include/asm-sparc64/elf.h | 2 +- include/asm-sparc64/processor.h | 5 +++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff -puN arch/sparc64/kernel/ptrace.c~sparc64-task_pt_regs arch/sparc64/kernel/ptrace.c --- devel/arch/sparc64/kernel/ptrace.c~sparc64-task_pt_regs 2006-01-04 22:02:00.000000000 -0800 +++ devel-akpm/arch/sparc64/kernel/ptrace.c 2006-01-04 22:02:00.000000000 -0800 @@ -296,7 +296,7 @@ asmlinkage void do_ptrace(struct pt_regs case PTRACE_GETREGS: { struct pt_regs32 __user *pregs = (struct pt_regs32 __user *) addr; - struct pt_regs *cregs = child->thread_info->kregs; + struct pt_regs *cregs = task_pt_regs(child); int rval; if (__put_user(tstate_to_psr(cregs->tstate), (&pregs->psr)) || @@ -320,7 +320,7 @@ asmlinkage void do_ptrace(struct pt_regs case PTRACE_GETREGS64: { struct pt_regs __user *pregs = (struct pt_regs __user *) addr; - struct pt_regs *cregs = child->thread_info->kregs; + struct pt_regs *cregs = task_pt_regs(child); unsigned long tpc = cregs->tpc; int rval; @@ -348,7 +348,7 @@ asmlinkage void do_ptrace(struct pt_regs case PTRACE_SETREGS: { struct pt_regs32 __user *pregs = (struct pt_regs32 __user *) addr; - struct pt_regs *cregs = child->thread_info->kregs; + struct pt_regs *cregs = task_pt_regs(child); unsigned int psr, pc, npc, y; int i; @@ -381,7 +381,7 @@ asmlinkage void do_ptrace(struct pt_regs case PTRACE_SETREGS64: { struct pt_regs __user *pregs = (struct pt_regs __user *) addr; - struct pt_regs *cregs = child->thread_info->kregs; + struct pt_regs *cregs = task_pt_regs(child); unsigned long tstate, tpc, tnpc, y; int i; @@ -562,8 +562,8 @@ asmlinkage void do_ptrace(struct pt_regs #ifdef DEBUG_PTRACE printk("CONT: %s [%d]: set exit_code = %x %lx %lx\n", child->comm, child->pid, child->exit_code, - child->thread_info->kregs->tpc, - child->thread_info->kregs->tnpc); + task_pt_regs(child)->tpc, + task_pt_regs(child)->tnpc); #endif wake_up_process(child); diff -puN include/asm-sparc64/elf.h~sparc64-task_pt_regs include/asm-sparc64/elf.h --- devel/include/asm-sparc64/elf.h~sparc64-task_pt_regs 2006-01-04 22:02:00.000000000 -0800 +++ devel-akpm/include/asm-sparc64/elf.h 2006-01-04 22:02:00.000000000 -0800 @@ -119,7 +119,7 @@ typedef struct { #endif #define ELF_CORE_COPY_TASK_REGS(__tsk, __elf_regs) \ - ({ ELF_CORE_COPY_REGS((*(__elf_regs)), (__tsk)->thread_info->kregs); 1; }) + ({ ELF_CORE_COPY_REGS((*(__elf_regs)), task_pt_regs(__tsk)); 1; }) /* * This is used to ensure we don't load something for the wrong architecture. diff -puN include/asm-sparc64/processor.h~sparc64-task_pt_regs include/asm-sparc64/processor.h --- devel/include/asm-sparc64/processor.h~sparc64-task_pt_regs 2006-01-04 22:02:00.000000000 -0800 +++ devel-akpm/include/asm-sparc64/processor.h 2006-01-04 22:02:00.000000000 -0800 @@ -186,8 +186,9 @@ extern pid_t kernel_thread(int (*fn)(voi extern unsigned long get_wchan(struct task_struct *task); -#define KSTK_EIP(tsk) ((tsk)->thread_info->kregs->tpc) -#define KSTK_ESP(tsk) ((tsk)->thread_info->kregs->u_regs[UREG_FP]) +#define task_pt_regs(tsk) (task_thread_info(tsk)->kregs) +#define KSTK_EIP(tsk) (task_pt_regs(tsk)->tpc) +#define KSTK_ESP(tsk) (task_pt_regs(tsk)->u_regs[UREG_FP]) #define cpu_relax() barrier() _