diff options
author | peter <peter@FreeBSD.org> | 2002-04-05 01:57:45 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 2002-04-05 01:57:45 +0000 |
commit | 293815b90a63bfb4b51aa0aaa0d1d8fc6967f574 (patch) | |
tree | 83854483aaaba7cf34c995d96d9fb1123b4fc7fa /sys/kern/kern_exec.c | |
parent | 9e2934e66aa0d2777132c11f67c358f69550f30e (diff) | |
download | FreeBSD-src-293815b90a63bfb4b51aa0aaa0d1d8fc6967f574.zip FreeBSD-src-293815b90a63bfb4b51aa0aaa0d1d8fc6967f574.tar.gz |
Increase the size of the register stack storage on ia64 from 32K to 2MB so
that we can compile gcc. This is a hack because it adds a fixed 2MB to
each process's VSIZE regardless of how much is really being used since
there is no grow-up stack support. At least it isn't physical memory.
Sigh.
Add a sysctl to enable tweaking it for new processes.
Diffstat (limited to 'sys/kern/kern_exec.c')
-rw-r--r-- | sys/kern/kern_exec.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index 36003c6..1b32699 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -95,6 +95,12 @@ SYSCTL_ULONG(_kern, OID_AUTO, ps_arg_cache_limit, CTLFLAG_RW, int ps_argsopen = 1; SYSCTL_INT(_kern, OID_AUTO, ps_argsopen, CTLFLAG_RW, &ps_argsopen, 0, ""); +#ifdef __ia64__ +/* XXX HACK */ +static int regstkpages = 256; +SYSCTL_INT(_machdep, OID_AUTO, regstkpages, CTLFLAG_RW, ®stkpages, 0, ""); +#endif + /* * Each of the items is a pointer to a `const struct execsw', hence the * double pointer here. @@ -622,7 +628,7 @@ exec_new_vmspace(imgp) vm_offset_t bsaddr; bsaddr = USRSTACK - 2*maxssiz; error = vm_map_find(&vmspace->vm_map, 0, 0, &bsaddr, - 4*PAGE_SIZE, 0, + regstkpages * PAGE_SIZE, 0, VM_PROT_ALL, VM_PROT_ALL, 0); FIRST_THREAD_IN_PROC(p)->td_md.md_bspstore = bsaddr; } |