This avoids the need to keep a freebsd32-specific syscalls.master in sync with the default ABI. As evidenced by the number of commits required to sync the two, it is extremely easy for them to get out of sync due to misunderstandings and user errors. Reviewed by: kevans, kib
60 lines
2.7 KiB
Plaintext
60 lines
2.7 KiB
Plaintext
# $FreeBSD$
|
|
sysnames="freebsd32_syscalls.c"
|
|
sysproto="freebsd32_proto.h"
|
|
sysproto_h=_FREEBSD32_SYSPROTO_H_
|
|
syshdr="freebsd32_syscall.h"
|
|
syssw="freebsd32_sysent.c"
|
|
sysmk="/dev/null"
|
|
syscallprefix="FREEBSD32_SYS_"
|
|
switchname="freebsd32_sysent"
|
|
namesname="freebsd32_syscallnames"
|
|
systrace="freebsd32_systrace_args.c"
|
|
abi_flags="long_size|pointer_size|time_t_size|pair_64bit"
|
|
abi_func_prefix="freebsd32_"
|
|
abi_type_suffix="32"
|
|
abi_long="int32_t"
|
|
abi_u_long="uint32_t"
|
|
abi_semid_t="int32_t"
|
|
abi_size_t="uint32_t"
|
|
abi_ptr_array_t="uint32_t"
|
|
abi_headers="#include <compat/freebsd32/freebsd32_proto.h>"
|
|
|
|
#
|
|
# Variables below this line are exceptions to the ABI changes programatically
|
|
# detected by makesyscalls.lua. New system calls should not require an entry
|
|
# here in nearly virtually all cases. New entries are almost certainly
|
|
# representative of badly designed interfaces.
|
|
#
|
|
|
|
# System calls that require freebsd32-specific handling:
|
|
# fcntl - need to sign extend arg unless it's a pointer
|
|
# ksem_init, ksem_open - XXX not required
|
|
# mprotect - i386 read-implies-exec
|
|
# msgsys, semsys, shmsys - some sub-syscalls require compat
|
|
# sigqueue - union sival requires special handing on big-endian
|
|
# sigreturn - struct osigcontext
|
|
# sysarch - always MD
|
|
# _umtx_lock _umtx_unlock _umtx_op - arguments require special handling
|
|
syscall_abi_change="fcntl ksem_init ksem_open mprotect msgsys semsys shmsys sigqueue sigreturn sysarch _umtx_lock _umtx_unlock _umtx_op"
|
|
|
|
# System calls that appear to require handling, but don't:
|
|
# aio_cancel - the aiocb pointer is just a virtual address
|
|
# thr_* - the lack of sign extension of long args is OK
|
|
# sctp_generic_* - iovec differences handled internally
|
|
syscall_no_abi_change="aio_cancel thr_exit thr_kill thr_kill2 thr_self thr_set_name thr_wake sctp_generic_sendmsg_iov sctp_generic_recvmsg"
|
|
|
|
# OBSOL syscalls
|
|
# getkerninfo - obsolete and can't be implemented (kernel virtual addresses can't fit in 32-bits)
|
|
obsol="getkerninfo"
|
|
|
|
# Syscalls without implementations:
|
|
# *mac_* - should be implemented
|
|
# afs3_syscall - requires significant porting, probably doesn't make sense
|
|
# kldsym - can't be implemented (kernel virtual addresses can't fit in 32-bits)
|
|
# lgetfh - should be implemented
|
|
# nlm_syscall - requires significant porting, probably doesn't make sense
|
|
# nnpfs_syscall - requires significant porting, probably doesn't make sense
|
|
# ntp_gettime - should be implemented
|
|
# thr_create - was unimplemented and appears to be unnecessicary
|
|
unimpl="afs3_syscall kldsym __mac_get_proc __mac_set_proc __mac_get_fd __mac_get_file __mac_set_fd __mac_set_file __mac_get_pid __mac_get_link __mac_set_link __mac_execve mac_syscall nfssvc nlm_syscall ntp_gettime lgetfh nnpfs_syscall thr_create"
|