aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Viro <viro@ftp.linux.org.uk>2006-01-12 04:06:03 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-12 12:08:58 -0500
commit95ca0dc603ab58f3e4c5a1c23f675bd1f5b5fef3 (patch)
tree367ddcc3858b9c3e852ea2f6bafaffd43424c9e5
parent0cec6fd1370807f98934e84c9e6147335b81d8a5 (diff)
[PATCH] cris: 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/cris/arch-v10/kernel/process.c4
-rw-r--r--arch/cris/arch-v10/kernel/ptrace.c4
-rw-r--r--arch/cris/arch-v32/kernel/process.c4
-rw-r--r--arch/cris/arch-v32/kernel/ptrace.c6
-rw-r--r--include/asm-cris/processor.h3
5 files changed, 11 insertions, 10 deletions
diff --git a/arch/cris/arch-v10/kernel/process.c b/arch/cris/arch-v10/kernel/process.c
index 69e28b4057e..0a675ce9e09 100644
--- a/arch/cris/arch-v10/kernel/process.c
+++ b/arch/cris/arch-v10/kernel/process.c
@@ -79,7 +79,7 @@ void hard_reset_now (void)
79 */ 79 */
80unsigned long thread_saved_pc(struct task_struct *t) 80unsigned long thread_saved_pc(struct task_struct *t)
81{ 81{
82 return (unsigned long)user_regs(t->thread_info)->irp; 82 return task_pt_regs(t)->irp;
83} 83}
84 84
85static void kernel_thread_helper(void* dummy, int (*fn)(void *), void * arg) 85static void kernel_thread_helper(void* dummy, int (*fn)(void *), void * arg)
@@ -128,7 +128,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
128 * remember that the task_struct doubles as the kernel stack for the task 128 * remember that the task_struct doubles as the kernel stack for the task
129 */ 129 */
130 130
131 childregs = user_regs(p->thread_info); 131 childregs = task_pt_regs(p);
132 132
133 *childregs = *regs; /* struct copy of pt_regs */ 133 *childregs = *regs; /* struct copy of pt_regs */
134 134
diff --git a/arch/cris/arch-v10/kernel/ptrace.c b/arch/cris/arch-v10/kernel/ptrace.c
index 6cbd34a27b9..f214f74f264 100644
--- a/arch/cris/arch-v10/kernel/ptrace.c
+++ b/arch/cris/arch-v10/kernel/ptrace.c
@@ -37,7 +37,7 @@ inline long get_reg(struct task_struct *task, unsigned int regno)
37 if (regno == PT_USP) 37 if (regno == PT_USP)
38 return task->thread.usp; 38 return task->thread.usp;
39 else if (regno < PT_MAX) 39 else if (regno < PT_MAX)
40 return ((unsigned long *)user_regs(task->thread_info))[regno]; 40 return ((unsigned long *)task_pt_regs(task))[regno];
41 else 41 else
42 return 0; 42 return 0;
43} 43}
@@ -51,7 +51,7 @@ inline int put_reg(struct task_struct *task, unsigned int regno,
51 if (regno == PT_USP) 51 if (regno == PT_USP)
52 task->thread.usp = data; 52 task->thread.usp = data;
53 else if (regno < PT_MAX) 53 else if (regno < PT_MAX)
54 ((unsigned long *)user_regs(task->thread_info))[regno] = data; 54 ((unsigned long *)task_pt_regs(task))[regno] = data;
55 else 55 else
56 return -1; 56 return -1;
57 return 0; 57 return 0;
diff --git a/arch/cris/arch-v32/kernel/process.c b/arch/cris/arch-v32/kernel/process.c
index 882be42114f..e88b13b139d 100644
--- a/arch/cris/arch-v32/kernel/process.c
+++ b/arch/cris/arch-v32/kernel/process.c
@@ -96,7 +96,7 @@ hard_reset_now(void)
96 */ 96 */
97unsigned long thread_saved_pc(struct task_struct *t) 97unsigned long thread_saved_pc(struct task_struct *t)
98{ 98{
99 return (unsigned long)user_regs(t->thread_info)->erp; 99 return task_pt_regs(t)->erp;
100} 100}
101 101
102static void 102static void
@@ -148,7 +148,7 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
148 * fix it up. Note: the task_struct doubles as the kernel stack for the 148 * fix it up. Note: the task_struct doubles as the kernel stack for the
149 * task. 149 * task.
150 */ 150 */
151 childregs = user_regs(p->thread_info); 151 childregs = task_pt_regs(p);
152 *childregs = *regs; /* Struct copy of pt_regs. */ 152 *childregs = *regs; /* Struct copy of pt_regs. */
153 p->set_child_tid = p->clear_child_tid = NULL; 153 p->set_child_tid = p->clear_child_tid = NULL;
154 childregs->r10 = 0; /* Child returns 0 after a fork/clone. */ 154 childregs->r10 = 0; /* Child returns 0 after a fork/clone. */
diff --git a/arch/cris/arch-v32/kernel/ptrace.c b/arch/cris/arch-v32/kernel/ptrace.c
index 5528b83a622..82cf2e3624a 100644
--- a/arch/cris/arch-v32/kernel/ptrace.c
+++ b/arch/cris/arch-v32/kernel/ptrace.c
@@ -46,7 +46,7 @@ long get_reg(struct task_struct *task, unsigned int regno)
46 unsigned long ret; 46 unsigned long ret;
47 47
48 if (regno <= PT_EDA) 48 if (regno <= PT_EDA)
49 ret = ((unsigned long *)user_regs(task->thread_info))[regno]; 49 ret = ((unsigned long *)task_pt_regs(task))[regno];
50 else if (regno == PT_USP) 50 else if (regno == PT_USP)
51 ret = task->thread.usp; 51 ret = task->thread.usp;
52 else if (regno == PT_PPC) 52 else if (regno == PT_PPC)
@@ -65,13 +65,13 @@ long get_reg(struct task_struct *task, unsigned int regno)
65int put_reg(struct task_struct *task, unsigned int regno, unsigned long data) 65int put_reg(struct task_struct *task, unsigned int regno, unsigned long data)
66{ 66{
67 if (regno <= PT_EDA) 67 if (regno <= PT_EDA)
68 ((unsigned long *)user_regs(task->thread_info))[regno] = data; 68 ((unsigned long *)task_pt_regs(task))[regno] = data;
69 else if (regno == PT_USP) 69 else if (regno == PT_USP)
70 task->thread.usp = data; 70 task->thread.usp = data;
71 else if (regno == PT_PPC) { 71 else if (regno == PT_PPC) {
72 /* Write pseudo-PC to ERP only if changed. */ 72 /* Write pseudo-PC to ERP only if changed. */
73 if (data != get_pseudo_pc(task)) 73 if (data != get_pseudo_pc(task))
74 ((unsigned long *)user_regs(task->thread_info))[PT_ERP] = data; 74 task_pt_regs(task)->erp = data;
75 } else if (regno <= PT_MAX) 75 } else if (regno <= PT_MAX)
76 return put_debugreg(task->pid, regno, data); 76 return put_debugreg(task->pid, regno, data);
77 else 77 else
diff --git a/include/asm-cris/processor.h b/include/asm-cris/processor.h
index dce41009eeb..961e2bceadb 100644
--- a/include/asm-cris/processor.h
+++ b/include/asm-cris/processor.h
@@ -45,7 +45,8 @@ struct task_struct;
45 * Dito but for the currently running task 45 * Dito but for the currently running task
46 */ 46 */
47 47
48#define current_regs() user_regs(current->thread_info) 48#define task_pt_regs(task) user_regs(task_thread_info(task))
49#define current_regs() task_pt_regs(current)
49 50
50static inline void prepare_to_copy(struct task_struct *tsk) 51static inline void prepare_to_copy(struct task_struct *tsk)
51{ 52{