aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/imgact_aout.c
diff options
context:
space:
mode:
authorDmitry Chagin <dchagin@FreeBSD.org>2021-08-12 08:45:25 +0000
committerDmitry Chagin <dchagin@FreeBSD.org>2021-08-12 08:45:25 +0000
commitde8374df28cc23ce0d893fd96d1ad0a861414154 (patch)
tree55b80d76c65061e6746ca6f7635b201829229d5c /sys/kern/imgact_aout.c
parentfc37be246021ee9b7110c9f506141c2bf0bc9fb0 (diff)
downloadsrc-de8374df28cc23ce0d893fd96d1ad0a861414154.tar.gz
src-de8374df28cc23ce0d893fd96d1ad0a861414154.zip
fork: Allow ABI to specify fork return values for child.
At least Linux x86 ABI's does not use carry bit and expects that the dx register is preserved. For this add a new sv_set_fork_retval hook and call it from cpu_fork(). Add a short comment about touching dx in x86_set_fork_retval(), for more details see phab comments from kib@ and imp@. Reviewed by: kib Differential revision: https://reviews.freebsd.org/D31472 MFC after: 2 weeks
Diffstat (limited to 'sys/kern/imgact_aout.c')
-rw-r--r--sys/kern/imgact_aout.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/kern/imgact_aout.c b/sys/kern/imgact_aout.c
index 9e7455e14e1d..7d7ba51efd84 100644
--- a/sys/kern/imgact_aout.c
+++ b/sys/kern/imgact_aout.c
@@ -103,6 +103,7 @@ struct sysentvec aout_sysvec = {
.sv_trap = NULL,
.sv_onexec_old = exec_onexec_old,
.sv_onexit = exit_onexit,
+ .sv_set_fork_retval = x86_set_fork_retval,
};
#elif defined(__amd64__)
@@ -141,6 +142,7 @@ struct sysentvec aout_sysvec = {
.sv_syscallnames = freebsd32_syscallnames,
.sv_onexec_old = exec_onexec_old,
.sv_onexit = exit_onexit,
+ .sv_set_fork_retval = x86_set_fork_retval,
};
#else
#error "Port me"