Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -79,7 +79,7 @@ void hard_reset_now (void)
 */
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)
@@ -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
	 */

	childregs = user_regs(p->thread_info);        
	childregs = task_pt_regs(p);
        
	*childregs = *regs;  /* struct copy of pt_regs */
        
+2 −2
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ inline long get_reg(struct task_struct *task, unsigned int regno)
	if (regno == PT_USP)
		return task->thread.usp;
	else if (regno < PT_MAX)
		return ((unsigned long *)user_regs(task->thread_info))[regno];
		return ((unsigned long *)task_pt_regs(task))[regno];
	else
		return 0;
}
@@ -51,7 +51,7 @@ inline int put_reg(struct task_struct *task, unsigned int regno,
	if (regno == PT_USP)
		task->thread.usp = data;
	else if (regno < PT_MAX)
		((unsigned long *)user_regs(task->thread_info))[regno] = data;
		((unsigned long *)task_pt_regs(task))[regno] = data;
	else
		return -1;
	return 0;
+2 −2
Original line number Diff line number Diff line
@@ -96,7 +96,7 @@ hard_reset_now(void)
 */
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
@@ -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
	 * task.
	 */
	childregs = user_regs(p->thread_info);
	childregs = task_pt_regs(p);
	*childregs = *regs;	/* Struct copy of pt_regs. */
        p->set_child_tid = p->clear_child_tid = NULL;
        childregs->r10 = 0;	/* Child returns 0 after a fork/clone. */
+3 −3
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ long get_reg(struct task_struct *task, unsigned int regno)
	unsigned long ret;

	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)
		ret = task->thread.usp;
	else if (regno == PT_PPC)
@@ -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)
{
	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)
		task->thread.usp = data;
	else if (regno == PT_PPC) {
		/* Write pseudo-PC to ERP only if changed. */
		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)
		return put_debugreg(task->pid, regno, data);
	else
+2 −1
Original line number Diff line number Diff line
@@ -45,7 +45,8 @@ struct task_struct;
 * 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)
{