summaryrefslogtreecommitdiffstats
path: root/lib/libc/arch/amd64 (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* restructure libc/string + libc/arch/*/string coperation regardingderaadt2014-11-309-5/+359
| | | | | | | | | | | | | | | | (potentially) MD versions (function dependent, not filename dependent) split out memcpy/memmove/bcopy and strchr/index/strrchr/rindex Bring back amd64 .S versions And the final touch: switch all architectures temporarily to MI memcpy.c, which contains syslog + abort for overlapping copies. A nice harsh undefined behaviour. We will clean the entire userland of the remaining issues in this catagory, then switch to the optimised memcpy which skips the memmove check. I tried to cut this change into pieces, but testing each sub-step on every architecture is too time consuming and mindnumbing. ok miod
* One of these optimized stubs creates some incredibly subtle damage,deraadt2014-11-2012-391/+4
| | | | | causing as(1) to create a wrong nop-sled for text segment aligns. Revert, until it is found and fixed.
* Add amd64 assembler versions of some standard functions to libc. Thereyk2014-11-2012-4/+391
| | | | | | | | code is already used in the kernel and the files are unmodified copies from src/sys/lib/libkern/arch/amd64/. Depending on the function, this gives us some speedup in userland. ok deraadt@, no objections from miod@
* Nuke the machinery to sync libkern with libc, it's not been used in themiod2014-06-091-4/+1
| | | | | | last 15 years and there is no point to use it in the future. From Jean-Philippe Ouellet
* Apply "unifdef -D__STDC__" to libc/arch/*/SYS.hmatthew2014-06-041-11/+1
| | | | | | | | A while back, pascal@ converted our system call stubs from using "cpp | as" to "cc -x assembler-with-cpp", so there's no need to stay compatible with ancient preprocessor semantics. ok miod
* add proto for amd64 case; unify otherwisederaadt2013-11-121-2/+4
|
* Do a PC-relative relocation for _map rather than going throughmartynas2013-04-231-2/+2
| | | | | | | | | GOTPCREL. Uncovered after the binutils patch where it isn't optimized away at assembly and is forced to go through GOTPCREL. But _map is effectively a local variable. Found with cephes by guenther@. OK guenther@, kettenis@, deraadt@.
* remove lint leftovers; ok guenther@okan2012-09-042-5/+2
|
* Convert cpp | as rules in bsd.lib.mk and lib/libc/sys/Makefile.inc to pure ccpascal2012-08-2213-28/+28
| | | | | | | invocations. This allows us to use the compiler builtin define __PIC__ to check for PIC/PIEness rather than passing -DPIC. Simplifies PIE work a lot. ok matthew@, conceptually ok kurt@
* __tfork() needs to set the stack address of the new thread in the kernel,guenther2012-06-211-5/+4
| | | | | | | | | so that it can't get a signal while still running on the parent thread's stack. Also, pass in sizeof(struct __tfork) to provide forward compat when more members are added. This is an ABI change, so switch syscall numbers and bump lib majors this time. ok deraadt@ matthew@
* rely on the compiler giving us a built-in alloca. any new architecturederaadt2012-04-192-16/+1
| | | | | or compiler we use will. ok millert
* alloca.c cannot be usedderaadt2012-04-121-2/+1
|
* remove rfork(); ok guenther miodderaadt2012-04-121-44/+0
|
* Move __tfork_thread() from rthreads (libpthread) to libc so thatguenther2012-03-221-0/+94
| | | | | | it can be used for not-strictly-threading purposes ok matthew@ kurt@
* Remove assembly version of strlen from i386 and amd64, where it'smikeb2012-01-171-18/+0
| | | | | | | up to 3 times slower than the C code most of the time. This was brought up by DragonflyBSD guys initially. ok deraadt, guenther. miod will not miss it.
* Reimplement mutexes, condvars, and rwlocks to eliminate bugs,guenther2012-01-172-5/+5
| | | | | | | | | | | | | particularly the "consume the signal you just sent" hang, and putting the wait queues in userspace. Do cancellation handling in pthread_cond_*wait(), pthread_join(), and sem_wait(). Add __ prefix to thr{sleep,wakeup,exit,sigdivert}() syscalls; add 'abort" argument to thrsleep to close cancellation race; make thr{sleep,wakeup} return errno values via *retval to avoid touching userspace errno.
* Change to syscall is done, so delete an XXX commentguenther2011-10-111-5/+1
|
* Switch sigreturn() to the normal syscall entry instead of int$80.guenther2011-09-052-26/+3
| | | | | | This was done for the sigreturn call in sigcode before 5.0. ok deraadt@ for post-5.0
* Revert (leaving the complex math part alone). Some stuff is dependingmartynas2011-07-083-2/+110
| | | | | on this historical behavior; so we're stuck in this stupid situation. No cookie for me.
* Move fabs(3), frexp(3), and modf(3) to libm--nothing has been usingmartynas2011-07-083-110/+2
| | | | them in libc for a very long time. OK guenther@.
* Move __cerror to ___cerror with a weak alias so that rthreads can override it.guenther2011-04-042-3/+6
| | | | | | On mips64, also correct the name called from plain cerror to __cerror. "looks correct" miod@
* remove from gen so that lint doesn't check gen if assembly versionsmartynas2009-04-211-2/+2
| | | | are available. spotted by theo
* - ldexp implementation has issues. switch to the one from libmmartynas2009-04-191-2/+2
| | | | | | - remove frexp in hppa64, cloned from hppa - move generic ieee754 implementations of modf and ldexp to gen ok kettenis@, "looks good" millert@
* these were not neededmartynas2008-12-091-2/+1
|
* ditto frexpl and ldexplmartynas2008-12-091-1/+2
|
* - add long double signbitmartynas2008-12-096-6/+38
| | | | | | | | | | | | | - make long double versions weak aliases to double versions, on archs where long doubles are 64 bits - no need to have two finites. finite() and finitef() are non-standard 3BSD obsolete versions of isfinite. remove from libm. make them weak_alias in libc to __isfinite and __isfinitef instead. similarly make 3BSD obsolete versions of isinf, isinff, isnan, isnanf weak_aliases to C99's __isinf, __isinff, __isnan, __isnanf - bump major ok millert@
* - replace dtoa w/ David's gdtoa, version 2008-03-15martynas2008-09-0710-1/+226
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - provide proper dtoa locks - use the real strtof implementation - add strtold, __hdtoa, __hldtoa - add %a/%A support - don't lose precision in printf, don't round to double anymore - implement extended-precision versions of libc functions: fpclassify, isnan, isinf, signbit, isnormal, isfinite, now that the ieee.h is fixed - separate vax versions of strtof, and __hdtoa - add complex math support. added functions: cacos, casin, catan, ccos, csin, ctan, cacosh, casinh, catanh, ccosh, csinh, ctanh, cexp, clog, cabs, cpow, csqrt, carg, cimag, conj, cproj, creal, cacosf, casinf, catanf, ccosf, csinf, ctanf, cacoshf, casinhf, catanhf, ccoshf, csinhf, ctanhf, cexpf, clogf, cabsf, cpowf, csqrtf, cargf, cimagf, conjf, cprojf, crealf - add fdim, fmax, fmin - add log2. (adapted implementation e_log.c. could be more acruate & faster, but it's good enough for now) - remove wrappers & cruft in libm, supposed to work-around mistakes in SVID, etc.; use ieee versions. fixes issues in python 2.6 for djm@ - make _digittoint static - proper definitions for i386, and amd64 in ieee.h - sh, powerpc don't really have extended-precision - add missing definitions for mips64 (quad), m{6,8}k (96-bit) float.h for LDBL_* - merge lead to frac for m{6,8}k, for gdtoa to work properly - add FRAC*BITS & EXT_TO_ARRAY32 definitions in ieee.h, for hdtoa&ldtoa to use - add EXT_IMPLICIT_NBIT definition, which indicates implicit normalization bit - add regression tests for libc: fpclassify and printf - arith.h & gd_qnan.h definitions - update ieee.h: hppa doesn't have quad-precision, hppa64 does - add missing prototypes to gdtoaimp - on 64-bit platforms make sure gdtoa doesn't use a long when it really wants an int - etc., what i may have forgotten... - bump libm major, due to removed&changed symbols - no libc bump, since this is riding on djm's libc major crank from a day ago discussed with / requested by / testing theo, sthen@, djm@, jsg@, merdely@, jsing@, tedu@, brad@, jakemsr@, and others. looks good to millert@ parts of the diff ok kettenis@ this commit does not include: - man page changes
* - move isinf, isnan dups to gen, since most is ieee 754martynas2008-07-244-97/+12
| | | | | | | | | | | | | | | | - is{inf,nan} should be macros for real-floating, so rename to __is{inf,nan}, per C99 - implement C99 __fpclassify(), __fpclassifyf(), __isfinite(), __isfinitef(), __isnormal(), __isnormalf(), __signbit(), __signbitf() - long functions added, but not yet enabled, till ieee.h is fixed - implement vax equivalents of the functions - reimplement isinff, isnanf in a better way, and move to libc - add qnan bytes for all archs - bump major man pages will follow ok millert@. arm bits looked over by drahn@ discussed w/ theo, who showed the right direction, to put these functions in libc
* fix some lint 'xxx used, but not defined' warnings by properly addingotto2007-05-151-1/+3
| | | | stuff to LSRCS
* The int (32bit) argument must be sign extended on the 64 bit amd64 beforedrahn2006-05-091-3/+5
| | | | the add. ok miod@, toby@. olrite mickey@
* Remove the advertising clause in the UCB license which Berkeleyjsg2005-12-1312-72/+24
| | | | | rescinded 22 July 1999. Checked by ian@ and deraadt@
* if we pull in a .S file, we must fake out the lint with a .c filederaadt2005-11-291-2/+4
| | | | | for this first cut, we will do this for alloca() using alloca.c by adding it to LSRCS
* zap rcsid.espie2005-08-074-19/+4
| | | | okay deraadt@ (tested them all)
* cleanup KMSRC (copy to libkern) list from nonexistant srcs; also noticed before by marc@ and drahn@mickey2005-06-291-3/+2
|
* Replace broken frexp() with a working one from FreeBSD. There'smillert2005-02-012-76/+2
| | | | | | no need to have a copy for each platform with ieee floating point, only vax needs a special version (which probably has similar bugs). OK and with help from otto@
* Sync with NetBSD, picking up fixes to correctly reset status bits returningkettenis2004-07-131-3/+6
| | | | | the old status bits. ok deraadt@
* change amd64's MACHINE_ARCH from x86_64 to amd64. There are many manyderaadt2004-02-271-2/+2
| | | | | | reasons for this, quite a few of them technical, and not all of them in response to Intel's broken ia32e crud. The gcc toolchain stays at x86_64 for now.
* Define OSYSCALL* macros, as their SYSCALL* counterparts, but using themiod2004-02-222-3/+26
| | | | | | | | | int 0x80 mechanism; and use OSYSCALL for sigreturn() as done in the sigcode. Naming borrowed from NetBSD. ok deraadt@
* errno is int, not long; tracked down by otto@miod2004-02-181-4/+4
| | | | ok deraadt@
* correct syscall() stub; fixes perl and vi.recoverderaadt2004-02-111-2/+3
|
* Fix PIC cerror. ok miod@ mickey@drahn2004-02-101-2/+3
|
* CURBRK -> __curbrk changes from mickey, minbrk addition by me, ok mickey@drahn2004-02-102-12/+14
|
* correct function names, ok deraadt@drahn2004-02-103-6/+6
|
* masks are only 32 bits on openbsdderaadt2004-02-091-2/+2
|
* do signal blocking before saving registersderaadt2004-02-092-23/+23
|
* 16 byte align for performance, as on other architecturesderaadt2004-02-081-2/+4
|
* from freebsd, helps awk too:deraadt2004-02-081-2/+2
| | | | | Fix fabs(). This commit brought to you by the letter 'l'. (fstp stores a mem32 value, fstpl stores a mem64 value)
* from freebsd (and appears to make our awk work better)deraadt2004-02-081-17/+14
| | | | | | Tidy up modf.S and make it actually work. It wasn't extracting the value out of ST(0) before copying it to %xmm0. Also remove bogus stack frame and work in the red zone.
* make old & new SYSENTRY macrosderaadt2004-02-061-7/+12
|
* things for amd64; from art@mickey2004-01-2841-0/+1846