Commit Graph

397 Commits

Author SHA1 Message Date
mark 1f73d0c21a Added assembly files _memcpy.S memcpy.S memmove.S bcopy.S memset.S bzero.S 1997-10-06 00:40:31 +00:00
mark 6740365e8e Implement bzero() as a stub that calls memset(). 1997-10-06 00:39:25 +00:00
mark 45306416a8 Implement an assembly version of memset(). 1997-10-06 00:38:33 +00:00
mark 4cb1dd25c8 Implement standard libc memory copy/move functions as stubs onto the
assembly _memcpy() routine.
1997-10-06 00:37:51 +00:00
mark 65021679a3 Implement an assembly memory copy routine. 1997-10-06 00:35:50 +00:00
mark d581bfa372 Use machine/asm.h instead of DEFS.h
If SOFTFLOAT is defined provide glue to the softfloat functions.
1997-10-06 00:26:11 +00:00
mark e416694cf0 If SOFTFLOAT is defined provide glue for the softfloat rounding functions. 1997-10-06 00:23:54 +00:00
mark a0e35b1248 Use fpgetround() to get the current rounding mode. 1997-10-06 00:22:40 +00:00
mark 1302ae6654 Minor code cleanup.
Use machine/asm.h instead of DEFS.h
1997-10-06 00:20:28 +00:00
mark 9c99854d71 Minor code cleanups. 1997-10-06 00:18:30 +00:00
mark 591d03a899 Replaced by divsi3.S 1997-10-06 00:16:01 +00:00
mark d33af6fbb2 Replaces the divide routines in div.S 1997-10-06 00:15:32 +00:00
mark 5ecc353c4d Added assembly file divsi3.S 1997-10-06 00:12:24 +00:00
mark 4e7948694a Rewritten to support new jmpbuf format describe in machine/setjmp.h.
Use magic numbers to validate the buffers on a longjmp().
Don't save/load the fp registers if SOFTFLOAT is defined.
1997-10-06 00:10:32 +00:00
mark e08cd408b1 Added PIC support where required.
Cleaned out and dead / redundant code.
1997-10-06 00:07:09 +00:00
mark 9d64c268b2 Added assembly versions of the network <-> host byte order functions. 1997-10-06 00:03:13 +00:00
mark c465276e26 Added assembly versions of the network <-> host byte order functions from
Neil Carson <neil@causality.com>
1997-10-06 00:01:08 +00:00
mark ee681780be Removed redundant .text and .align directives. 1997-10-05 23:58:24 +00:00
mark 63025a1fe6 No longer needed, so axe it. 1997-10-05 23:56:49 +00:00
is e6cb27b508 ieee.h and ldexp.c taken from the powerpc port, for the benefit of
68040 and 68060 owners.
With ``make M68040=1'' or ``make M68060=1'', we build a libc where the ldexp()
doesn't use excessive amounts of system cpu time.
Without any of those defines, the normal assembler version using FSCALE is
included, for the benefit of M68020 and M68030 users, or M68040/M68060 users
where the ldexp performance is no bottleneck.
[Its not yet worked out how to include both library versions in a binary
distribution, but you can build your own from source now if you need it.]
For details, look at PR 3105.
1997-10-02 21:47:47 +00:00
jonathan 68a9b35134 Do a .cpload if compiling with PIC.
Examining  the .so output from binutils 2.8 and 2.8.1 shows the
	li.d	$f2, 4503599627370496e0
is (incorrectly?) emitted as GP-relative loads when PIC is in effect.
1997-08-19 20:49:47 +00:00
jonathan cbb2b5d0fb Substitute Mach 3.0 kernel bcopy() which is unrolled for aligned copies. 1997-08-09 02:02:08 +00:00
jtc 9f3b240e5c Fix files using old TNF copyright notice 1997-07-30 23:50:37 +00:00
jtc 5dbbebc601 Revert last change, some folks have reported problems 1997-07-24 19:10:38 +00:00
jtc 5e436cd360 Use insn sequence found by superoptimizer to compute return value. This
avoids the relatively expensive scc and ext instructions.
1997-07-21 13:56:10 +00:00
phil b94cad931e Add missing quote (") at end of _RCSID argument. 1997-07-21 06:01:55 +00:00
thorpej 697496a1e7 Pull in __flt_rounds() prototype. 1997-07-18 05:10:02 +00:00
thorpej ef909f429a Pull in __flt_rounds() prototype. 1997-07-18 00:30:30 +00:00
kleink c5f0b6148d Fix typo from last commit: `bnlsr' vs. 'bnslr'. 1997-07-16 16:11:48 +00:00
christos 1394f01b4a RCSID fixes: Always use the NetBSD rcsid and the macro RCSID() defined in
<machine/asm.h>; Also syscalls should be protected using the SYSLIBC_SCCS
define not LIBC_SCCS
1997-07-16 14:37:13 +00:00
veego f58c16ffe9 Remove the duplicated __builtin_saveregs function.
We only need it in src/gnu/usr.bin/gcc/libgcc/libgcc2.c.
1997-07-14 21:04:43 +00:00
christos e80ba636a1 Builtin saveregs returns void *, not void. 1997-07-14 19:36:44 +00:00
christos b9af52952a Add missing prototypes. From Bernd. 1997-07-14 02:13:56 +00:00
christos 91c9c62e44 Fix RCSID's 1997-07-13 18:45:15 +00:00
christos 43d6f49e0a Add missing math.h include
Fix RCSID's
1997-07-13 18:43:18 +00:00
christos faa85c1edf Add missing math.h include.
Fix RCSID's
1997-07-13 18:42:55 +00:00
christos 24329bd304 Add missing math.h include
Fix RCSID's
1997-07-13 18:42:29 +00:00
christos f6ff6c08f8 Fix RCSID's
Add missing math.h include
1997-07-13 18:41:38 +00:00
christos 89ce8a631d Add missing math.h include
Fix RCSID's
1997-07-13 18:40:38 +00:00
christos b3bd98a5e6 Fix RCSID's
Add missing math.h include
1997-07-13 18:39:54 +00:00
christos 35abd9e88d Add missing math.h include
Fix RCSIDs
1997-07-13 18:38:28 +00:00
christos 35a5d59f7d Fix RCSID's
Add missing math.h include
1997-07-13 18:37:30 +00:00
christos 42a71b4d7b Add missing stdlib.h include 1997-07-13 18:35:25 +00:00
jonathan a70f22abe7 Back out previous revision, which is reported to break signal-handing
in the GNU awk in our tree.
Leave the change in but commented out, it may be a  ld.so problem.
1997-07-07 00:13:56 +00:00
jtc 3c3a4cdfbb Simplify how division and remainder assembly source is generated
from divrem.m4.
1997-06-21 01:42:48 +00:00
jonathan b838c4c768 Add .set noreorder/.set reorder around .cpload 1997-06-18 22:23:13 +00:00
jonathan 20a862c6ad #include <machine/machAsmDefs.h> -> #include <mips/asm.h> 1997-06-17 16:35:26 +00:00
jtc 5f28317441 Use xorl/movb instead of movzbl when loading registers before computing
the return value.
1997-05-19 23:55:00 +00:00
jtc f486d77a92 I removed the extra instructions which compute the return value in Hiroshi
Horitomo's implementation a bit too hastily.  They are required to handle
the unsigned comparison required by the standard.
1997-05-18 21:24:46 +00:00
jtc 530ba70aa3 New implementations of strcmp() and strncmp().
This code uses subb instead of cmpb to compare chars.  When they are
not equal, the function's return value is computed by sign extending
the difference.  The basic idea was contributed by Hiroshi Horitomo
<horimoto@cs-aoi.cs.sist.ac.jp> in PR #3223, but his implementation
used additional instructions to compute the return value.

Also, the series of insns used to compare one pair of characters has
been unrolled 4 times.  This helps the 680[23]0, where the cost of a
taken branch is significantly more than that of a not-taken branch.
1997-05-18 20:32:20 +00:00
jtc 8da7150a8a Fix typo 1997-05-15 16:17:20 +00:00
jtc 042efd19d5 Fixup reverse bcopy 1997-05-15 16:07:31 +00:00
jtc ca7515b48a oops, bzero -> memset 1997-05-14 18:18:44 +00:00
jtc 6391090ebf Change b{eq,ne,lt,le,gt,ge} -> j{eq,ne,lt,le,gt,ge}. 1997-05-13 19:27:21 +00:00
jtc d46e665a16 Faster versions of bcmp(), bcopy(), bzero(), and memset().
The implementation of these functions is losely based on the original
BSD code plus versions I was working on which would yeild code tuned
for a particular m68k or coldfire family cpu, code space or run time
efficiency, etc. depending on the values of various macros.

My original code was intended for use in OS-less embedded systems.
Because NetBSD can not benefit from the considerable complexity, I've
removed the extraneous preprocessor goop.  The resulting code is tuned
for the '020 - '060.  It will not function on the '000 or coldfire.
1997-05-13 19:20:58 +00:00
matthias b153a75c32 * Add correct $NetBSD$ headers everywhere.
* Remove $Id$ headers.
* Support LIB_SCCS in all files.
* Use local labels where ever possible.
* Use cpufunc.h instead of __asm__ when possible.
* Access labels with _C_LABEL and _ASM_LABEL.
* Always set errno by calling cerror.
* No more FRAME/EMARF.
* No more SVC, use SYSTRAP instead.
* Use "$Masqueraded: as XXX $" to show e.g. memcpy compiled as bcopy.
* Rewrite vfork to work even whith a "real" vfork system call.
* Make cerror take care of _REENTRANT.
1997-05-08 13:38:29 +00:00
kleink 7448a697b2 Fix typo in last commit. 1997-05-04 06:40:57 +00:00
kleink 2913a7a8a4 Consistency: distinguish between PSEUDO() and PSEUDO_NOERROR(). 1997-05-02 18:15:15 +00:00
thorpej 1f92a78982 DEFS.h is gone from here, don't copy it up to libkern. (It will be gone
from libkern soon, as well)
1997-04-25 01:04:15 +00:00
thorpej d0fed6c87d Use <machine/asm.h> 1997-04-25 00:58:41 +00:00
thorpej aa6103a33e Garbage-collect unneeded file. 1997-04-24 23:50:27 +00:00
thorpej 5ef4bdf6cf Architecture-specific bits for libc on the PowerPC. From Wolfgang
Solfrank <ws@tools.de>
1997-03-29 20:55:50 +00:00
jonathan afe4640090 Remove lint (missing END() directive) in NOERROR syscalls. 1997-03-15 08:52:16 +00:00
thorpej 952eb61ea3 Define immediate values properly for the __STDC__ preprocessor case,
from Hiroshi HORIMOTO <horimoto@cs-aoi.cs.sist.ac.jp>, PR #3222.
1997-03-08 06:32:08 +00:00
ragge 7e8687db1b ENTRY() takes two argument now, not one. 1997-02-04 18:38:21 +00:00
ragge 2663970272 ENTRY() takes two argument now, not one. 1997-02-04 18:38:17 +00:00
jtc f42ebd4897 #include <machine/asm.h> instead of "DEFS.h" 1997-01-04 03:26:18 +00:00
jtc 48030a80ae Use jCC instead of bCC, as the assembler will then use the (smaller,
faster) byte-displacement form of the instruction if the offset will
fit.  This happens to be all occurances in this case, so I could have
used bCCs.  However, a quick survey of the rest of NetBSD's m68k code
showed that jCC was used in similar cases.  I did the same to be
consistant.
1997-01-04 03:21:11 +00:00
jtc 4990f8b035 Add L prefix on local labels 1997-01-03 22:57:04 +00:00
cgd 4a6fd887f0 File which provides lint stubs for the functions defined by
machine-dependent assembly code, whose source files live in its directory.
(Not necessarily complete yet.)
1996-12-22 11:44:55 +00:00
cgd 4f47d0104d dd a bunch of files to LSRCS, which provide lint stubs for the functions
defined by machine-dependent assembly code.
1996-12-22 11:41:01 +00:00
cgd f4b5c163ef __asm rather than asm, for lint 1996-12-20 20:35:48 +00:00
jtc 11935403ef PROF -> GPROF 1996-11-30 02:31:49 +00:00
jtc 37b491a006 Add L prefix to local labels 1996-11-30 02:01:26 +00:00
jtc 0dfdcfdfde Fix typo 1996-11-19 03:15:51 +00:00
pk 3b4eca1f48 Remove reference to DEFS.h 1996-11-18 22:37:28 +00:00
pk 5ba1566c5c The code in here was just an expansion of RSYSCALL(syscall). 1996-11-18 22:35:53 +00:00
mrg 368d2cb79c update for removed DEFS.h. 1996-11-18 16:08:30 +00:00
pk 76dfffe335 Remove DEFS.h, which has been just a placeholder for a long time. 1996-11-16 20:53:13 +00:00
pk 63c8772a52 Do the `_REENTRANT' song-and-dance. 1996-11-16 20:43:07 +00:00
jtc f6f38dd61e Changed the test that determines whether or not source and destination
memory regions are "potentially overlapping" to a test that determines
that the regions are actually overlapping.  Because the code for the
overlapping case is seven instructions longer, this signifcantly
improves performance in the average case.
1996-11-12 00:50:06 +00:00
mycroft c9ec05f4b2 Treat reboot() like a normal system call. From PR 2458. 1996-11-11 13:41:08 +00:00
pk 1efc8c37b2 Flesh out the `noerror' syscall macros. 1996-11-09 19:11:17 +00:00
cgd 1ae38b6471 if _REENTRANT is defined, store the error value in (*__errno()), rather than
in errno directly, to support threads packages.
1996-11-08 00:52:46 +00:00
cgd c30a5d9842 kill "IMPORT(errno, 4)" since it is unnecessary 1996-11-08 00:51:24 +00:00
matthias 0e85514579 * Provide an ovbcopy as an alternate entrypoint for bcopy when _KERNEL is
defined.
1996-11-07 07:43:02 +00:00
matthias c6f98022c7 * Use SYSCALL_NOERROR to define SYSCALL. 1996-11-07 07:42:38 +00:00
matthias 3aa582ed1f * Delete DEFS.h from KMINCLUDES.
* Add bcopy.S, memcpy.S and memset.S to KMSRCS.
1996-11-07 07:42:29 +00:00
matthias 42f541d107 * This is no longer used. 1996-11-07 07:42:21 +00:00
jtc cbae3f00b8 Change __REENTRANT to _REENTRANT, the latter is used Solaris and I can
think of no good reason to be different.
1996-11-07 05:20:33 +00:00
jtc f1af62ef3d Changed so that when __REENTRANT is defined, cerror calls __errno()
for the address of a variable used to store the error number instead
of writing to the global errno.

In a multi-threaded program, __errno() will return a pointer to a
thread-specific variable.
1996-11-07 05:16:41 +00:00
jtc 99db2fd388 fix typo 1996-10-24 13:00:32 +00:00
jonathan a68c573b21 Rewrite from scratch. 1996-10-19 12:32:04 +00:00
jtc 41da409893 Added new macros:
SYSCALL_NOERROR(x):     Like SYSCALL except that "x" is a syscall
				that can never fail.

        RSYSCALL_NOERROR(x):    Like RSYSCALL except that "x" is a syscall
				that can never fail.

These macros simply call SYSCALL / RSYSCALL, and serve as placeholders
until an optimized implementation is done.
1996-10-19 00:25:22 +00:00
jtc 41056da8a0 Include <machine/asm.h> instead of defining our own ENTRY() macro
Changed all instances of ENTRY() to match the new calling convention
(it takes a second argument ).

Added new macros:
	SYSTRAP(x):		Expands to the code used to call syscall x.
				This is used to simplify other macros.

	SYSCALL_NOERROR(x):	Like SYSCALL except that "x" is a syscall
				that can never fail.

	RSYSCALL_NOERROR(x):	Like RSYSCALL except that "x" is a syscall
				that can never fail.
1996-10-18 19:37:48 +00:00
jtc b095d96598 Added new macros:
SYSTRAP(x):             Expands to the code used to call syscall x.
				This is used to simplify other macros.

        SYSCALL_NOERROR(x):     Like SYSCALL except that "x" is a syscall
				that can never fail.

        RSYSCALL_NOERROR(x):    Like RSYSCALL except that "x" is a syscall
				that can never fail.
1996-10-18 00:49:03 +00:00
jtc 7228c89e17 Added new macros:
SYSTRAP(x):             Expands to the code used to call syscall x.
				This is used to simplify other macros.

        SYSCALL_NOERROR(x):     Like SYSCALL except that "x" is a syscall
				that can never fail.

        RSYSCALL_NOERROR(x):    Like RSYSCALL except that "x" is a syscall
				that can never fail.
1996-10-17 22:47:14 +00:00
jtc 9d7f517756 Added new macros:
SYSTRAP(x):             Expands to the code used to call syscall x.
				This is used to simplify other macros.

        SYSCALL_NOERROR(x):     Like SYSCALL except that "x" is a syscall
				that can never fail.

        RSYSCALL_NOERROR(x):    Like RSYSCALL except that "x" is a syscall
				that can never fail.
1996-10-17 18:14:56 +00:00
cgd 55c6bc901c catch up with <machine/asm.h> changes, SYS.h changes, and the removal
of DEFS.h
1996-10-17 03:08:03 +00:00
cgd 7b8ed4c70b update for new <machine/asm.h> and generally clean up:
rename SYSCALL_NOLABEL as CALLSYS_ERROR (for consistency with CALLSYS_NOERROR
    now in asm.h), and implement it using CALLSYS_NOERROR.
reimplement SYSCALL, RSYSCALL, and PSEUDO to use the appropriate macros.
implement SYSCALL_NOERROR and RSYSCALL_NOERROR to do the same thing as
    SYSCALL and RSYSCALL, but without the error checking/handling.
1996-10-17 03:03:53 +00:00