summaryrefslogtreecommitdiffstats
path: root/lib/libc/sparc64
Commit message (Collapse)AuthorAgeFilesLines
* Install the user trap handlers that libc provides from a constructor, sojake2003-11-181-0/+2
| | | | | | | | that they will be installed before application constructors are invoked. Its possible to link applications such that this fails, application code is invoked before they are installed, but, well, Don't Do That. Approved by: re (jhb)
* Add the mlockall() and munlockall() system calls.bms2003-08-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | - All those diffs to syscalls.master for each architecture *are* necessary. This needed clarification; the stub code generation for mlockall() was disabled, which would prevent applications from linking to this API (suggested by mux) - Giant has been quoshed. It is no longer held by the code, as the required locking has been pushed down within vm_map.c. - Callers must specify VM_MAP_WIRE_HOLESOK or VM_MAP_WIRE_NOHOLES to express their intention explicitly. - Inspected at the vmstat, top and vm pager sysctl stats level. Paging-in activity is occurring correctly, using a test harness. - The RES size for a process may appear to be greater than its SIZE. This is believed to be due to mappings of the same shared library page being wired twice. Further exploration is needed. - Believed to back out of allocations and locks correctly (tested with WITNESS, MUTEX_PROFILING, INVARIANTS and DIAGNOSTIC). PR: kern/43426, standards/54223 Reviewed by: jake, alc Approved by: jake (mentor) MFC after: 2 weeks
* Implement signalcontext.jake2003-08-082-2/+78
|
* Add a comment describing why it's important for the values in thisdas2003-05-081-0/+7
| | | | | | file to be correct, and how to generate them automatically. Caused much pain and suffering for: peter
* Add __ldtoa(), a wrapper around gdtoa() to make it look like dtoa().das2003-04-051-0/+8
| | | | | | | In support of this, add some MD macros to assist in converting long doubles to the format expected by gdtoa(). Reviewed by: silence on standards@
* Implement makecontext.jake2003-04-013-3/+129
|
* Replace our ancient dtoa/strtod implementation with the gdtoadas2003-03-122-0/+17
| | | | | | | | | | | | | | | | | | package, a more recent, generalized set of routines. Among the changes: - Declare strtof() and strtold() in stdlib.h. - Add glue to libc to support these routines for all kinds of ``long double''. - Update printf() to reflect the fact that dtoa works slightly differently now. As soon as I see that nothing has blown up, I will kill src/lib/libc/stdlib/strtod.c. Soon printf() will be able to use the new routines to output long doubles without loss of precision, but numerous bugs in the existing code must be addressed first. Reviewed by: bde (briefly), mike (mentor), obrien
* o Implement C99 classification macros isfinite(), isinf(), isnan(),mike2003-02-121-0/+5
| | | | | | | | | isnormal(). The current isinf() and isnan() are perserved for binary compatibility with 5.0, but new programs will use the macros. o Implement C99 comparison macros isgreater(), isgreaterequal(), isless(), islessequal(), islessgreater(), isunordered(). Submitted by: David Schultz <dschultz@uclink.Berkeley.EDU>
* Implement fpclassify():mike2003-02-082-0/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | o Add a MD header private to libc called _fpmath.h; this header contains bitfield layouts of MD floating-point types. o Add a MI header private to libc called fpmath.h; this header contains bitfield layouts of MI floating-point types. o Add private libc variables to lib/libc/$arch/gen/infinity.c for storing NaN values. o Add __double_t and __float_t to <machine/_types.h>, and provide double_t and float_t typedefs in <math.h>. o Add some C99 manifest constants (FP_ILOGB0, FP_ILOGBNAN, HUGE_VALF, HUGE_VALL, INFINITY, NAN, and return values for fpclassify()) to <math.h> and others (FLT_EVAL_METHOD, DECIMAL_DIG) to <float.h> via <machine/float.h>. o Add C99 macro fpclassify() which calls __fpclassify{d,f,l}() based on the size of its argument. __fpclassifyl() is never called on alpha because (sizeof(long double) == sizeof(double)), which is good since __fpclassifyl() can't deal with such a small `long double'. This was developed by David Schultz and myself with input from bde and fenner. PR: 23103 Submitted by: David Schultz <dschultz@uclink.Berkeley.EDU> (significant portions) Reviewed by: bde, fenner (earlier versions)
* Rewrite longjmp() and _longjmp() to directly restore the saved frame,tmm2003-01-052-55/+19
| | | | | | | | | instead of unwinding the call stack. This makes them usable to switch stacks, e.g. for libc_r. Do not save the frame pointer in setjmp() and _setjmp(), it is not needed any more. Rename _longjmp() to ___longjmp(), with a weak alias to _longjmp(), like the other architectures did.
* Rename siglongjmp() to __siglongjmp(), with a weak alias to siglongjmp(),tmm2003-01-051-2/+4
| | | | like the other architectures do.
* libc_r wasn't so tied to libc for 22 months.ru2002-11-181-1/+1
|
* Re-apply the previously backed-out commit that fixes the problem wherearchie2002-10-311-1/+1
| | | | | | | | HUGE_VAL is not properly aligned on some architectures. The previous fix now works because the two versions of 'math.h' (include/math.h and lib/msun/src/math.h) have since been merged into one. PR: bin/43544
* Rename the libc signal trampoline to __sigtramp to match netbsd. Thisjake2002-10-222-4/+4
| | | | should allow gdb to detect when we're executing in a signal trampoline.
* Revert previous commit to unbreak world until we figure out thearchie2002-09-201-1/+1
| | | | right way to do it.
* Fix a problem with the definition of HUGE_VAL causing the gcc warningarchie2002-09-191-1/+1
| | | | | | "cast increases required alignment of target type" on some platforms. Reviewed by: bde
* Use the macros from machine/fsr.h; some minor cleanups.tmm2002-09-141-5/+6
|
* Add implementations of fpgetmask(), fpgetround(), fpgetsticky(),tmm2002-09-146-1/+126
| | | | | fpsetround(), fpsetsticky(), obtained from NetBSD and tweaked a little to use definitions from machine/fsr.h instead of magic numbers.
* Add an implementation of fabs() (which is quite trivial).tmm2002-09-132-1/+38
| | | | | | | | | When it is called directly, gcc is smart enough to generate inline code for it, which is why it wasn't noticed before that it was missing. fabs() would probably better fit into libm, but it has traditionally been in libc on FreeBSD, so there is probably software around that makes assumptions about this by now.
* Install the userland signal trampoline when sigaction is first called,jake2002-09-032-1/+50
| | | | | | | instead of on startup. This fixes binary compatibility of dynamically linked binaries from before the signal code move. Suggested by: wollman (a long time ago)
* Use FOO(a) for macros with variadic args, instead of FOO(a,) or FOO(a, ).jake2002-09-021-3/+3
| | | | Submitted by: gcc3.2
* Add missing ret instruction to the ptrace() syscall wrapper.tmm2002-07-111-0/+2
|
* Use FBSDIDobrien2002-06-3013-84/+32
|
* Use __FBSDID.obrien2002-06-295-36/+9
|
* Add frexp(3).obrien2002-06-292-2/+80
| | | | Obtained from: OpenBSD
* Remove unneeded include of machine/emul.h.jake2002-06-181-1/+0
|
* Implement _Qp_sqrt. I've been unable to find a C program that gcc generatesjake2002-06-041-0/+14
| | | | a call to this for, but apparently somehing in libstdc++ does.
* Generate the normal asm stubs for all sysv system calls. Use these insteadjake2002-05-231-5/+3
| | | | | | | of C wrappers for the *sys indirect system calls. The indirect system calls are horribly broken on sparc64. Submitted by: tmm
* Use the right byte order for unaligned stores. <blush>.jake2002-05-131-1/+1
|
* Handle alignment fault fixups in libc rather than in the kernel.jake2002-05-135-2/+120
|
* Add a support macro to convert the 5-bit packed register field ofjake2002-05-113-66/+90
| | | | | | | | | | | | | | a floating point instruction into a 6-bit register number for double and quad arguments. Make use of the new INSFPdq_RN macro where apporpriate; this is required for correctly handling the "high" fp registers (>= %f32). Fix a number of bugs related to the handling of the high registers which were caused by using __fpu_[gs]etreg() where __fpu_[gs]etreg64() should be used (the former can only access the low, single-precision, registers). Submitted by: tmm
* Use __FBSDIDobrien2002-05-061-2/+3
|
* We typically don't add trailing /'s.obrien2002-05-061-1/+1
|
* Add an alternate signal trampoline to libc; add a wrapper for the sigtrampjake2002-04-294-2/+96
| | | | | | | install sysarch, to be called from _start. This will allow the stack to be mapped non-executable, as required by the sparc v9 abi.
* Add code to emulate arithmetic, comparison and conversion operationsjake2002-04-282-1/+136
| | | | | | | | | | | on long double, which are not implemented in hardware on any UltraSPARC chip that I know of. This just calls into the existing floating point emulator, which is still needed to emulate other floating point operations in certain conditions. Without this gcc has to generate the quad floating point instructions directly, which sometimes causes internal compiler errors. Reviewed by: tmm
* Emulate ldq and stq (load/store long double) instructions. GCC has startedjake2002-04-2712-106/+252
| | | | | | | | | using these to load long doubles, but they aren't implemented in hardware on (at least) UltraSPARC I and II machines. Emulate popc in the user trap handler as well. Re-arrange slightly to make support functions more accessible. Reviewed by: tmm
* Rename some fields in struct frame to be compatible with NetBSD/OpenBSD,jake2002-04-091-1/+1
| | | | | | | | | | | and add some compatibility defines. Add fields for ins and locals to struct reg also for the same reason; these aren't filled in yet because getting at those registers sucks and I'd rather not save them in the trapframe just for this. Reorder struct reg to be ABI compatible as well. Add needed include of machine/emul.h. This gets pmdb (poor man's debugger) from OpenBSD mostly compiling but it doesn't work yet :(
* htonl() and ntohl() operate on unsinged types, so they must zero-extend,tmm2002-04-062-2/+2
| | | | | not sign-extend. Fix a comment in the former to that effect, and change the latter over to do the right conversion.
* Fix the style of the SCM ID's.obrien2002-03-224-7/+6
| | | | I believe have made all of libc .h's as consistent as possible.
* Fix the style of the SCM ID's.obrien2002-03-2212-29/+42
| | | | I believe have made all of libc .c's as consistent as possible.
* SCM ID tweak.obrien2002-03-222-2/+0
|
* Remove __P() usage.obrien2002-03-212-24/+24
|
* Remove 'register' keyword.obrien2002-03-2110-69/+69
|
* Fix some bugs that would prevent %fsr to be set correctly, and addtmm2002-03-114-8/+25
| | | | | | | | | support for fcmp and fcmpe instructions with a condition code specification other than %fcc0. This (primarily the first part) seems to fix a lot of problems that people were seeing, e.g. perl and gawk failures. Reported and analyzed by: wollman
* Account for <machine/fsr.h> no longer being usable for assembler code.tmm2002-03-112-2/+6
|
* Fix __dtoul to work on sparc64 (it used a half-way v8 stack layout),tmm2002-03-111-13/+13
| | | | and make it PIC-aware.
* Save/restore the %y register around calls to the C user trap handler;tmm2002-03-111-0/+4
| | | | | | gcc emits the deprecated sparc v8 instructions that use this register when optimizing for UltraSparc machines because they are apparetly faster then their v9 counterpars there.
* Add fpsetmask(). Needed to build miniperl.jake2002-03-052-2/+29
| | | | Obtained from: netbsd
* Fix a bug where siglongjmp would clobber the argument to return fromjake2002-03-051-2/+2
| | | | | | sigsetjmp. It would return the value of the signal flag, instead. Pointy hat to: jake
* Connect the sparc64 userland fp emulator to the build.tmm2002-03-051-0/+2
|
OpenPOWER on IntegriCloud