From de8374df28cc23ce0d893fd96d1ad0a861414154 Mon Sep 17 00:00:00 2001 From: Dmitry Chagin Date: Thu, 12 Aug 2021 11:45:25 +0300 Subject: 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 --- sys/kern/imgact_aout.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'sys/kern/imgact_aout.c') 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" -- cgit v1.2.3