diff --git a/arch/arc/include/asm/entry.h b/arch/arc/include/asm/entry.h index 5bbec8ad8123..2b274fa9c5a7 100644 --- a/arch/arc/include/asm/entry.h +++ b/arch/arc/include/asm/entry.h @@ -252,7 +252,7 @@ ld \out, [\tsk, TASK_THREAD_INFO] /* Go to end of page where stack begins (grows upwards) */ - add2 \out, \out, (THREAD_SIZE - 4)/4 /* one word GUTTER */ + add2 \out, \out, (THREAD_SIZE)/4 .endm diff --git a/arch/arc/include/asm/processor.h b/arch/arc/include/asm/processor.h index 5f26b2c1cba0..81efbcae3839 100644 --- a/arch/arc/include/asm/processor.h +++ b/arch/arc/include/asm/processor.h @@ -50,7 +50,7 @@ struct task_struct; unsigned long thread_saved_pc(struct task_struct *t); #define task_pt_regs(p) \ - ((struct pt_regs *)(THREAD_SIZE - 4 + (void *)task_stack_page(p)) - 1) + ((struct pt_regs *)(THREAD_SIZE + (void *)task_stack_page(p)) - 1) /* Free all resources held by a thread. */ #define release_thread(thread) do { } while (0) diff --git a/arch/arc/include/asm/ptrace.h b/arch/arc/include/asm/ptrace.h index 6179de7e07c2..f82a3a2201b5 100644 --- a/arch/arc/include/asm/ptrace.h +++ b/arch/arc/include/asm/ptrace.h @@ -110,7 +110,7 @@ struct callee_regs { /* open-coded current_thread_info() */ \ register unsigned long sp asm ("sp"); \ unsigned long pg_start = (sp & ~(THREAD_SIZE - 1)); \ - (struct pt_regs *)(pg_start + THREAD_SIZE - 4) - 1; \ + (struct pt_regs *)(pg_start + THREAD_SIZE) - 1; \ }) static inline long regs_return_value(struct pt_regs *regs) diff --git a/arch/arc/kernel/process.c b/arch/arc/kernel/process.c index cad66851e0c4..949bfd5d62a0 100644 --- a/arch/arc/kernel/process.c +++ b/arch/arc/kernel/process.c @@ -75,8 +75,6 @@ asmlinkage void ret_from_fork(void); * ~ ~ * | --to-- | (scratch Regs of user mode) * | r0 | - * ------------------ - * | UNUSED 1 word| * ------------------ <===== END of PAGE */ int copy_thread(unsigned long clone_flags,