summaryrefslogtreecommitdiff
path: root/lib/libutil/uucplock.3
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2013-08-26 21:38:10 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2013-08-26 21:38:10 +0000
commite9f4bf1da1af81716733684468d927489693c23c (patch)
treecefe9ea0aad52683d7075fedab912e36a9e15471 /lib/libutil/uucplock.3
parentd3f9c59d503b5b2c53f52910f4a5969042fa5fa9 (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/libutil/uucplock.3')
0 files changed, 0 insertions, 0 deletions