Commit Graph

971 Commits

Author SHA1 Message Date
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
matt 583d4ad39f Put R6 back in save mask (to make mask used by PLT routines). Adjust frame
size according.  In _longjmp, deal with sp/fp separately since they stored
in reserve order so movq won't work.
2002-03-30 04:58:36 +00:00
eeh 35e86bd3e5 Better, faster strlen(). 2002-03-30 03:28:53 +00:00
matt 42e21b0c6a Fix a few wrong register uses. (at least I know it works now. :) 2002-03-28 04:16:54 +00:00
matt dd5b171018 Add sync before isync since the MPC74xx require it. 2002-03-28 00:38:46 +00:00
matt 5cc5894442 Don't build old 1.3 compat jmp stuff for ELF.
For ELF, don't rewind stack on longjmp/_longjmp.  (for pth).
2002-03-27 18:38:50 +00:00
jmc a7839b0fdc Fix typo in previous commit 2002-03-27 03:43:39 +00:00
jmc a1fe3592c6 Correct mistaken signature for _Qp_dtoq. It gets a double passed in, not
a pointer to double which causes obvious errors on evaluation
2002-03-27 03:41:54 +00:00
matt 12810ed37d Use size_t in prototype (so this will be LP64 clean for PPC64 someday).
Calculate len separately for icache & dcache in case each has different
cacheline widths.  Make the code for both loops the same except for the
dcbst/icbi.  Deal with sizes >=2GB properly (like that'll happen but ...)
2002-03-26 21:20:24 +00:00
ross 70d3133ec0 Fix minor syntax warnings. 2002-03-23 20:13:35 +00:00
ross e1a248fa36 use canonical indirect jmp & call syntax to squelch new as(1) warning 2002-03-20 22:06:18 +00:00
bjh21 376c14488f Only abort() if the user specifies a rounding mode other than FP_RN. 2002-03-19 13:42:23 +00:00
bjh21 a03fedb6a5 ANSIfy. 2002-03-19 13:36:30 +00:00
dbj f0658bdada make compile with _STANDALONE 2002-03-18 05:10:58 +00:00
eeh a33f33ab31 Remove leftover debug code. Oops. 2002-03-13 00:57:53 +00:00
eeh bc40300979 Use new CPU_CACHEINFO sysctl to get more detailed information about
cache layout.
2002-03-12 22:08:21 +00:00
bjh21 dad2756159 Use the values from <machine/ieeefp.h> to define the exception flags, and
rounding modes, rather than different ones (oops).
2002-03-10 23:31:35 +00:00
jmc f40c307405 Move names for softfloat lib that _Qp functions call into _softfloat_
namespace
2002-03-04 21:26:39 +00:00
matt 75dee250ea Missed an sp in the great %sp cleanup. 2002-02-24 02:43:46 +00:00
matt 0ce5ca145f Change to use a register prefix. 2002-02-24 01:06:18 +00:00
kleink 3ca01a7f77 Do without stfiwx; per PEM32 Rev. 1 it's an optional part of the UISA,
and not implemented on the 601.
2002-02-22 18:21:22 +00:00
eeh 2fdccc01af Add bzero.S and strlen.S to the stuff that gets installed in libkern. 2002-02-20 22:45:04 +00:00
thorpej 268d4c679c Adjust for changes to __infinity decl. 2002-02-19 21:50:01 +00:00
bjh21 58e93e10b1 Replace infinity.c with one in the style of the new ieee754_infinity.c, but
with extra #ifdefs for FPA-format doubles.  This gets it compiling again.
2002-02-19 20:08:19 +00:00
simonb 2d8577fb83 Clean up some rampant code duplication wrt ieee number handling:
- Add alignment-safe double and float unions.
 - Use the above for the __infinity and __nan constants on all
   architectures that use the standard ieee754 representation of
   those constants.
 - Add a single copy of various ieee754 math functions (frexp, isinf,
   isnan, ldexp and modf) that had numerous duplicates among the
   arch-specific directories.
 - Use the above functions on all architectures where the generic C
   versions where used.  Architectures that had local assembly
   routines are untouched (for those functions only).
2002-02-19 13:08:12 +00:00
bjh21 294cb551a3 Switch libc syscall veneers over to using our shiny new official SWI range. 2002-02-10 14:10:59 +00:00
jmc 4b4c3144ba Enable the _Qp* routines to be built always and allow full softfloat to be
pulled in if MKSOFTFLOAT gets enabled.
2002-02-05 07:54:01 +00:00
jmc d9c86555ad Add softfloat and quad softfloat setup for sparc64 (thanks to Andrey Petrov
for most of this. I just integrated the build).

This adds proper functions for the _Qp* parts of the sparc64 ABI (which
handle quad softfloat). The routines work but need additional testing.
However if the compiler calls these currently bad things (core dumps)
will happen as gcc 2.95.3 generates bad calls for these.

Until that problem is fixed in the toolchain -msoft-quad-float cannot be
enabled as the default option for all builds (but the routines need to be
in libc as libgcc contains some references to these and anything including
it via --whole-archive will need the symbols to at least resolve).
2002-02-05 07:53:05 +00:00
ross de50fe2e64 Drink ALL the Kool-Aid.
(Move -mieee from lib/ to bsd.*.mk; new var MKIEEEFP defaults to yes.)
2002-01-27 23:33:51 +00:00
thorpej 4586df0992 On Alpha, build libc and libm with -mieee ... A metric crapload
of 3rd party software expects this.

XXX TODO: consider libm-fast for alpha that is not -mieee.  Possibly
determine -mieee or not at run-time based on a bit in the executable
headers.
2002-01-27 21:59:18 +00:00
aymeric 5927ef00d8 Redefine ENTRY properly for both ELF and a.out
Now we can compile profiled m68k programs that use libc.
2002-01-22 22:44:43 +00:00
ross 513a2a744b Align __nanf[] object with (sigh) gnuisms 2002-01-21 23:54:45 +00:00
ross 2bd74b6c24 Don't intentionally enable integer overflow traps (ITOH Yasufumi)
Closes port-alpha/10065
2002-01-21 23:40:41 +00:00
thorpej ac8c1c29e9 * Add WSYSCALL() to SYS.h, which creates a system call with an
internal name and a weak alias for the name.
* Add a WEAKASM syscall list, and process it.
* Make sysarch() have an internal name (_sysarch()).
2002-01-14 00:55:55 +00:00
thorpej 5d3e829423 Add internal names for fp{get,set}{mask,round,sticky}(), and
externally-visible weak aliases for the internal names.
2002-01-13 21:45:39 +00:00
thorpej 6f2f5bdcc6 Fix -Wshadow warnings. 2001-12-30 19:23:59 +00:00
tv 26375a1710 Remove -Wa,-Av9a hack from <sys.mk> and relegate it to the places that need
it (kernel and libc).

The current version of the gas assembler in the tree (2.11.2) already
defaults to generating object files for "-Av9 -64", supporting V9
instructions in ELF64 object format.  "-Av9a" is only needed for specific
parts of the NetBSD base sources, and not for all third-party code.
2001-12-19 21:17:59 +00:00
msaitoh cf9f94a483 sync with other archs.
Important fixes:

 > ldexp(denormal, exp>1023) would generate the wrong result in all non-overflow
 > cases.  Totally rework this code to fix this bug *and* make it faster.

 > Don't ever return -0.0.
2001-12-10 10:23:03 +00:00
wiz b4371d47f5 Replace some misuses of "then" with "than". 2001-12-04 17:56:30 +00:00
mjl a9c86c6ce0 Add assembler version of strlen. 2001-11-30 02:26:35 +00:00
mjl 625c08cf7e Outifdef some stuff not needed in the _KERNEL case. 2001-11-30 02:25:50 +00:00
mjl 7f0157c400 Make this work in kernel space too. 2001-11-29 00:20:37 +00:00
mjl feb8901632 Add PPC assembler routines for ffs(3), bzero(3) and memset(3). 2001-11-25 01:09:58 +00:00
wiz 1fd7eeefcd "than" instead of "then". 2001-11-21 19:14:19 +00:00
chris aadbf924e6 Update asm files to use sp instead of r13. Also tweak a couple of bits in the longjmp code to save an instruction. 2001-11-13 20:04:52 +00:00
chris d4ffdc1db0 Update arm libc files for 8 byte aligned stack. 2001-11-13 20:03:38 +00:00
bjh21 49ddb29842 Fix .type directive to use the right name for L_ffs_table (pointed out by
Ian Fry).

Also, add RCSID and fix some comments.
2001-11-13 13:07:52 +00:00
chris 6829afaed3 Update the libc version of ffs to make use of an optimsed asm version. 2001-11-11 22:05:18 +00:00
bjh21 4da598993d Rename a parameter to fix build problem with new toolchain. 2001-11-08 22:45:45 +00:00
tron b1d32d0e07 Rename a parameter to fix build problem with new toolchain. 2001-11-08 11:24:07 +00:00
enami 6023422f9d Fix -Wshadow warnings. 2001-11-08 06:51:05 +00:00
drochner f0f40184c9 -Wshadow fix 2001-11-07 17:56:32 +00:00
drochner dacd4ae4c5 cpoy from the 040 version: -Wshadow warning fix 2001-11-07 17:55:42 +00:00
mjl d1960d6679 fix for -Wshadow 2001-11-07 17:46:21 +00:00
chs 5f13639b8f fix for -Wshadow 2001-11-07 15:45:12 +00:00
drochner f3b5b119ec fix -Wshadow warnings 2001-11-07 13:44:58 +00:00
lukem 50f5afd52e fix WARNS=2 (-Wshadow) warnings 2001-11-04 13:57:29 +00:00
bjh21 ffbd94556b Change isnan() and isinf() to use a union to convert from double to
struct ieee_double, rather than a pointer cast.  This seems to enable
GCC 2.95.3 to get the instruction dependencies right (the old one fell
foul of ANSI aliasing rules), and it also generates more sensible code in
general.

If this is the correct solution, it should be applied to the other ports.
If it's not, someone should come up with one that _is_ correct.
2001-10-29 20:16:55 +00:00
bjh21 6a56d71ffa Handle machines using VFP-format doubles (as we do in ARM ELF) and big-endian
systems correctly.
2001-10-28 12:40:56 +00:00
tv fbc7a97b48 Remove files beginning with ":", which is invalid on other host OS's
(particularly those made by Microsoft).  These ex/vi-macro files are not
actually needed at this point, anyway....
2001-10-19 02:43:26 +00:00
fredette 129f58b424 On the 68010, don't bother with the by-8-longwords loop, instead
only 16-bit align the region and use loop mode with longwords
to do the bulk of the work.

On the 68020+, fixed an optimization bug where all regions that start
on odd addresses would not be properly longword aligned.
2001-09-07 12:50:01 +00:00
chuck 759fa4641f change "pushl [r0](ap)" ---> "pushl (ap)[r0]" ... the old version
made a reference to an external symbol "r0" rather that used register r0.
2001-09-06 18:42:58 +00:00
matt 9969d4398b Ansi'fy. (to make this compile under -Wstrict-prototypes) 2001-08-27 16:46:43 +00:00
matthias 0548dfb96c __clone stub for ns32k. Basic code taken from m68k. 2001-08-08 09:19:40 +00:00
eeh 1a0ae8c9f0 Improved version of bzero. 2001-08-02 01:17:28 +00:00
eeh 5dd57287be Fix some corner cases. 2001-08-01 16:45:20 +00:00
eeh 685a79bb36 Use unsigned compares for addresses. 2001-08-01 05:52:12 +00:00
thorpej f98eeabaa2 sparc64 version, cloned (har har!) from the sparc version and tweaked. 2001-07-23 07:35:44 +00:00
thorpej fed292651f From rev. 1.11 of the 32-bit version:
Add a macro "CALL()" to call a function correctly in the pic and non pic
case. Write ERROR() in terms of call.
2001-07-23 07:26:50 +00:00
christos fdda22398f add an implementation of __clone(2) 2001-07-23 01:41:25 +00:00
christos 9a416d6f08 Add a macro "CALL()" to call a function correctly in the pic and non pic
case. Write ERROR() in terms of call.
2001-07-23 01:40:33 +00:00
chris 30b6c70f2c Add __clone() for arm. 2001-07-22 18:56:34 +00:00
tsubai 2060c2091a Add __clone() for sh3. 2001-07-22 17:18:25 +00:00
thorpej bcd75f16cb Duh, call the clone's entry point w/ jal, so that when it returns,
it returns to the correct $ra (not the parent's!!).
2001-07-20 17:37:39 +00:00
tsubai 193161b3fe Add a __clone(3) entry point for powerpc. 2001-07-20 17:19:15 +00:00
scw b722bfb186 Compensate for the syscall args stack cleanup in the clone.
(Pointed out by Matthias Pfaller)
2001-07-20 17:08:18 +00:00
matthias 5501e1c532 This is just a RSYSCALL. 2001-07-20 11:17:18 +00:00
matt 63237a33ce Add __clone(2) for VAX. 2001-07-20 06:10:12 +00:00
scw c45a0d8765 clone(2) syscall frontend for m68k. 2001-07-19 21:50:46 +00:00
fvdl d34ad42fdb Fix call to _exit. 2001-07-18 12:24:53 +00:00
thorpej da2e0bfb7c Simplify slightly. 2001-07-17 23:13:04 +00:00
fvdl 017c6632e8 __clone stub for i386 2001-07-17 06:03:43 +00:00
thorpej 480252327f Cosmetic change. 2001-07-17 02:05:32 +00:00
thorpej d85c1e4043 Add a __clone(2) entry point. 2001-07-17 02:01:40 +00:00
thorpej 4cd75d0d0a Add a __clone(3) entry point. 2001-07-17 00:33:04 +00:00
matt 5feec23305 Changes needed for ARM ELF shared library support. 2001-07-16 05:50:05 +00:00
eeh b4b1b3f3d7 Replace bzero.S and bcopy.S with memset.S and memcpy.S to make the makefiles
happy.
2001-07-07 04:55:21 +00:00
eeh 227671f79e Fix more boundary issues. 2001-07-05 19:09:24 +00:00
eeh 8617fb9c54 Fix some boundary condition issues. 2001-07-05 06:29:49 +00:00
eeh 81fff01d8c Re-enable block insns for cahe issues. 2001-07-04 20:18:30 +00:00
eeh 093cf4f3b1 Re-enable block insns since they don't allocate in the caches. 2001-07-04 20:16:17 +00:00
eeh 64c6d98716 Disable slower VIS version. 2001-07-04 05:51:06 +00:00
eeh a6d4aabed4 Fix return value and fetches beyond the source range that could cause
segmentation faults in some cases.  And disable the VIS version which
seems to be slower.
2001-07-04 05:44:56 +00:00
eeh c7b881788f Oops. Fix typo. 2001-07-01 22:48:30 +00:00
eeh 0abcba55b7 I seem to have stumbled on an even faster bcopy implementation.... 2001-07-01 22:19:51 +00:00
ragge d6a6aa8773 These are too simple to not have in assembler. Also shrunk the libs with
~1k of unneccessary code :-)
2001-07-01 13:31:18 +00:00
eeh 4acdda21fd Add an optimized asssembly bcopy/memcpy. 2001-06-30 00:10:48 +00:00
atatat c39d205545 fix a grammatical error error 2001-06-28 05:25:04 +00:00
kleink b7ef7f807f Use a bzero-based assembly language implementation for memset();
inspired by the recent sparc64 change.
2001-06-23 08:38:43 +00:00
eeh 6541f113b9 Add an assembly version of memset(3). 2001-06-21 22:41:55 +00:00
fvdl 10f59d7bba Initial commit of x86-64 specific parts of libc. 2001-06-19 00:25:01 +00:00