Skip to contentSkip to conversation

Fix usage of setup_arg_pages() in IA64, MIPS, S390 and Sparc64

PATCH In review David Howells 3 participants 3 messages Nov 10, 2004 – Nov 12, 2004

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fix usage of setup_arg_pages() in IA64, MIPS, S390 and Sparc64

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.

---

warthog>diffstat ../setup_arg_pages-2610rc1mm4.diff

 ia64/ia32/binfmt_elf32.c       |    2 +-
 mips/kernel/irixelf.c          |    2 +-
 s390/kernel/binfmt_elf32.c     |    2 +-
 sparc64/kernel/binfmt_aout32.c |    2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)
arch/ia64/ia32/binfmt_elf32.c renamed from warthog/kernels/linux-2.6.10-rc1-mm4/arch/ia64/ia32/binfmt_elf32.c +1 -1
diff -uNrp /warthog/kernels/linux-2.6.10-rc1-mm4/arch/ia64/ia32/binfmt_elf32.c linux-2.6.10-rc1-mm4-frv/arch/ia64/ia32/binfmt_elf32.c
@@ -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
arch/mips/kernel/irixelf.c renamed from warthog/kernels/linux-2.6.10-rc1-mm4/arch/mips/kernel/irixelf.c +1 -1
diff -uNrp /warthog/kernels/linux-2.6.10-rc1-mm4/arch/mips/kernel/irixelf.c linux-2.6.10-rc1-mm4-frv/arch/mips/kernel/irixelf.c
@@ -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
arch/s390/kernel/binfmt_elf32.c renamed from warthog/kernels/linux-2.6.10-rc1-mm4/arch/s390/kernel/binfmt_elf32.c +1 -1
diff -uNrp /warthog/kernels/linux-2.6.10-rc1-mm4/arch/s390/kernel/binfmt_elf32.c linux-2.6.10-rc1-mm4-frv/arch/s390/kernel/binfmt_elf32.c
@@ -164,7 +164,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"); 
arch/sparc64/kernel/binfmt_aout32.c renamed from warthog/kernels/linux-2.6.10-rc1-mm4/arch/sparc64/kernel/binfmt_aout32.c +1 -1
diff -uNrp /warthog/kernels/linux-2.6.10-rc1-mm4/arch/sparc64/kernel/binfmt_aout32.c linux-2.6.10-rc1-mm4-frv/arch/sparc64/kernel/binfmt_aout32.c
@@ -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;
 
#1 lore raw
Quoted 4 lines · On Wed, 10 Nov 2004 11:24:19 +0000 David Howells <[email protected]> wrote:

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.

The sparc64 part looks perfectly fine to me.

#2 lore raw
Quoted 9 lines · David S. Miller

On Wed, 10 Nov 2004 11:24:19 +0000

Quoted 4 lines · 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.

The sparc64 part looks perfectly fine to me.

And ia64 builds and boots with the change.

Jesse