Age | Commit message (Collapse) | Author |
|
mask of zero (because of flawed logic assuming finding zero in the sigjmp_buf
signal mask means sigsetjmp was invoked with a zero `savemask' argument).
While there, clean comments of all *{set,long}jmp routines, and shave a few
instructions by using bcnd insead of cmp + bb to test for zero values.
Passes the regress tests, and now devel/libsigsegv configure siglongjmp test
will not spin (this test is however flawed as it expects a signal handler
declared as running on the sigaltstack and `returning' through siglongjmp to
be invoked on the signal stack the next time the signal is raised).
|
|
ok miod@ kettenis@
|
|
the pointer
ok miod@ kettenis@
|
|
ok miod@
|
|
It turns out <float.h> is the right file to pull in.
ok millert
|
|
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@
|
|
or compiler we use will.
ok millert
|
|
|
|
|
|
__tfork_thread().
ok guenther@
|
|
ok miod@
|
|
it can be used for not-strictly-threading purposes
ok matthew@ kurt@
|
|
up to 3 times slower than the C code most of the time. This was
brought up by DragonflyBSD guys initially.
ok deraadt, guenther. miod will not miss it.
|
|
particularly the "consume the signal you just sent" hang, and putting
the wait queues in userspace.
Do cancellation handling in pthread_cond_*wait(), pthread_join(),
and sem_wait().
Add __ prefix to thr{sleep,wakeup,exit,sigdivert}() syscalls; add
'abort" argument to thrsleep to close cancellation race; make
thr{sleep,wakeup} return errno values via *retval to avoid touching
userspace errno.
|
|
Correct the namespace protections for sigreturn(), sigwait(), and psignal()
ok millert@
|
|
|
|
ok jsing@
|
|
linker doesn't generate stubs yet.
|
|
that instruction does sign extension. Look at %r1 to determine whether a
system call was sucessful, since that is where the kernel puts the information.
|
|
|
|
This was done for the sigreturn call in sigcode before 5.0.
ok deraadt@ for post-5.0
|
|
128-bit long double. Diff committed on behalf of martynas@
|
|
loads and stores may trigger an alignment trap. Also fix issues where the
code was assuming arguments were passed both in registers on the stack. This
isn't ithe case for hppa64.
|
|
on this historical behavior; so we're stuck in this stupid situation.
No cookie for me.
|
|
by guenther@ months ago, had to wait for a libc major bump.
|
|
them in libc for a very long time. OK guenther@.
|
|
YES!! miod@
|
|
While at it clean-up a bit by removing unused files and adding cvs tags.
|
|
|
|
database on the vax, similarly like has been done in gen.
|
|
and FP_NAN cases altogether, since they are not supported, and
fpclassify() will never return that. (Leftovers when this was cloned.)
- Kill unused INFSTR, NANSTR, LDBL_ADJ.
- Teach hdtoa() that rv_alloc can fail.
- Move STRTOG_NoMemory above STRTOG_Infinite (fallthru).
|
|
the invalid exception bits, as described in Section 3.3.6.1.1 of
PowerPC Architecture Programming Environments Manual.
A proper way to cause an invalid operation exception is to set
FPSCR[VXSOFT]. Similarly, we clear all the FPSCR[VX*] bits otherwise.
|
|
Sticky flags are in the left half of fpsr; not the undefined bits
in the right half. OK miod@.
|
|
in the right half. OK miod@.
|
|
ok kettenis@
|
|
ok kettenis@
|
|
ok kettenis@
|
|
ok kettenis@
|
|
HPPA longjmp tests that the env parameter < the current stack pointer.
The test relies on the stack being at the end of the memory space.
This test is wrong for a couple of reasons:
- the main stack is at 0x78000000-0x80000000, but allocations between
0x80000000-0xc0000000 are available to the program,
- pthread stacks may be at any place in the address space, allowing a
heap-allocated env parameter to fail the check.
ok deraadt@, kettenis@, guenther@ at least
|
|
ok miod
|
|
tested by otto@; ok miod@
|
|
On mips64, also correct the name called from plain cerror to __cerror.
"looks correct" miod@
|
|
local registers for a few temporaries. This was changed to use two global
registers. Maybe to permit use in-kernel without conflicting with the
register V7 register window handlers. (Was this done by Chris Torek? Is this
related to Gordon Irlam's work? Or was it in NetBSD? Hard to tell because
NetBSD removed their original cvs tree.)
In V8 the ABI was tightened; more global registers became offlimits in
different ways. We started supporting sun4m, and did not consider this.
As a result, the global registers chosen are the wrong choice. In
particular, %g7 is a poor choice for upcoming TLS work. It looks like
it is safer to use %g5 and %g6 since these functions are "system software".
All re-entrant parts of the system save it.
On sparc64 these functions are in libc per ABI requirement, but are unused.
On sparc, they occur in bootblocks (no reentrancy), kernel (reentrancy saves
globals; kernel is not ABI compliant), userland libc (signal handlers save
globals), and ld.so (symbol binding is not re-entrant on its own).
Discussed rather extensively with guenther, kettenis, miod and drahn.
|
|
that didn't already have one, and then immediately use it in libc's
SYS.h
ok miod@
|
|
we don't provide the silly union to decompose the value. This will allow
userland to flip the ``flush denormalized to zero'' setting, which apparently
is being relied upon by tcl.
Asked by jasper@ a long time ago. Riding upon the upcoming libc major crank.
|
|
|
|
them; allows userland with stack beyond 2GB to run.
|
|
referencing it by name; silences a linker warning; no functional change.
|
|
|
|
ecvt, fcvt, gcvt, *printf, strtof, strtod, strtold act per ieee
1003.1. after these massive changes, remove unused files which
would not work now. reported by Maksymilian Arciemowicz; ok theo
|