summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/amd64/ia32/ia32_signal.c6
-rw-r--r--sys/amd64/ia32/ia32_sysvec.c8
-rw-r--r--sys/amd64/ia32/ia32_util.h2
-rw-r--r--sys/compat/freebsd32/freebsd32_util.h2
-rw-r--r--sys/compat/ia32/ia32_sysvec.c8
-rw-r--r--sys/compat/ia32/ia32_util.h2
6 files changed, 14 insertions, 14 deletions
diff --git a/sys/amd64/ia32/ia32_signal.c b/sys/amd64/ia32/ia32_signal.c
index ae966a5..6cda1fd 100644
--- a/sys/amd64/ia32/ia32_signal.c
+++ b/sys/amd64/ia32/ia32_signal.c
@@ -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;
diff --git a/sys/amd64/ia32/ia32_sysvec.c b/sys/amd64/ia32/ia32_sysvec.c
index 5ced18c..f921ff1 100644
--- a/sys/amd64/ia32/ia32_sysvec.c
+++ b/sys/amd64/ia32/ia32_sysvec.c
@@ -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 *));
diff --git a/sys/amd64/ia32/ia32_util.h b/sys/amd64/ia32/ia32_util.h
index 20a5b1e..64fa293 100644
--- a/sys/amd64/ia32/ia32_util.h
+++ b/sys/amd64/ia32/ia32_util.h
@@ -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);
diff --git a/sys/compat/freebsd32/freebsd32_util.h b/sys/compat/freebsd32/freebsd32_util.h
index 20a5b1e..64fa293 100644
--- a/sys/compat/freebsd32/freebsd32_util.h
+++ b/sys/compat/freebsd32/freebsd32_util.h
@@ -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);
diff --git a/sys/compat/ia32/ia32_sysvec.c b/sys/compat/ia32/ia32_sysvec.c
index 5ced18c..f921ff1 100644
--- a/sys/compat/ia32/ia32_sysvec.c
+++ b/sys/compat/ia32/ia32_sysvec.c
@@ -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 *));
diff --git a/sys/compat/ia32/ia32_util.h b/sys/compat/ia32/ia32_util.h
index 20a5b1e..64fa293 100644
--- a/sys/compat/ia32/ia32_util.h
+++ b/sys/compat/ia32/ia32_util.h
@@ -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);
OpenPOWER on IntegriCloud