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

From: David Howells
Date: Wed Nov 10 2004 - 06:27:39 EST



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 <dhowells@xxxxxxxxxx>
---

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(-)

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
--- /warthog/kernels/linux-2.6.10-rc1-mm4/arch/ia64/ia32/binfmt_elf32.c 2004-10-19 10:41:43.000000000 +0100
+++ linux-2.6.10-rc1-mm4-frv/arch/ia64/ia32/binfmt_elf32.c 2004-11-10 11:08:39.005018449 +0000
@@ -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 -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
--- /warthog/kernels/linux-2.6.10-rc1-mm4/arch/mips/kernel/irixelf.c 2004-10-27 17:32:08.000000000 +0100
+++ linux-2.6.10-rc1-mm4-frv/arch/mips/kernel/irixelf.c 2004-11-10 11:05:21.719356169 +0000
@@ -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 -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
--- /warthog/kernels/linux-2.6.10-rc1-mm4/arch/s390/kernel/binfmt_elf32.c 2004-11-09 18:15:25.000000000 +0000
+++ linux-2.6.10-rc1-mm4-frv/arch/s390/kernel/binfmt_elf32.c 2004-11-10 11:10:13.682167102 +0000
@@ -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");
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
--- /warthog/kernels/linux-2.6.10-rc1-mm4/arch/sparc64/kernel/binfmt_aout32.c 2004-10-27 17:32:14.000000000 +0100
+++ linux-2.6.10-rc1-mm4-frv/arch/sparc64/kernel/binfmt_aout32.c 2004-11-10 11:07:27.590940142 +0000
@@ -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;

-
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/