Deal with the user VM space expanding. 32 bit applications do not like

having their stack at the 512GB mark.  Give 4GB of user VM space for 32
bit apps.  Note that this is significantly more than on i386 which gives
only about 2.9GB of user VM to a process (1GB for kernel, plus page
table pages which eat user VM space).

Approved by: re (blanket)
This commit is contained in:
Peter Wemm 2003-05-23 05:07:33 +00:00
parent 3c9a3c9ca3
commit 9f0c4ab393
6 changed files with 14 additions and 14 deletions

View File

@ -263,7 +263,7 @@ freebsd4_ia32_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code)
}
regs->tf_rsp = (uintptr_t)sfp;
regs->tf_rip = PS_STRINGS - sz_freebsd4_ia32_sigcode;
regs->tf_rip = IA32_PS_STRINGS - sz_freebsd4_ia32_sigcode;
regs->tf_rflags &= ~PSL_T;
regs->tf_cs = _ucode32sel;
regs->tf_ss = _udatasel;
@ -362,7 +362,7 @@ ia32_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code)
} else {
/* Old FreeBSD-style arguments. */
sf.sf_siginfo = code;
sf.sf_addr = regs->tf_err;
sf.sf_addr = regs->tf_addr;
sf.sf_ah = (u_int32_t)(uintptr_t)catcher;
}
PROC_UNLOCK(p);
@ -379,7 +379,7 @@ ia32_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code)
}
regs->tf_rsp = (uintptr_t)sfp;
regs->tf_rip = PS_STRINGS - *(p->p_sysent->sv_szsigcode);
regs->tf_rip = IA32_PS_STRINGS - *(p->p_sysent->sv_szsigcode);
regs->tf_rflags &= ~PSL_T;
regs->tf_cs = _ucode32sel;
regs->tf_ss = _udatasel;

View File

@ -100,9 +100,9 @@ struct sysentvec ia32_freebsd_sysvec = {
MINSIGSTKSZ,
PAGE_SIZE,
0,
USRSTACK,
USRSTACK,
PS_STRINGS,
IA32_USRSTACK,
IA32_USRSTACK,
IA32_PS_STRINGS,
VM_PROT_ALL,
ia32_copyout_strings,
ia32_setregs
@ -139,7 +139,7 @@ ia32_copyout_strings(struct image_params *imgp)
* Calculate string base and vector table pointers.
* Also deal with signal trampoline code for this exec type.
*/
arginfo = (struct ia32_ps_strings *)PS_STRINGS;
arginfo = (struct ia32_ps_strings *)IA32_PS_STRINGS;
szsigcode = *(imgp->proc->p_sysent->sv_szsigcode);
destp = (caddr_t)arginfo - szsigcode - SPARE_USRSPACE -
roundup((ARG_MAX - imgp->stringspace), sizeof(char *));

View File

@ -44,7 +44,7 @@ struct ia32_ps_strings {
int ps_nenvstr; /* the number of environment strings */
};
#define IA32_USRSTACK USRSTACK
#define IA32_USRSTACK ((1ul << 32) - PAGE_SIZE)
#define IA32_PS_STRINGS (IA32_USRSTACK - sizeof(struct ia32_ps_strings))
static __inline caddr_t stackgap_init(void);

View File

@ -44,7 +44,7 @@ struct ia32_ps_strings {
int ps_nenvstr; /* the number of environment strings */
};
#define IA32_USRSTACK USRSTACK
#define IA32_USRSTACK ((1ul << 32) - PAGE_SIZE)
#define IA32_PS_STRINGS (IA32_USRSTACK - sizeof(struct ia32_ps_strings))
static __inline caddr_t stackgap_init(void);

View File

@ -100,9 +100,9 @@ struct sysentvec ia32_freebsd_sysvec = {
MINSIGSTKSZ,
PAGE_SIZE,
0,
USRSTACK,
USRSTACK,
PS_STRINGS,
IA32_USRSTACK,
IA32_USRSTACK,
IA32_PS_STRINGS,
VM_PROT_ALL,
ia32_copyout_strings,
ia32_setregs
@ -139,7 +139,7 @@ ia32_copyout_strings(struct image_params *imgp)
* Calculate string base and vector table pointers.
* Also deal with signal trampoline code for this exec type.
*/
arginfo = (struct ia32_ps_strings *)PS_STRINGS;
arginfo = (struct ia32_ps_strings *)IA32_PS_STRINGS;
szsigcode = *(imgp->proc->p_sysent->sv_szsigcode);
destp = (caddr_t)arginfo - szsigcode - SPARE_USRSPACE -
roundup((ARG_MAX - imgp->stringspace), sizeof(char *));

View File

@ -44,7 +44,7 @@ struct ia32_ps_strings {
int ps_nenvstr; /* the number of environment strings */
};
#define IA32_USRSTACK USRSTACK
#define IA32_USRSTACK ((1ul << 32) - PAGE_SIZE)
#define IA32_PS_STRINGS (IA32_USRSTACK - sizeof(struct ia32_ps_strings))
static __inline caddr_t stackgap_init(void);