[PATCH] sparc64: task_pt_regs()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Al Viro and committed by Linus Torvalds 26ecbdea ee3eea16

+10 -9
+6 -6
arch/sparc64/kernel/ptrace.c
··· 296 case PTRACE_GETREGS: { 297 struct pt_regs32 __user *pregs = 298 (struct pt_regs32 __user *) addr; 299 - struct pt_regs *cregs = child->thread_info->kregs; 300 int rval; 301 302 if (__put_user(tstate_to_psr(cregs->tstate), (&pregs->psr)) || ··· 320 321 case PTRACE_GETREGS64: { 322 struct pt_regs __user *pregs = (struct pt_regs __user *) addr; 323 - struct pt_regs *cregs = child->thread_info->kregs; 324 unsigned long tpc = cregs->tpc; 325 int rval; 326 ··· 348 case PTRACE_SETREGS: { 349 struct pt_regs32 __user *pregs = 350 (struct pt_regs32 __user *) addr; 351 - struct pt_regs *cregs = child->thread_info->kregs; 352 unsigned int psr, pc, npc, y; 353 int i; 354 ··· 381 382 case PTRACE_SETREGS64: { 383 struct pt_regs __user *pregs = (struct pt_regs __user *) addr; 384 - struct pt_regs *cregs = child->thread_info->kregs; 385 unsigned long tstate, tpc, tnpc, y; 386 int i; 387 ··· 562 #ifdef DEBUG_PTRACE 563 printk("CONT: %s [%d]: set exit_code = %x %lx %lx\n", child->comm, 564 child->pid, child->exit_code, 565 - child->thread_info->kregs->tpc, 566 - child->thread_info->kregs->tnpc); 567 568 #endif 569 wake_up_process(child);
··· 296 case PTRACE_GETREGS: { 297 struct pt_regs32 __user *pregs = 298 (struct pt_regs32 __user *) addr; 299 + struct pt_regs *cregs = task_pt_regs(child); 300 int rval; 301 302 if (__put_user(tstate_to_psr(cregs->tstate), (&pregs->psr)) || ··· 320 321 case PTRACE_GETREGS64: { 322 struct pt_regs __user *pregs = (struct pt_regs __user *) addr; 323 + struct pt_regs *cregs = task_pt_regs(child); 324 unsigned long tpc = cregs->tpc; 325 int rval; 326 ··· 348 case PTRACE_SETREGS: { 349 struct pt_regs32 __user *pregs = 350 (struct pt_regs32 __user *) addr; 351 + struct pt_regs *cregs = task_pt_regs(child); 352 unsigned int psr, pc, npc, y; 353 int i; 354 ··· 381 382 case PTRACE_SETREGS64: { 383 struct pt_regs __user *pregs = (struct pt_regs __user *) addr; 384 + struct pt_regs *cregs = task_pt_regs(child); 385 unsigned long tstate, tpc, tnpc, y; 386 int i; 387 ··· 562 #ifdef DEBUG_PTRACE 563 printk("CONT: %s [%d]: set exit_code = %x %lx %lx\n", child->comm, 564 child->pid, child->exit_code, 565 + task_pt_regs(child)->tpc, 566 + task_pt_regs(child)->tnpc); 567 568 #endif 569 wake_up_process(child);
+1 -1
include/asm-sparc64/elf.h
··· 119 #endif 120 121 #define ELF_CORE_COPY_TASK_REGS(__tsk, __elf_regs) \ 122 - ({ ELF_CORE_COPY_REGS((*(__elf_regs)), (__tsk)->thread_info->kregs); 1; }) 123 124 /* 125 * This is used to ensure we don't load something for the wrong architecture.
··· 119 #endif 120 121 #define ELF_CORE_COPY_TASK_REGS(__tsk, __elf_regs) \ 122 + ({ ELF_CORE_COPY_REGS((*(__elf_regs)), task_pt_regs(__tsk)); 1; }) 123 124 /* 125 * This is used to ensure we don't load something for the wrong architecture.
+3 -2
include/asm-sparc64/processor.h
··· 186 187 extern unsigned long get_wchan(struct task_struct *task); 188 189 - #define KSTK_EIP(tsk) ((tsk)->thread_info->kregs->tpc) 190 - #define KSTK_ESP(tsk) ((tsk)->thread_info->kregs->u_regs[UREG_FP]) 191 192 #define cpu_relax() barrier() 193
··· 186 187 extern unsigned long get_wchan(struct task_struct *task); 188 189 + #define task_pt_regs(tsk) (task_thread_info(tsk)->kregs) 190 + #define KSTK_EIP(tsk) (task_pt_regs(tsk)->tpc) 191 + #define KSTK_ESP(tsk) (task_pt_regs(tsk)->u_regs[UREG_FP]) 192 193 #define cpu_relax() barrier() 194