#
30bc335a |
| 22-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: regen
|
#
6b7c23a0 |
| 22-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
syscalls: regen
|
#
8460d3e9 |
| 22-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: regen
|
#
06759303 |
| 22-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: aio_cancel takes a struct aiocb32
Strictly speaking, it takes a virtual address and doesn't touch the object directly, but this is consistant with other aio_*() syscalls.
Reviewed by: kib
|
#
fea4a9af |
| 18-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
fspacectl: remove unneeded freebsd32 wrapper
fspacectl(2) does not require special handling on freebsd32. The presence of off_t in a struct does not cause it's size to change between the native ABI
fspacectl: remove unneeded freebsd32 wrapper
fspacectl(2) does not require special handling on freebsd32. The presence of off_t in a struct does not cause it's size to change between the native ABI and the 32-bit ABI supported by freebsd32 because off_t is always int64_t on BSD systems. Further, byte order only requires handling for paired argument or return registers.
(32-byte alignment of 64-bit objects on i386 can require special handling, but that situtation does not apply here.)
Reviewed by: kib, khng, emaste, delphij Differential Revision: https://reviews.freebsd.org/D32994
show more ...
|
#
67fb0300 |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: sync return types with default ABI
This consists of int -> ssize_t where required and one int -> mode_t. As a rule, return types are informative rather than functional as the actual retur
freebsd32: sync return types with default ABI
This consists of int -> ssize_t where required and one int -> mode_t. As a rule, return types are informative rather than functional as the actual return is in a register.
Reviewed by: kevans
show more ...
|
#
265a4b83 |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: semid_t -> int32_t
semid_t is historically an intptr_t so it should be an int32_t.
Reviewed by: kevans
|
#
aef154d3 |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: use __socklen_t consistently
Reviewed by: kevans
|
#
a016320d |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: rename 32-bit compat pads to _pad
Some 32-bit architectures pass 64-bit values in aligned register pairs (a0,a1), (a2,a3) etc. In freebsd32 we add these pads explicitly from compat code.
freebsd32: rename 32-bit compat pads to _pad
Some 32-bit architectures pass 64-bit values in aligned register pairs (a0,a1), (a2,a3) etc. In freebsd32 we add these pads explicitly from compat code. We also sometimes add pads in the default ABI. Differentiate the two by making the freebsd32 ones int _pad. In a future commit the 32-bit ones will be automatically generated.
Reviewed by: kevans
show more ...
|
#
158dcd73 |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: have sigqueue take a void *
This matches the default ABI and we work around issues with union sigval by extracting the bottom 32-bits in a manual handler.
Reviewed by: kevans
|
#
2b9d052d |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: fix getfsstat sign extension bugs
Add freebsd32 versions of getfsstat and freebsd11_getfsstat so that bufsize is properly sign-extended if a negative value is passed. Reject negative valu
freebsd32: fix getfsstat sign extension bugs
Add freebsd32 versions of getfsstat and freebsd11_getfsstat so that bufsize is properly sign-extended if a negative value is passed. Reject negative values before passing to kern_getfsstat as a size_t.
Reviewed by: kevans
show more ...
|
#
f19e3fd2 |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: signed long corrections
Syscalls that take signed longs need to treat the 32-bit versions as signed int so that sign extension happens correctly. Improve decleration quality and add a fe
freebsd32: signed long corrections
Syscalls that take signed longs need to treat the 32-bit versions as signed int so that sign extension happens correctly. Improve decleration quality and add a few minimal syscall implementations.
Reviewed by: kevans
show more ...
|
#
d257e57d |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: add missing pads to preadv and pwritev
Reviewed by: kevans
|
#
e02f64d9 |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: add real abort2
Previously, the code would copy twice as many pointers as specified and print pairs of them a single 64-bit pointer.
abort2 doesn't return so make the return type void
f
freebsd32: add real abort2
Previously, the code would copy twice as many pointers as specified and print pairs of them a single 64-bit pointer.
abort2 doesn't return so make the return type void
freebsd32_abort2 is in it's own file with a 2-clause BSD license based on a discussion with Wojciech many years ago.
Reviewed by: kevans
show more ...
|
#
e3e811a3 |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: add feed foward clock syscalls
These are required when supporting i386 because time_t is 32-bit which reduces struct bintime to 12-bytes when combined with the fact that 64-bit integers o
freebsd32: add feed foward clock syscalls
These are required when supporting i386 because time_t is 32-bit which reduces struct bintime to 12-bytes when combined with the fact that 64-bit integers only requiring 32-bit alignment on i386. Reusing the default ABI version resulted in 4-byte overreads or overwrites to userspace.
Reviewed by: kevans
show more ...
|
#
7bd79565 |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: enable trivial syscalls
These syscalls require no translation. They were simply missing from compat/freebsd32/syscalls.master.
Reviewed by: kevans
|
#
91301e6e |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: don't implement kldsym
Previously we fell back to sys_kldsym, but because we'd always mismatch on the version field we'd return EINVAL. A freebsd32 implementation is impossible with the
freebsd32: don't implement kldsym
Previously we fell back to sys_kldsym, but because we'd always mismatch on the version field we'd return EINVAL. A freebsd32 implementation is impossible with the current ABI as there simply isn't space to store a kernel virtual address in a uint32_t.
Reviewed by: kevans
show more ...
|
#
dbb47e92 |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: remove freebsd32_recvfrom
The freebsd32_recvfrom() serves no purpose as no arguments require translation. The prototype was mis-declared and the implementation contained (relatively harm
freebsd32: remove freebsd32_recvfrom
The freebsd32_recvfrom() serves no purpose as no arguments require translation. The prototype was mis-declared and the implementation contained (relatively harmless) errors.
Reviewed by: kevans
show more ...
|
#
b35c2bca |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: rename struct wrusage32 to struct __wrusage32
This matches struct __wrusage
Reviewed by: kevans
|
#
0ebea139 |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: include `__` in semctl names
This mirrors sys/kern/syscall.master and will simplify generation of freebsd32 files.
Reviewed by: kevans
|
#
d35a7716 |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: sync _umtx_op args with default ABI
Reviewed by: kevans
|
#
f1a14110 |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: rename fstat argument to match default abi
Reviewed by: kevans
|
#
5d0d6869 |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: struct kld32_file_stat -> struct kld_file_stat32
Follow common convention and put the `32` on the end of the struct name. This is a step toward generating freebsd32 syscall files from sy
freebsd32: struct kld32_file_stat -> struct kld_file_stat32
Follow common convention and put the `32` on the end of the struct name. This is a step toward generating freebsd32 syscall files from sys/kern/syscalls.master.
Reviewed by: kevans
show more ...
|
#
6dcd7db1 |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: fix type size of pointer array args
Make pointers to arrays of pointers `uint32_t *` so the sizes of the array elements are correct. In an ideal world we'd use something like __ptr32 ann
freebsd32: fix type size of pointer array args
Make pointers to arrays of pointers `uint32_t *` so the sizes of the array elements are correct. In an ideal world we'd use something like __ptr32 annotations instead.
Reviewed by: kevans
show more ...
|
#
465b80c0 |
| 17-Nov-2021 |
Brooks Davis <brooks@FreeBSD.org> |
freebsd32: thread IDs are int32_t
Thread IDs are of type long which means int32_t on 32-bit systems. While this detail is handled without compat functions, expose it here as code to generate prototy
freebsd32: thread IDs are int32_t
Thread IDs are of type long which means int32_t on 32-bit systems. While this detail is handled without compat functions, expose it here as code to generate prototypes from the default syscalls.master will do so.
Reviewed by: kevans
show more ...
|