Commit Graph

971 Commits

Author SHA1 Message Date
kleink 8b314175ec Add ns32k ucontext userland portions. Untested, but compiled in the
recent past and presumed working.
2003-01-21 21:03:25 +00:00
kleink 7a9f64971b Add swapcontext() lint stub. 2003-01-21 20:26:10 +00:00
kleink cd9f53e12c Add swapcontext() lint stub. 2003-01-21 20:14:07 +00:00
scw fd2dcace1f Make these compile. 2003-01-21 11:29:29 +00:00
scw 11e9fa3a9b Initialise the FPSCR to a sane value. 2003-01-20 20:09:59 +00:00
thorpej c7e237f26a Merge the nathanw_sa branch. 2003-01-20 00:26:39 +00:00
matt 21375ddf92 Make sure r0 in the saved context is 0. 2003-01-20 00:24:07 +00:00
matt 94face2f9c Use _ALIGN_TEXT.
Make sure R0 is 0 in the saved context.
2003-01-20 00:18:06 +00:00
kleink 13a5336c66 Move getcontext.S from gen to sys, where it belongs. 2003-01-19 23:49:12 +00:00
scw bcbbc4f87e SH5 libc ucontext/lwp support.
Untested for now, until I get the libpthread stuff done and
an SA userland built.
2003-01-19 23:05:01 +00:00
matt 95b5cce5c6 Add getcontext(2) stub. 2003-01-19 19:32:39 +00:00
matt 8c295614ea Add the VAX versions of these. 2003-01-19 19:07:30 +00:00
matt bdde89628b Cast with uintptr_t instead of u_long. 2003-01-19 08:53:36 +00:00
thorpej c7cb871964 These files are obsolete; setlogin() is now implemented in C with a
small syscall stub.
2003-01-18 18:28:44 +00:00
thorpej 3fdac2b8c5 Merge the nathanw_sa branch. 2003-01-18 10:52:16 +00:00
fvdl 50683c0ce9 The fast syscall path clobbers 2 registers. Which is fine for a plain
system call, as long as the stub knows about it. However, it's bad
for sigreturn. Hence, use the old entry point for sigreturn. XXX
2002-12-13 17:43:02 +00:00
scw 94932a0f44 SH5 asm versions of some low-level libc routines.
Most of these copied from libkern.
2002-12-08 09:48:36 +00:00
thorpej 06edae0ff4 Need <stdlib.h> for abort() prototype. 2002-11-26 21:14:04 +00:00
chris 0caaced5a9 Add arm asm version of memcmp, basically it's strncmp.S without the
check for *src != 0
2002-11-23 14:26:04 +00:00
chris 35c74e8cc5 Add an asm version of strncmp, based on strcmp.
Add RCSID to strcmp, also use numeric label, rather than named label for
loop.
2002-11-23 03:10:27 +00:00
itohy 6cde54195b Assembly version of string functions.
Originally from SHIMIZU Ryo.
2002-11-20 14:23:54 +00:00
rearnsha 6576c49b48 Add an assembler version of strcmp, based on example code from the ARM
ARM.  As an example of the performance difference that this provides
a Dhrystone score on my Shark goes from 213k to 261k.
2002-11-16 18:27:40 +00:00
thorpej 7f74df5ef3 ABICALLS -> __ABICALLS__ 2002-11-10 18:10:25 +00:00
thorpej 6596b29802 t4 -> ta0 2002-11-05 00:05:15 +00:00
junyoung 4c3981eea3 Save a jmp for memcpy(3). 2002-10-29 07:01:44 +00:00
junyoung 333f362341 memcpy(3) no longer deals with overlap case; it's now forward-only. 2002-10-29 06:53:18 +00:00
junyoung 7f21deb763 Get rid of pointer wraparound check. Ok'ed by TAMURA Kent. 2002-10-29 06:35:17 +00:00
chs cab484e445 move includes to the top so that this builds in libc context too. 2002-10-29 04:40:55 +00:00
petrov ade04d7707 Compile with an ISO C preprocessor. 2002-10-29 00:22:18 +00:00
chs c04f87a03e remove setjmp/longjmp from libkern, they're not used. 2002-10-27 18:45:11 +00:00
chs c5a350ef59 use %g5 instead of %g7 (since we want to use %g7 for the cpu_info pointer
in the kernel).  resync libc and libkern versions of this file.
2002-10-27 18:41:27 +00:00
thorpej a8151a52ca Split isnan() into its own file. 2002-10-26 06:51:32 +00:00
thorpej bc4821e36e * Use the common ieee754_* routines (and add ones we were missing).
* Note that several routines are still missing for hppa.
2002-10-26 06:44:54 +00:00
scw 63199a5984 Fix a botched offset. 2002-10-08 20:19:00 +00:00
scw d832585f39 Always save/restore the FP status register. 2002-09-28 10:38:55 +00:00
ragge d1c2e581d6 Rename __sigtramp1.S to __sigtramp.S. 2002-09-12 18:28:52 +00:00
ragge 2e409d7d44 Fix a signal handler bug originally reported by Hugh Graham some year ago:
If two signals are sent after each other without the process being run in
userspace between them then the second one will overwrite part of the signal
info stored on the userstack.
Fixed by rewriting and simplifying both the signal delivery code and the
trampoline code. Also bump signal version number to 2.
Rename __sigtramp1.S to __sigtramp.S.
2002-09-12 18:28:22 +00:00
scw ba98c8c290 Various setjmp/longjmp fixes.
Synchronise with the kernel's sh5 signal code.
2002-09-06 15:33:48 +00:00
scw e4ff59faf1 Round-up the supplied length *before* aligning. 2002-09-06 15:31:19 +00:00
msaitoh a991dcef11 Add __movstr_i4_{odd,even} for -m4.
Written by SHIMIZU Ryo.
2002-09-05 08:35:15 +00:00
scw fd955ca5d6 Make it plain to the compiler that __sigtramp_sigcontext_1() really is
an external function, instead of an array. Otherwise, it won't set
bit 0 of the trampoline's address to indicate SHmedia mode.
2002-09-04 21:44:07 +00:00
scw 891c86cef4 Use r4 to preserve the filedes pointer across the syscall instead of r3. 2002-09-04 19:19:07 +00:00
itohy f89823c1f8 Save 1-4 instructions on all cases except for the ret=0 case.
This is probably the last version from me. :)
You are welcome to speed it up, of course. :)

Here's a benchmark on SH-4 200MHz.
9.2% faster if all the cases occur evenly.

return value	C version	previous vers	this version	speed ratio
of ffs()	(ns/call) *1	(ns/call)	(ns/call) *2	(*1/*2)
------------	------------	-------------	------------	-----------
 0		  86		 81		 81		1.06
 1		 110		106		 91		1.21
 2		 132		106		 92		1.43
 3		 165		117		 96		1.72
 4		 201		116		 95		2.12
 5		 237		107		 99		2.39
 6		 271		106		101		2.68
 7		 307		116		107		2.87
 8		 342		116		105		3.26
 9		 376		126		111		3.39
10		 410		127		110		3.73
11		 446		136		115		3.88
12		 483		134		116		4.16
13		 518		125		119		4.35
14		 551		126		120		4.59
15		 587		135		127		4.62
16		 624		136		126		4.95
17		 658		139		126		5.22
18		 694		140		126		5.51
19		 727		148		131		5.55
20		 764		150		131		5.83
21		 799		141		135		5.92
22		 834		142		135		6.18
23		 868		152		140		6.20
24		 903		153		142		6.36
25		 939		140		127		7.39
26		 974		141		126		7.73
27		1009		152		131		7.70
28		1044		148		130		8.03
29		1080		141		136		7.94
30		1115		141		136		8.20
31		1151		151		141		8.16
32		1185		151		140		8.46
2002-09-01 13:14:53 +00:00
itohy fa5465079f Slightly improved version of ffs(3).
Partially from SHIMIZU Ryo <ryo@iij.ad.jp>.  Thanks.
Some cases are slower, but other most cases are faster.

Here's a benchmark on SH-4 200MHz.

return value	C version	previous vers	this version	speed ratio
of ffs()	(ns/call) *1	(ns/call)	(ns/call) *2	(*1/*2)
------------	------------	-------------	------------	-----------
 0		  86		 86		 81		1.06
 1		 110		 86		106 *(slower)	1.04
 2		 132		 86		106 *		1.25
 3		 165		105		117 *		1.41
 4		 201		104		116 *		1.73
 5		 237		111		107		2.21
 6		 271		111		106		2.56
 7		 307		126		116		2.65
 8		 342		125		116		2.95
 9		 376		122		126 *		2.98
10		 410		121		127 *		3.23
11		 446		139		136		3.28
12		 483		140		134		3.60
13		 518		146		125		4.14
14		 551		146		126		4.37
15		 587		161		135		4.35
16		 624		162		136		4.59
17		 658		141		139		4.73
18		 694		142		140		4.96
19		 727		160		148		4.91
20		 764		161		150		5.09
21		 799		167		141		5.67
22		 834		167		142		5.87
23		 868		181		152		5.71
24		 903		181		153		5.90
25		 939		146		140		6.71
26		 974		146		141		6.91
27		1009		166		152		6.64
28		1044		165		148		7.05
29		1080		171		141		7.66
30		1115		171		141		7.91
31		1151		185		151		7.62
32		1185		186		151		7.85
2002-08-28 15:34:35 +00:00
mycroft bbaefa57eb Do the appropriate PIC magic for the jump to _exit(). 2002-08-27 21:38:20 +00:00
itohy 6736303e13 Use assembly version of ffs(3). 2002-08-24 06:39:48 +00:00
itohy 85ce1de27f Oops, SYSLIBC_SCCS -> LIBC_SCCS 2002-08-24 06:37:24 +00:00
itohy 70b5675025 Assembly version of ffs(3).
Confirmed to return the same value as that of the C version.

The results of a simple benchmark on SH-4 200MHz, is shown below.
I think this shows acceptable performance.

return value	C version	this version	speed
of ffs()	(ns/call)	(ns/call)	ratio
------------	---------	------------	-----
 0		  86		 86		1.00
 1		 110		 86		1.27
 2		 132		 86		1.53
 3		 165		105		1.57
 4		 201		104		1.93
 5		 237		111		2.13
 6		 271		111		2.44
 7		 307		126		2.43
 8		 342		125		2.73
 9		 376		122		3.08
10		 410		121		3.38
11		 446		139		3.20
12		 483		140		3.45
13		 518		146		3.54
14		 551		146		3.77
15		 587		161		3.64
16		 624		162		3.85
17		 658		141		4.66
18		 694		142		4.88
19		 727		160		4.54
20		 764		161		4.74
21		 799		167		4.78
22		 834		167		4.99
23		 868		181		4.79
24		 903		181		4.98
25		 939		146		6.43
26		 974		146		6.67
27		1009		166		6.07
28		1044		165		6.32
29		1080		171		6.31
30		1115		171		6.52
31		1151		185		6.22
32		1185		186		6.37
2002-08-24 06:30:34 +00:00
thorpej 1b907e1877 Local label fixup. 2002-08-17 19:54:30 +00:00
chris 725f3ca1a7 correct comment, it's r0, not a0. 2002-08-17 01:23:36 +00:00
briggs 85a594afcd Add a missing register prefix, noted by Makoto Fujiwara on the port-macppc
mailing list.
2002-08-09 02:46:56 +00:00
matt 1cddd41e0c Convert to use register prefixes. (0 -> %r0, etc.) 2002-07-30 06:07:56 +00:00
fvdl d97eddb8d3 Remove fs and gs kludge. 2002-07-14 12:29:59 +00:00
scw 2675306718 Add IEEE FP mode control functions and definitions for SH5. 2002-07-12 12:20:24 +00:00
thorpej ad4531774a Need <machine/psl.h> and <machine/signal.h>. Problem pointed out
by Juergen Hannken-Illjes <hannken@eis.cs.tu-bs.de>.
2002-07-11 17:47:11 +00:00
scw 11c9d0366e Fix a tryping error. 2002-07-11 17:41:40 +00:00
scw 8c43a4afe4 Userland side of SH5 signals/setjmp. 2002-07-11 14:23:04 +00:00
scw 1a4432c02e It helps to use the right register for the return value. 2002-07-10 13:21:56 +00:00
scw eb817bdf5a Add some missing FP support code. 2002-07-10 13:09:04 +00:00
scw 2ff17a3936 Ditch the leading underscores for bswap*() 2002-07-10 12:42:28 +00:00
scw 5754eadb38 Compensate for an over-pedantic assembler. 2002-07-10 11:45:51 +00:00
scw c7810bb6a8 Fixed a botched blink insn. 2002-07-10 11:43:16 +00:00
scw 9f405d4e5c Don't include <machine/endian.h> in asm source. 2002-07-10 11:29:32 +00:00
scw 2ecd583666 Fix register number botch. 2002-07-10 11:05:19 +00:00
scw 15107aacfc Remove whitespace from WEAK_ALIAS macro invocation. 2002-07-10 11:02:24 +00:00
scw 0c3e5a70d1 Use C versions of string functions for now. 2002-07-10 09:12:21 +00:00
kent 4d7aae1097 Avoid redundant memory access.
Fix diagnostic code for bcopy().
2002-07-10 06:01:51 +00:00
thorpej c061e6bf8b Enable the libc-provided signal trampoline. The old __sigaction14
entry point has been replaced by the new __sigaction14() which is a
wrapper around the __sigaction_sigtramp system call (which is itself
not directly exposed outside of libc).

No shared library version change is necessary; no new symbols
are exposed outside of libc.
2002-07-10 04:29:05 +00:00
thorpej 86223838f0 Also need <machine/fsr.h> and <machine/psl.h>. 2002-07-10 03:27:23 +00:00
thorpej 8aa4d3caec New __sigaction14() system call stub which registers the signal
trampoline, and the signal trampolines themselves.

NOTE: These are not yet enabled; they will be enabled after further
testing on more architectures.
2002-07-09 23:32:35 +00:00
scw ad8fdcc166 Forgot these in the last commit. 2002-07-05 13:32:58 +00:00
scw 59474a8c82 NetBSD, meet the SH-5 cpu.
SH-5, meet NetBSD.

Let's hope this is the start of a long and fruitful relationship. :-)

This code, funded by Wasabi Systems, adds initial support for the
Hitachi SuperH(tm) SH-5 cpu architecture to NetBSD.

At the present time, NetBSD/evbsh5 only runs on a SH-5 core simulator
which has no simulated devices other than a simple console. However, it
is good enough to get to the "root device: " prompt.

Device driver support for Real SH-5 Hardware is in place, particularly for
supporting the up-coming Cayman evaluation board, and should be quite
easy to get running when the hardware is available.

There is no in-tree toolchain for this port at this time. Gcc-current has
rudimentary SH-5 support but it is known to be buggy. A working toolchain
was obtained from SuperH to facilitate this port. Gcc-current will be
fixed in due course.

The SH-5 architecture is fully 64-bit capable, although NetBSD/evbsh5 has
currently only been tested in 32-bit mode. It is bi-endian, via a boot-
time option and it also has an "SHcompact" mode in which it will execute
SH-[34] user-land instructions.

For more information on the SH-5, see www.superh.com. Suffice to say it
is *not* just another respin of the SH-[34].
2002-07-05 13:31:28 +00:00
thorpej 2ce52bf270 Remove "_THREAD_SAFE" stuff that is not used on NetBSD. 2002-07-04 16:48:44 +00:00
kent 763eb5645a memcpy/memmove/bcopy: Add diagnostic code to check pointer wraparound.
The code is enabled only when _DIAGNOSTIC is defined.
2002-07-04 15:48:40 +00:00
bjh21 3763adaefd Avoid leaving junk in the top half of R0 on return.
This fixes port-arm/17440.
2002-07-01 19:07:18 +00:00
fredette 58e86abcb7 Changes to allow libc to compile as PIC on the hppa. 2002-07-01 16:00:50 +00:00
matt 471cb493ae Add modff 2002-06-23 21:48:52 +00:00
fvdl 4f2f06c917 Attempt to juggle the 2 seperarate status/mask bit sets for plain FP
and XMM to provide a consistent interface.
2002-06-12 19:17:22 +00:00
fvdl 165400b7ba mov -> lea to access _map table. 2002-06-06 23:04:35 +00:00
fvdl e6f161c821 Fix the EINVAL return path. 2002-06-06 20:51:17 +00:00
fredette 02ac1ae2f0 Added hppa support (some of it incomplete) to lib/csu, lib/libc,
and lib/libkvm.
2002-06-06 20:31:19 +00:00
fvdl 10940acfe5 Add clone(2) implementation. 2002-06-03 18:31:12 +00:00
fvdl e010b5ebde Use the syscall insn for system calls. Fix up some assembly to
remove either previously made errors, or to account for the
fact that syscall clobbers %ecx.
2002-06-03 18:30:32 +00:00
thorpej d9f211b107 Make this work with an ISO C preprocessor. 2002-05-30 05:08:51 +00:00
eeh 9969483183 Fix conflict in definitions. 2002-05-29 15:58:03 +00:00
wiz 92d8b1e9fa Revert previous: .S files are currently compiled with -traditional-cpp,
so __STDC__ is _not_ always defined.
2002-05-26 12:24:55 +00:00
wiz d56bb7c2ec __STDC__ is always defined on NetBSD. 2002-05-26 11:48:00 +00:00
bjh21 6bd902a1db Adapt for recent lib/libc/softfloat changes. 2002-05-22 10:20:20 +00:00
bjh21 936b7f4cf8 Import the 32-bit version of SoftFloat 2a and separate it and the 64-bit
version into different directories.  Which version a given port uses is
controlled by the SOFTFLOAT_BITS make variable.  This is set to 64 (which
uses the same code we had before) by default.  32-bit platforms that don't
need extended precision support might get better performance by using 32.

Set the ARM port to use the 32-bit version of SoftFloat, since this is more
than a factor of two faster than the 64-bit version.  This should get the
floating-point performance back to what it was in 1.5.
2002-05-21 23:51:04 +00:00
bjh21 010758bf16 Add SIGFPE support to SoftFloat, so fpsetmask/fpgetmask now work. A new
variable, float_exception_mask (#defined to _softfloat_float_exception_mask)
contains the current exception mask.
Also make the argument to float_raise into an fp_except.
Also synchronise file header comments between files.
2002-05-12 13:12:45 +00:00
eeh 22abdf821b Use large (-fPIC) relocations. 2002-05-07 01:34:21 +00:00
eeh b92211c580 Go back from using %g2 (an application register) to %g7 (a system register)
for syscall returns.
2002-05-07 01:32:46 +00:00
eeh 1d63620b87 Add support for large -fPIC relocations. 2002-05-07 01:31:33 +00:00
bjh21 251de84ccc Consistently declare the types of float_rounding_mode and float_exception_flags
as fp_rnd and fp_except respectively.
2002-05-06 19:05:00 +00:00
thorpej 046b47950e Add a .register directive to appease newer gas. 2002-05-05 17:51:46 +00:00
bjh21 25540eca7e All the versions of softfloat-specialize were practically identical, so replace
them with a single one.
2002-04-21 21:07:35 +00:00
eeh bc3cedd6d8 The mask for 8-byte alignment is 0x7 not 0xf. 2002-04-02 22:07:55 +00:00
thorpej 2e52a189a8 Remove non-existent ldexp.c from SRCS. 2002-04-02 03:41:26 +00:00
eeh eb4eaa1ba4 Remove test harnass bits. 2002-04-01 15:59:26 +00:00
matt 33ce495df4 Put R6 back in the save and adjust frame size for it. Don't save the
register in sigset area, put them after the sigset area.
2002-03-30 05:32:32 +00:00