From: David Howells The attached patch fixes the usage of setup_arg_pages() in the IA64, MIPS, S390 and Sparc64 arches. This function now takes an extra parameter: the initial top of stack. This is useful in uClinux when there's no fixed location to which the stack pointer can be initialised. Signed-Off-By: David Howells Signed-off-by: Andrew Morton --- 25-akpm/arch/ia64/ia32/binfmt_elf32.c | 2 +- 25-akpm/arch/mips/kernel/irixelf.c | 2 +- 25-akpm/arch/s390/kernel/binfmt_elf32.c | 2 +- 25-akpm/arch/sparc64/kernel/binfmt_aout32.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff -puN arch/ia64/ia32/binfmt_elf32.c~frv-change-setup_arg_pages-to-take-stack-pointer-fixes arch/ia64/ia32/binfmt_elf32.c --- 25/arch/ia64/ia32/binfmt_elf32.c~frv-change-setup_arg_pages-to-take-stack-pointer-fixes 2004-11-15 20:01:21.148461904 -0800 +++ 25-akpm/arch/ia64/ia32/binfmt_elf32.c 2004-11-15 20:01:21.156460688 -0800 @@ -35,7 +35,7 @@ extern void ia64_elf32_init (struct pt_r static void elf32_set_personality (void); -#define setup_arg_pages(bprm,exec) ia32_setup_arg_pages(bprm,exec) +#define setup_arg_pages(bprm,tos,exec) ia32_setup_arg_pages(bprm,exec) #define elf_map elf32_map #undef SET_PERSONALITY diff -puN arch/mips/kernel/irixelf.c~frv-change-setup_arg_pages-to-take-stack-pointer-fixes arch/mips/kernel/irixelf.c --- 25/arch/mips/kernel/irixelf.c~frv-change-setup_arg_pages-to-take-stack-pointer-fixes 2004-11-15 20:01:21.149461752 -0800 +++ 25-akpm/arch/mips/kernel/irixelf.c 2004-11-15 20:01:21.157460536 -0800 @@ -687,7 +687,7 @@ static int load_irix_binary(struct linux * change some of these later. */ current->mm->rss = 0; - setup_arg_pages(bprm, EXSTACK_DEFAULT); + setup_arg_pages(bprm, STACK_TOP, EXSTACK_DEFAULT); current->mm->start_stack = bprm->p; /* At this point, we assume that the image should be loaded at diff -puN arch/s390/kernel/binfmt_elf32.c~frv-change-setup_arg_pages-to-take-stack-pointer-fixes arch/s390/kernel/binfmt_elf32.c --- 25/arch/s390/kernel/binfmt_elf32.c~frv-change-setup_arg_pages-to-take-stack-pointer-fixes 2004-11-15 20:01:21.151461448 -0800 +++ 25-akpm/arch/s390/kernel/binfmt_elf32.c 2004-11-15 20:01:21.158460384 -0800 @@ -191,7 +191,7 @@ struct elf_prpsinfo32 #undef start_thread #define start_thread start_thread31 -#define setup_arg_pages(bprm, exec) setup_arg_pages32(bprm, exec) +#define setup_arg_pages(bprm, tos, exec) setup_arg_pages32(bprm, exec) MODULE_DESCRIPTION("Binary format loader for compatibility with 32bit Linux for S390 binaries," " Copyright 2000 IBM Corporation"); diff -puN arch/sparc64/kernel/binfmt_aout32.c~frv-change-setup_arg_pages-to-take-stack-pointer-fixes arch/sparc64/kernel/binfmt_aout32.c --- 25/arch/sparc64/kernel/binfmt_aout32.c~frv-change-setup_arg_pages-to-take-stack-pointer-fixes 2004-11-15 20:01:21.152461296 -0800 +++ 25-akpm/arch/sparc64/kernel/binfmt_aout32.c 2004-11-15 20:01:21.158460384 -0800 @@ -311,7 +311,7 @@ beyond_if: orig_thr_flags = current_thread_info()->flags; current_thread_info()->flags |= _TIF_32BIT; - retval = setup_arg_pages(bprm, EXSTACK_DEFAULT); + retval = setup_arg_pages(bprm, STACK_TOP, EXSTACK_DEFAULT); if (retval < 0) { current_thread_info()->flags = orig_thr_flags; _