#
fc31befa |
| 27-Mar-2024 |
miod <miod@openbsd.org> |
When the syscall number has to be loaded from a pc-relative location, abuse END macros to place the number at the end of the syscall wrapper rather than in the middle of it, so that there is no need
When the syscall number has to be loaded from a pc-relative location, abuse END macros to place the number at the end of the syscall wrapper rather than in the middle of it, so that there is no need to branch around it; this saves two instructions per syscall number >= 128.
While there, also tweak the error return (SET_ERRNO_AND_RETURN) to only return a 64-bit value for lseek; this saves another instruction for all other syscalls.
With input from guenther@; "Anything that makes the machine faster" deraadt@
show more ...
|
#
83762a71 |
| 10-Dec-2023 |
deraadt <deraadt@openbsd.org> |
Populate the non-LOAD openbsd.syscalls section (and PT_OPENBSD_SYSCALL) with {uint offset, uint syscall#} entries in libc & ld.so. In libc a few syscall# entries (break, sigprocmask, _tfork, _threxit
Populate the non-LOAD openbsd.syscalls section (and PT_OPENBSD_SYSCALL) with {uint offset, uint syscall#} entries in libc & ld.so. In libc a few syscall# entries (break, sigprocmask, _tfork, _threxit) are duplicated because additional or inline uses occur (that situation is handled elsewhere) ok kettenis
show more ...
|
#
3e492f6e |
| 02-Sep-2022 |
miod <miod@openbsd.org> |
Use a shorter system call invocation template for system calls in the range 0-127, where immediate addressing can be used to load the system call number in r0, rather than performing a memory load us
Use a shorter system call invocation template for system calls in the range 0-127, where immediate addressing can be used to load the system call number in r0, rather than performing a memory load using pc-relative addressing.
No functional change, but rm(1) runs a couple cycles faster per file now.
show more ...
|
#
8908800c |
| 18-May-2016 |
guenther <guenther@openbsd.org> |
Save and restore 'gbr' register when enter/leaving the kernel, and use it for the TCB pointer. Eliminate __cerror.
"looks good" kettenis@, testing and ok deraadt@
|
#
16b62b6a |
| 21-Jun-2012 |
guenther <guenther@openbsd.org> |
__tfork() needs to set the stack address of the new thread in the kernel, so that it can't get a signal while still running on the parent thread's stack. Also, pass in sizeof(struct __tfork) to prov
__tfork() needs to set the stack address of the new thread in the kernel, so that it can't get a signal while still running on the parent thread's stack. Also, pass in sizeof(struct __tfork) to provide forward compat when more members are added. This is an ABI change, so switch syscall numbers and bump lib majors this time.
ok deraadt@ matthew@
show more ...
|
#
c6f64c6f |
| 22-Mar-2012 |
guenther <guenther@openbsd.org> |
Move __tfork_thread() from rthreads (libpthread) to libc so that it can be used for not-strictly-threading purposes
ok matthew@ kurt@
|