Commit 95ca0dc6 authored by Al Viro's avatar Al Viro Committed by Linus Torvalds

[PATCH] cris: task_pt_regs()

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 0cec6fd1
...@@ -79,7 +79,7 @@ void hard_reset_now (void) ...@@ -79,7 +79,7 @@ void hard_reset_now (void)
*/ */
unsigned long thread_saved_pc(struct task_struct *t) unsigned long thread_saved_pc(struct task_struct *t)
{ {
return (unsigned long)user_regs(t->thread_info)->irp; return task_pt_regs(t)->irp;
} }
static void kernel_thread_helper(void* dummy, int (*fn)(void *), void * arg) static 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,7 +128,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
* remember that the task_struct doubles as the kernel stack for the task * remember that the task_struct doubles as the kernel stack for the task
*/ */
childregs = user_regs(p->thread_info); childregs = task_pt_regs(p);
*childregs = *regs; /* struct copy of pt_regs */ *childregs = *regs; /* struct copy of pt_regs */
......
...@@ -37,7 +37,7 @@ inline long get_reg(struct task_struct *task, unsigned int regno) ...@@ -37,7 +37,7 @@ inline long get_reg(struct task_struct *task, unsigned int regno)
if (regno == PT_USP) if (regno == PT_USP)
return task->thread.usp; return task->thread.usp;
else if (regno < PT_MAX) else if (regno < PT_MAX)
return ((unsigned long *)user_regs(task->thread_info))[regno]; return ((unsigned long *)task_pt_regs(task))[regno];
else else
return 0; return 0;
} }
...@@ -51,7 +51,7 @@ inline int put_reg(struct task_struct *task, unsigned int regno, ...@@ -51,7 +51,7 @@ inline int put_reg(struct task_struct *task, unsigned int regno,
if (regno == PT_USP) if (regno == PT_USP)
task->thread.usp = data; task->thread.usp = data;
else if (regno < PT_MAX) else if (regno < PT_MAX)
((unsigned long *)user_regs(task->thread_info))[regno] = data; ((unsigned long *)task_pt_regs(task))[regno] = data;
else else
return -1; return -1;
return 0; return 0;
......
...@@ -96,7 +96,7 @@ hard_reset_now(void) ...@@ -96,7 +96,7 @@ hard_reset_now(void)
*/ */
unsigned long thread_saved_pc(struct task_struct *t) unsigned long thread_saved_pc(struct task_struct *t)
{ {
return (unsigned long)user_regs(t->thread_info)->erp; return task_pt_regs(t)->erp;
} }
static void static void
...@@ -148,7 +148,7 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp, ...@@ -148,7 +148,7 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
* fix it up. Note: the task_struct doubles as the kernel stack for the * fix it up. Note: the task_struct doubles as the kernel stack for the
* task. * task.
*/ */
childregs = user_regs(p->thread_info); childregs = task_pt_regs(p);
*childregs = *regs; /* Struct copy of pt_regs. */ *childregs = *regs; /* Struct copy of pt_regs. */
p->set_child_tid = p->clear_child_tid = NULL; p->set_child_tid = p->clear_child_tid = NULL;
childregs->r10 = 0; /* Child returns 0 after a fork/clone. */ childregs->r10 = 0; /* Child returns 0 after a fork/clone. */
......
...@@ -46,7 +46,7 @@ long get_reg(struct task_struct *task, unsigned int regno) ...@@ -46,7 +46,7 @@ long get_reg(struct task_struct *task, unsigned int regno)
unsigned long ret; unsigned long ret;
if (regno <= PT_EDA) if (regno <= PT_EDA)
ret = ((unsigned long *)user_regs(task->thread_info))[regno]; ret = ((unsigned long *)task_pt_regs(task))[regno];
else if (regno == PT_USP) else if (regno == PT_USP)
ret = task->thread.usp; ret = task->thread.usp;
else if (regno == PT_PPC) else if (regno == PT_PPC)
...@@ -65,13 +65,13 @@ long get_reg(struct task_struct *task, unsigned int regno) ...@@ -65,13 +65,13 @@ long get_reg(struct task_struct *task, unsigned int regno)
int put_reg(struct task_struct *task, unsigned int regno, unsigned long data) int put_reg(struct task_struct *task, unsigned int regno, unsigned long data)
{ {
if (regno <= PT_EDA) if (regno <= PT_EDA)
((unsigned long *)user_regs(task->thread_info))[regno] = data; ((unsigned long *)task_pt_regs(task))[regno] = data;
else if (regno == PT_USP) else if (regno == PT_USP)
task->thread.usp = data; task->thread.usp = data;
else if (regno == PT_PPC) { else if (regno == PT_PPC) {
/* Write pseudo-PC to ERP only if changed. */ /* Write pseudo-PC to ERP only if changed. */
if (data != get_pseudo_pc(task)) if (data != get_pseudo_pc(task))
((unsigned long *)user_regs(task->thread_info))[PT_ERP] = data; task_pt_regs(task)->erp = data;
} else if (regno <= PT_MAX) } else if (regno <= PT_MAX)
return put_debugreg(task->pid, regno, data); return put_debugreg(task->pid, regno, data);
else else
......
...@@ -45,7 +45,8 @@ struct task_struct; ...@@ -45,7 +45,8 @@ struct task_struct;
* Dito but for the currently running task * Dito but for the currently running task
*/ */
#define current_regs() user_regs(current->thread_info) #define task_pt_regs(task) user_regs(task_thread_info(task))
#define current_regs() task_pt_regs(current)
static inline void prepare_to_copy(struct task_struct *tsk) static inline void prepare_to_copy(struct task_struct *tsk)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment