diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2013-08-26 21:38:10 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2013-08-26 21:38:10 +0000 |
commit | e9f4bf1da1af81716733684468d927489693c23c (patch) | |
tree | cefe9ea0aad52683d7075fedab912e36a9e15471 /lib/libsqlite3/mkopcodec.awk | |
parent | d3f9c59d503b5b2c53f52910f4a5969042fa5fa9 (diff) |
Use %r27 as the thread control block pointer, allowing for __get_tcb() calls
in libpthread to be optimized away.
While there, follow DG/UX's example of using more than one register for thread
purposes (after all, the ABI reserves four of them), and also use %r26 to store
a pointer to the current thread's errno.
Since it is not possible to initialize %r26 at thread creation without
intrusive and potentially race-prone changes, have __tfork() reset %r26 to
zero, and libpthread's __cerror lazy initialize it. As soon as %r26 is nonzero,
it will be used instead of calling __errno().
This means that binaries linked against HEAD libpthread need to run on HEAD
kernels, and we are belatedly jumping on the 64-bit time_t bump (since there
are no 64-bit time_t m88k snapshots yet).
Joint work with guenther@; "Your love of asm is sick and wrong, and yet
beautiful." and ok guenther@
Diffstat (limited to 'lib/libsqlite3/mkopcodec.awk')
0 files changed, 0 insertions, 0 deletions