Commit 6c3559fc458e3ed171d7a8bf6a6d7eaea1e7b2e5
Committed by
Linus Torvalds
1 parent
b7f6961d83
Exists in
master
and in
7 other branches
[PATCH] m32r: task_pt_regs(), task_stack_page(), task_thread_info()
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>
Showing 4 changed files with 9 additions and 26 deletions Side-by-side Diff
arch/m32r/kernel/process.c
... | ... | @@ -242,13 +242,10 @@ |
242 | 242 | int copy_thread(int nr, unsigned long clone_flags, unsigned long spu, |
243 | 243 | unsigned long unused, struct task_struct *tsk, struct pt_regs *regs) |
244 | 244 | { |
245 | - struct pt_regs *childregs; | |
246 | - unsigned long sp = (unsigned long)tsk->thread_info + THREAD_SIZE; | |
245 | + struct pt_regs *childregs = task_pt_regs(tsk); | |
247 | 246 | extern void ret_from_fork(void); |
248 | 247 | |
249 | 248 | /* Copy registers */ |
250 | - sp -= sizeof (struct pt_regs); | |
251 | - childregs = (struct pt_regs *)sp; | |
252 | 249 | *childregs = *regs; |
253 | 250 | |
254 | 251 | childregs->spu = spu; |
arch/m32r/kernel/ptrace.c
... | ... | @@ -35,23 +35,6 @@ |
35 | 35 | #include <asm/mmu_context.h> |
36 | 36 | |
37 | 37 | /* |
38 | - * Get the address of the live pt_regs for the specified task. | |
39 | - * These are saved onto the top kernel stack when the process | |
40 | - * is not running. | |
41 | - * | |
42 | - * Note: if a user thread is execve'd from kernel space, the | |
43 | - * kernel stack will not be empty on entry to the kernel, so | |
44 | - * ptracing these tasks will fail. | |
45 | - */ | |
46 | -static inline struct pt_regs * | |
47 | -get_user_regs(struct task_struct *task) | |
48 | -{ | |
49 | - return (struct pt_regs *) | |
50 | - ((unsigned long)task->thread_info + THREAD_SIZE | |
51 | - - sizeof(struct pt_regs)); | |
52 | -} | |
53 | - | |
54 | -/* | |
55 | 38 | * This routine will get a word off of the process kernel stack. |
56 | 39 | */ |
57 | 40 | static inline unsigned long int |
... | ... | @@ -59,7 +42,7 @@ |
59 | 42 | { |
60 | 43 | unsigned long *stack; |
61 | 44 | |
62 | - stack = (unsigned long *)get_user_regs(task); | |
45 | + stack = (unsigned long *)task_pt_regs(task); | |
63 | 46 | |
64 | 47 | return stack[offset]; |
65 | 48 | } |
... | ... | @@ -72,7 +55,7 @@ |
72 | 55 | { |
73 | 56 | unsigned long *stack; |
74 | 57 | |
75 | - stack = (unsigned long *)get_user_regs(task); | |
58 | + stack = (unsigned long *)task_pt_regs(task); | |
76 | 59 | stack[offset] = data; |
77 | 60 | |
78 | 61 | return 0; |
... | ... | @@ -208,7 +191,7 @@ |
208 | 191 | */ |
209 | 192 | static int ptrace_getregs(struct task_struct *tsk, void __user *uregs) |
210 | 193 | { |
211 | - struct pt_regs *regs = get_user_regs(tsk); | |
194 | + struct pt_regs *regs = task_pt_regs(tsk); | |
212 | 195 | |
213 | 196 | return copy_to_user(uregs, regs, sizeof(struct pt_regs)) ? -EFAULT : 0; |
214 | 197 | } |
... | ... | @@ -223,7 +206,7 @@ |
223 | 206 | |
224 | 207 | ret = -EFAULT; |
225 | 208 | if (copy_from_user(&newregs, uregs, sizeof(struct pt_regs)) == 0) { |
226 | - struct pt_regs *regs = get_user_regs(tsk); | |
209 | + struct pt_regs *regs = task_pt_regs(tsk); | |
227 | 210 | *regs = newregs; |
228 | 211 | ret = 0; |
229 | 212 | } |
arch/m32r/kernel/smpboot.c
... | ... | @@ -286,7 +286,7 @@ |
286 | 286 | /* So we see what's up */ |
287 | 287 | printk("Booting processor %d/%d\n", phys_id, cpu_id); |
288 | 288 | stack_start.spi = (void *)idle->thread.sp; |
289 | - idle->thread_info->cpu = cpu_id; | |
289 | + task_thread_info(idle)->cpu = cpu_id; | |
290 | 290 | |
291 | 291 | /* |
292 | 292 | * Send Startup IPI |
include/asm-m32r/ptrace.h