diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2006-03-17 20:33:56 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-03-20 04:16:36 -0500 |
commit | d61e16df940e02e25679bdc1aee8c25786f6de90 (patch) | |
tree | de76f4007d526835b8564203341ebf66ca29b12d /arch/sparc64/kernel/sys_sparc32.c | |
parent | a91690ddd05ab0b7fbdd37733875525ac75c20f2 (diff) |
[SPARC64]: Increase top of 32-bit process stack.
Put it one page below the top of the 32-bit address space.
This gives us ~16MB more address space to work with.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/sys_sparc32.c')
-rw-r--r-- | arch/sparc64/kernel/sys_sparc32.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/sparc64/kernel/sys_sparc32.c b/arch/sparc64/kernel/sys_sparc32.c index 417727bd87ba..0e41df024489 100644 --- a/arch/sparc64/kernel/sys_sparc32.c +++ b/arch/sparc64/kernel/sys_sparc32.c | |||
@@ -62,6 +62,7 @@ | |||
62 | #include <asm/fpumacro.h> | 62 | #include <asm/fpumacro.h> |
63 | #include <asm/semaphore.h> | 63 | #include <asm/semaphore.h> |
64 | #include <asm/mmu_context.h> | 64 | #include <asm/mmu_context.h> |
65 | #include <asm/a.out.h> | ||
65 | 66 | ||
66 | asmlinkage long sys32_chown16(const char __user * filename, u16 user, u16 group) | 67 | asmlinkage long sys32_chown16(const char __user * filename, u16 user, u16 group) |
67 | { | 68 | { |
@@ -1039,15 +1040,15 @@ asmlinkage unsigned long sys32_mremap(unsigned long addr, | |||
1039 | unsigned long ret = -EINVAL; | 1040 | unsigned long ret = -EINVAL; |
1040 | unsigned long new_addr = __new_addr; | 1041 | unsigned long new_addr = __new_addr; |
1041 | 1042 | ||
1042 | if (old_len > 0xf0000000UL || new_len > 0xf0000000UL) | 1043 | if (old_len > STACK_TOP32 || new_len > STACK_TOP32) |
1043 | goto out; | 1044 | goto out; |
1044 | if (addr > 0xf0000000UL - old_len) | 1045 | if (addr > STACK_TOP32 - old_len) |
1045 | goto out; | 1046 | goto out; |
1046 | down_write(¤t->mm->mmap_sem); | 1047 | down_write(¤t->mm->mmap_sem); |
1047 | if (flags & MREMAP_FIXED) { | 1048 | if (flags & MREMAP_FIXED) { |
1048 | if (new_addr > 0xf0000000UL - new_len) | 1049 | if (new_addr > STACK_TOP32 - new_len) |
1049 | goto out_sem; | 1050 | goto out_sem; |
1050 | } else if (addr > 0xf0000000UL - new_len) { | 1051 | } else if (addr > STACK_TOP32 - new_len) { |
1051 | unsigned long map_flags = 0; | 1052 | unsigned long map_flags = 0; |
1052 | struct file *file = NULL; | 1053 | struct file *file = NULL; |
1053 | 1054 | ||