[PATCH 23/50] xtensa: task_pt_regs(), task_stack_page()

From: Al Viro
Date: Tue Jan 03 2006 - 16:14:15 EST


References: <20060103210515.5135@xxxxxxxxxxxxxxxx>
In-Reply-To: <20060103210515.5135@xxxxxxxxxxxxxxxx>

Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx>

---

arch/xtensa/kernel/process.c | 4 ++--
arch/xtensa/kernel/ptrace.c | 12 ++++++------
include/asm-xtensa/processor.h | 6 +++---
include/asm-xtensa/ptrace.h | 4 ++--
4 files changed, 13 insertions(+), 13 deletions(-)

05742756efda39221d12ca3923470becfc4cf860
diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c
index 6a44b54..f1f5966 100644
--- a/arch/xtensa/kernel/process.c
+++ b/arch/xtensa/kernel/process.c
@@ -145,7 +145,7 @@ int copy_thread(int nr, unsigned long cl
int user_mode = user_mode(regs);

/* Set up new TSS. */
- tos = (unsigned long)p->thread_info + THREAD_SIZE;
+ tos = (unsigned long)task_stack_page(p) + THREAD_SIZE;
if (user_mode)
childregs = (struct pt_regs*)(tos - PT_USER_SIZE);
else
@@ -217,7 +217,7 @@ int kernel_thread(int (*fn)(void *), voi
unsigned long get_wchan(struct task_struct *p)
{
unsigned long sp, pc;
- unsigned long stack_page = (unsigned long) p->thread_info;
+ unsigned long stack_page = (unsigned long) task_stack_page(p);
int count = 0;

if (!p || p == current || p->state == TASK_RUNNING)
diff --git a/arch/xtensa/kernel/ptrace.c b/arch/xtensa/kernel/ptrace.c
index ab5c4c6..4cc8528 100644
--- a/arch/xtensa/kernel/ptrace.c
+++ b/arch/xtensa/kernel/ptrace.c
@@ -72,7 +72,7 @@ long arch_ptrace(struct task_struct *chi
struct pt_regs *regs;
unsigned long tmp;

- regs = xtensa_pt_regs(child);
+ regs = task_pt_regs(child);
tmp = 0; /* Default return value. */

switch(addr) {
@@ -149,7 +149,7 @@ long arch_ptrace(struct task_struct *chi
case PTRACE_POKEUSR:
{
struct pt_regs *regs;
- regs = xtensa_pt_regs(child);
+ regs = task_pt_regs(child);

switch (addr) {
case REG_AR_BASE ... REG_AR_BASE + XCHAL_NUM_AREGS - 1:
@@ -240,7 +240,7 @@ long arch_ptrace(struct task_struct *chi
* elf_gregset_t format. */

xtensa_gregset_t format;
- struct pt_regs *regs = xtensa_pt_regs(child);
+ struct pt_regs *regs = task_pt_regs(child);

do_copy_regs (&format, regs, child);

@@ -257,7 +257,7 @@ long arch_ptrace(struct task_struct *chi
* values in the elf_gregset_t format. */

xtensa_gregset_t format;
- struct pt_regs *regs = xtensa_pt_regs(child);
+ struct pt_regs *regs = task_pt_regs(child);

if (copy_from_user(&format,(void *)data,sizeof(elf_gregset_t))){
ret = -EFAULT;
@@ -281,7 +281,7 @@ long arch_ptrace(struct task_struct *chi
* elf_fpregset_t format. */

elf_fpregset_t fpregs;
- struct pt_regs *regs = xtensa_pt_regs(child);
+ struct pt_regs *regs = task_pt_regs(child);

do_save_fpregs (&fpregs, regs, child);

@@ -299,7 +299,7 @@ long arch_ptrace(struct task_struct *chi
* values in the elf_fpregset_t format.
*/
elf_fpregset_t fpregs;
- struct pt_regs *regs = xtensa_pt_regs(child);
+ struct pt_regs *regs = task_pt_regs(child);

ret = 0;
if (copy_from_user(&fpregs, (void *)data, sizeof(elf_fpregset_t))) {
diff --git a/include/asm-xtensa/processor.h b/include/asm-xtensa/processor.h
index 9cab5e4..d1d72ad 100644
--- a/include/asm-xtensa/processor.h
+++ b/include/asm-xtensa/processor.h
@@ -184,12 +184,12 @@ extern int kernel_thread(int (*fn)(void
#define release_segments(mm) do { } while(0)
#define forget_segments() do { } while (0)

-#define thread_saved_pc(tsk) (xtensa_pt_regs(tsk)->pc)
+#define thread_saved_pc(tsk) (task_pt_regs(tsk)->pc)

extern unsigned long get_wchan(struct task_struct *p);

-#define KSTK_EIP(tsk) (xtensa_pt_regs(tsk)->pc)
-#define KSTK_ESP(tsk) (xtensa_pt_regs(tsk)->areg[1])
+#define KSTK_EIP(tsk) (task_pt_regs(tsk)->pc)
+#define KSTK_ESP(tsk) (task_pt_regs(tsk)->areg[1])

#define cpu_relax() do { } while (0)

diff --git a/include/asm-xtensa/ptrace.h b/include/asm-xtensa/ptrace.h
index aa4fd7f..a5ac71a 100644
--- a/include/asm-xtensa/ptrace.h
+++ b/include/asm-xtensa/ptrace.h
@@ -113,8 +113,8 @@ struct pt_regs {
};

#ifdef __KERNEL__
-# define xtensa_pt_regs(tsk) ((struct pt_regs*) \
- (((long)(tsk)->thread_info + KERNEL_STACK_SIZE - (XCHAL_NUM_AREGS-16)*4)) - 1)
+# define task_pt_regs(tsk) ((struct pt_regs*) \
+ (task_stack_page(tsk) + KERNEL_STACK_SIZE - (XCHAL_NUM_AREGS-16)*4) - 1)
# define user_mode(regs) (((regs)->ps & 0x00000020)!=0)
# define instruction_pointer(regs) ((regs)->pc)
extern void show_regs(struct pt_regs *);
--
0.99.9.GIT

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/