20 Commits

Author SHA1 Message Date
jake
675ba849a8 Rename the libc signal trampoline to __sigtramp to match netbsd. This
should allow gdb to detect when we're executing in a signal trampoline.
2002-10-22 15:15:39 +00:00
jake
c73a7dbd84 Install the userland signal trampoline when sigaction is first called,
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)
2002-09-03 14:55:29 +00:00
tmm
95a384b19a Add missing ret instruction to the ptrace() syscall wrapper. 2002-07-11 15:48:02 +00:00
obrien
0ceea17099 Use FBSDID 2002-06-30 05:36:49 +00:00
jake
d6dcf86c81 Generate the normal asm stubs for all sysv system calls. Use these instead
of C wrappers for the *sys indirect system calls.  The indirect system calls
are horribly broken on sparc64.

Submitted by:	tmm
2002-05-23 23:51:57 +00:00
jake
a10a1944b6 Use the right byte order for unaligned stores. <blush>. 2002-05-13 22:48:01 +00:00
jake
7f78957a1b Handle alignment fault fixups in libc rather than in the kernel. 2002-05-13 04:35:08 +00:00
jake
6aad34df02 Add a support macro to convert the 5-bit packed register field of
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
2002-05-11 21:20:05 +00:00
jake
38d2985e9b Add an alternate signal trampoline to libc; add a wrapper for the sigtramp
install sysarch, to be called from _start.

This will allow the stack to be mapped non-executable, as required by the
sparc v9 abi.
2002-04-29 18:14:44 +00:00
jake
a1a94cce5c Emulate ldq and stq (load/store long double) instructions. GCC has started
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
2002-04-27 21:56:28 +00:00
tmm
9d0a7ccb85 Save/restore the %y register around calls to the C user trap handler;
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.
2002-03-11 02:53:03 +00:00
tmm
c0c8cd1eeb Add userland floating point emulator code for sparc64. This is a port
of the (never committed) in-kernel version (with some optimizations and
cleanups), which in turn was ported from NetBSD.
2002-02-23 21:37:18 +00:00
jake
9cdf1cce75 Fix wrong offsets. Add offsets for %fsr and %tstate.
Submitted by:	tmm
2002-02-23 19:01:22 +00:00
jake
a349eff875 Add space for %fsr and %tstate to utrapframe. Save them in the generic
user trap entry code.  Restore %asi and %ccr from the saved %tstate before
returning to the trapping user code.

Submitted by:	tmm
2002-02-23 19:00:30 +00:00
jake
cc0e9cda25 Connect user trap code to the build. 2002-01-01 21:59:53 +00:00
jake
bf1d0034f8 Add libc side of user trap handling.
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.
2002-01-01 21:58:32 +00:00
jake
19d78fb18d Make sure curbrk is well aligned. 2001-12-29 06:40:58 +00:00
jake
7ba51fcfef Need .type and .size here too. 2001-11-18 04:48:34 +00:00
jake
00a4946854 Remove fork and vfork wrappers. The kernel does the right thing. 2001-11-18 04:31:36 +00:00
jake
e655c7bdca Minimal libc for sparc64.
Reviewed by:	obrien
2001-10-26 05:40:07 +00:00