summaryrefslogtreecommitdiffstats
path: root/lib/libc/sparc64
Commit message (Collapse)AuthorAgeFilesLines
* 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
|
* Add userland floating point emulator code for sparc64. This is a porttmm2002-02-2317-1/+3520
| | | | | of the (never committed) in-kernel version (with some optimizations and cleanups), which in turn was ported from NetBSD.
* Fix wrong offsets. Add offsets for %fsr and %tstate.jake2002-02-231-6/+11
| | | | Submitted by: tmm
* Add space for %fsr and %tstate to utrapframe. Save them in the genericjake2002-02-232-1/+14
| | | | | | | user trap entry code. Restore %asi and %ccr from the saved %tstate before returning to the trapping user code. Submitted by: tmm
* o Move NTOHL() and associated macros into <sys/param.h>. These aremike2002-02-184-8/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | deprecated in favor of the POSIX-defined lowercase variants. o Change all occurrences of NTOHL() and associated marcros in the source tree to use the lowercase function variants. o Add missing license bits to sparc64's <machine/endian.h>. Approved by: jake o Clean up <machine/endian.h> files. o Remove unused __uint16_swap_uint32() from i386's <machine/endian.h>. o Remove prototypes for non-existent bswapXX() functions. o Include <machine/endian.h> in <arpa/inet.h> to define the POSIX-required ntohl() family of functions. o Do similar things to expose the ntohl() family in libstand, <netinet/in.h>, and <sys/param.h>. o Prepend underscores to the ntohl() family to help deal with complexities associated with having MD (asm and inline) versions, and having to prevent exposure of these functions in other headers that happen to make use of endian-specific defines. o Create weak aliases to the canonical function name to help deal with third-party software forgetting to include an appropriate header. o Remove some now unneeded pollution from <sys/types.h>. o Add missing <arpa/inet.h> includes in userland. Tested on: alpha, i386 Reviewed by: bde, jake, tmm
* Connect user trap code to the build.jake2002-01-011-0/+3
|
* Add libc side of user trap handling.jake2002-01-017-0/+423
| | | | | | Add support for handling floating point disabled traps mostly in userland for the simple single threaded case. Not yet enabled by default. Implement __sparc_utrap_install as specified by the sparc abi.
* Make sure curbrk is well aligned.jake2001-12-291-0/+1
|
* Use jmpbuf offsets, not ucontext_t.jake2001-12-291-3/+2
|
* Add .register directives for gcc3.jake2001-12-291-13/+42
| | | | | | Adapt to jmpbuf no longer being a ucontext_t. Restore the context "by hand" in longjmp and call sigprocmask, instead of just using sigreturn.
OpenPOWER on IntegriCloud