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

Commit 26ecbdea authored by Al Viro's avatar Al Viro Committed by Linus Torvalds
Browse files

[PATCH] sparc64: 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 ee3eea16
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -296,7 +296,7 @@ asmlinkage void do_ptrace(struct pt_regs *regs)
	case PTRACE_GETREGS: {
		struct pt_regs32 __user *pregs =
			(struct pt_regs32 __user *) addr;
		struct pt_regs *cregs = child->thread_info->kregs;
		struct pt_regs *cregs = task_pt_regs(child);
		int rval;

		if (__put_user(tstate_to_psr(cregs->tstate), (&pregs->psr)) ||
@@ -320,7 +320,7 @@ asmlinkage void do_ptrace(struct pt_regs *regs)

	case PTRACE_GETREGS64: {
		struct pt_regs __user *pregs = (struct pt_regs __user *) addr;
		struct pt_regs *cregs = child->thread_info->kregs;
		struct pt_regs *cregs = task_pt_regs(child);
		unsigned long tpc = cregs->tpc;
		int rval;

@@ -348,7 +348,7 @@ asmlinkage void do_ptrace(struct pt_regs *regs)
	case PTRACE_SETREGS: {
		struct pt_regs32 __user *pregs =
			(struct pt_regs32 __user *) addr;
		struct pt_regs *cregs = child->thread_info->kregs;
		struct pt_regs *cregs = task_pt_regs(child);
		unsigned int psr, pc, npc, y;
		int i;

@@ -381,7 +381,7 @@ asmlinkage void do_ptrace(struct pt_regs *regs)

	case PTRACE_SETREGS64: {
		struct pt_regs __user *pregs = (struct pt_regs __user *) addr;
		struct pt_regs *cregs = child->thread_info->kregs;
		struct pt_regs *cregs = task_pt_regs(child);
		unsigned long tstate, tpc, tnpc, y;
		int i;

@@ -562,8 +562,8 @@ asmlinkage void do_ptrace(struct pt_regs *regs)
#ifdef DEBUG_PTRACE
		printk("CONT: %s [%d]: set exit_code = %x %lx %lx\n", child->comm,
			child->pid, child->exit_code,
			child->thread_info->kregs->tpc,
			child->thread_info->kregs->tnpc);
			task_pt_regs(child)->tpc,
			task_pt_regs(child)->tnpc);
		       
#endif
		wake_up_process(child);
+1 −1
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ typedef struct {
#endif

#define ELF_CORE_COPY_TASK_REGS(__tsk, __elf_regs)	\
	({ ELF_CORE_COPY_REGS((*(__elf_regs)), (__tsk)->thread_info->kregs); 1; })
	({ ELF_CORE_COPY_REGS((*(__elf_regs)), task_pt_regs(__tsk)); 1; })

/*
 * This is used to ensure we don't load something for the wrong architecture.
+3 −2
Original line number Diff line number Diff line
@@ -186,8 +186,9 @@ extern pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);

extern unsigned long get_wchan(struct task_struct *task);

#define KSTK_EIP(tsk)  ((tsk)->thread_info->kregs->tpc)
#define KSTK_ESP(tsk)  ((tsk)->thread_info->kregs->u_regs[UREG_FP])
#define task_pt_regs(tsk) (task_thread_info(tsk)->kregs)
#define KSTK_EIP(tsk)  (task_pt_regs(tsk)->tpc)
#define KSTK_ESP(tsk)  (task_pt_regs(tsk)->u_regs[UREG_FP])

#define cpu_relax()	barrier()