diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2006-01-12 04:05:43 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-12 12:08:52 -0500 |
commit | 26ecbdea4bf46b0165db4aafd8e4981b4db53936 (patch) | |
tree | 16d743692c32f465a5c73b3f051bd87c87ba08ae | |
parent | ee3eea165e706a3ce8a53693e810403f65239ebb (diff) |
[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>
-rw-r--r-- | arch/sparc64/kernel/ptrace.c | 12 | ||||
-rw-r--r-- | include/asm-sparc64/elf.h | 2 | ||||
-rw-r--r-- | include/asm-sparc64/processor.h | 5 |
3 files changed, 10 insertions, 9 deletions
diff --git a/arch/sparc64/kernel/ptrace.c b/arch/sparc64/kernel/ptrace.c index 3e4077c84a23..3f9746f856d2 100644 --- a/arch/sparc64/kernel/ptrace.c +++ b/arch/sparc64/kernel/ptrace.c | |||
@@ -296,7 +296,7 @@ asmlinkage void do_ptrace(struct pt_regs *regs) | |||
296 | case PTRACE_GETREGS: { | 296 | case PTRACE_GETREGS: { |
297 | struct pt_regs32 __user *pregs = | 297 | struct pt_regs32 __user *pregs = |
298 | (struct pt_regs32 __user *) addr; | 298 | (struct pt_regs32 __user *) addr; |
299 | struct pt_regs *cregs = child->thread_info->kregs; | 299 | struct pt_regs *cregs = task_pt_regs(child); |
300 | int rval; | 300 | int rval; |
301 | 301 | ||
302 | if (__put_user(tstate_to_psr(cregs->tstate), (&pregs->psr)) || | 302 | if (__put_user(tstate_to_psr(cregs->tstate), (&pregs->psr)) || |
@@ -320,7 +320,7 @@ asmlinkage void do_ptrace(struct pt_regs *regs) | |||
320 | 320 | ||
321 | case PTRACE_GETREGS64: { | 321 | case PTRACE_GETREGS64: { |
322 | struct pt_regs __user *pregs = (struct pt_regs __user *) addr; | 322 | struct pt_regs __user *pregs = (struct pt_regs __user *) addr; |
323 | struct pt_regs *cregs = child->thread_info->kregs; | 323 | struct pt_regs *cregs = task_pt_regs(child); |
324 | unsigned long tpc = cregs->tpc; | 324 | unsigned long tpc = cregs->tpc; |
325 | int rval; | 325 | int rval; |
326 | 326 | ||
@@ -348,7 +348,7 @@ asmlinkage void do_ptrace(struct pt_regs *regs) | |||
348 | case PTRACE_SETREGS: { | 348 | case PTRACE_SETREGS: { |
349 | struct pt_regs32 __user *pregs = | 349 | struct pt_regs32 __user *pregs = |
350 | (struct pt_regs32 __user *) addr; | 350 | (struct pt_regs32 __user *) addr; |
351 | struct pt_regs *cregs = child->thread_info->kregs; | 351 | struct pt_regs *cregs = task_pt_regs(child); |
352 | unsigned int psr, pc, npc, y; | 352 | unsigned int psr, pc, npc, y; |
353 | int i; | 353 | int i; |
354 | 354 | ||
@@ -381,7 +381,7 @@ asmlinkage void do_ptrace(struct pt_regs *regs) | |||
381 | 381 | ||
382 | case PTRACE_SETREGS64: { | 382 | case PTRACE_SETREGS64: { |
383 | struct pt_regs __user *pregs = (struct pt_regs __user *) addr; | 383 | struct pt_regs __user *pregs = (struct pt_regs __user *) addr; |
384 | struct pt_regs *cregs = child->thread_info->kregs; | 384 | struct pt_regs *cregs = task_pt_regs(child); |
385 | unsigned long tstate, tpc, tnpc, y; | 385 | unsigned long tstate, tpc, tnpc, y; |
386 | int i; | 386 | int i; |
387 | 387 | ||
@@ -562,8 +562,8 @@ asmlinkage void do_ptrace(struct pt_regs *regs) | |||
562 | #ifdef DEBUG_PTRACE | 562 | #ifdef DEBUG_PTRACE |
563 | printk("CONT: %s [%d]: set exit_code = %x %lx %lx\n", child->comm, | 563 | printk("CONT: %s [%d]: set exit_code = %x %lx %lx\n", child->comm, |
564 | child->pid, child->exit_code, | 564 | child->pid, child->exit_code, |
565 | child->thread_info->kregs->tpc, | 565 | task_pt_regs(child)->tpc, |
566 | child->thread_info->kregs->tnpc); | 566 | task_pt_regs(child)->tnpc); |
567 | 567 | ||
568 | #endif | 568 | #endif |
569 | wake_up_process(child); | 569 | wake_up_process(child); |
diff --git a/include/asm-sparc64/elf.h b/include/asm-sparc64/elf.h index 91458118277e..69539a8ab833 100644 --- a/include/asm-sparc64/elf.h +++ b/include/asm-sparc64/elf.h | |||
@@ -119,7 +119,7 @@ typedef struct { | |||
119 | #endif | 119 | #endif |
120 | 120 | ||
121 | #define ELF_CORE_COPY_TASK_REGS(__tsk, __elf_regs) \ | 121 | #define ELF_CORE_COPY_TASK_REGS(__tsk, __elf_regs) \ |
122 | ({ ELF_CORE_COPY_REGS((*(__elf_regs)), (__tsk)->thread_info->kregs); 1; }) | 122 | ({ ELF_CORE_COPY_REGS((*(__elf_regs)), task_pt_regs(__tsk)); 1; }) |
123 | 123 | ||
124 | /* | 124 | /* |
125 | * This is used to ensure we don't load something for the wrong architecture. | 125 | * This is used to ensure we don't load something for the wrong architecture. |
diff --git a/include/asm-sparc64/processor.h b/include/asm-sparc64/processor.h index 3169f3e2237e..cd8d9b4c8658 100644 --- a/include/asm-sparc64/processor.h +++ b/include/asm-sparc64/processor.h | |||
@@ -186,8 +186,9 @@ extern pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); | |||
186 | 186 | ||
187 | extern unsigned long get_wchan(struct task_struct *task); | 187 | extern unsigned long get_wchan(struct task_struct *task); |
188 | 188 | ||
189 | #define KSTK_EIP(tsk) ((tsk)->thread_info->kregs->tpc) | 189 | #define task_pt_regs(tsk) (task_thread_info(tsk)->kregs) |
190 | #define KSTK_ESP(tsk) ((tsk)->thread_info->kregs->u_regs[UREG_FP]) | 190 | #define KSTK_EIP(tsk) (task_pt_regs(tsk)->tpc) |
191 | #define KSTK_ESP(tsk) (task_pt_regs(tsk)->u_regs[UREG_FP]) | ||
191 | 192 | ||
192 | #define cpu_relax() barrier() | 193 | #define cpu_relax() barrier() |
193 | 194 | ||