Commit Graph

737 Commits

Author SHA1 Message Date
matt 8b64a4fc92 Only use MACHINE_ARCH if !_STANDALONE and CPPFLAGS/CFLAGS/CPUFLAGS don't
contain -mcpu or -march
2013-08-06 20:49:15 +00:00
matt 1240752cc0 Select ldrex/strex if ${MACHINE_ARCH:Mearmv[67]*} 2013-08-06 20:37:22 +00:00
matt cb2ad9b126 With these changes, they now produce identical binary as before the coldfire
changes.
2013-07-19 16:42:12 +00:00
matt 1d398a1789 Adjust for Coldfire 2013-07-18 22:42:50 +00:00
matt f320c653c7 invert tests ${MACHINE} != "m68000" -> ${MACHINE} == "m68k" 2013-07-18 19:49:00 +00:00
matt 65726deb61 Add END(func)
Fix some straggling %r@<eol> to (%r)
2013-07-16 23:24:18 +00:00
matt 07a0a32561 Convert to normal Motorola syntax for addressing.
%r@ -> (%r)
%r@- -> -(%r)
%r@+ -> (%r)+
%r@(n) n(%r)
etc.
No object differences.
2013-07-16 20:49:41 +00:00
uwe d399d324be Use "unsigned int" instead of "u_int" to make it easier to steal.
u_int is out of fashion anyway...
2013-07-09 16:10:17 +00:00
matt 9137531a8c remove branch prediction hint from bdnzt 2013-07-04 20:57:59 +00:00
joerg e49f3fb2ce Don't pick up strcmp as macro from libkern.h. 2013-07-01 20:51:59 +00:00
rmind 4080fc40d9 RUMP fix: ifdef weak alias. Pointed out by martin@. 2013-06-30 12:20:32 +00:00
riastradh 82db4b9858 Replace consttime_bcmp/explicit_bzero by consttime_memequal/explicit_memset.
consttime_memequal is the same as the old consttime_bcmp.
explicit_memset is to memset as explicit_bzero was to bcmp.

Passes amd64 release and i386/ALL, but I'm sure I missed some spots,
so please let me know.
2013-06-24 04:21:19 +00:00
matt d4c5b4f6c6 Add support for __ARM_ARCH_EXT_IDIV__ which is set for those cores
with hardware divide instructions.  Note that gcc 4.5.x doesn't support
this so this is just latent.  gcc 4.7.x does.
2013-06-20 07:16:23 +00:00
christos b9d62bd6aa no need for the local defs of he enc functions; compat_defs.h provides them. 2013-06-09 19:46:56 +00:00
christos af7cd4f35f Use be{32,64}enc, suggested by joerg. 2013-06-09 02:58:58 +00:00
christos ff7cb014e8 PR/47908: Gary Grebus: SHA256_Transform and SHA512_Transform are called
by openssl with unaligned buffers. All other Transforms can handle unaligned
buffers so make these handle them too.
XXX[1]: any better fixes are welcome
XXX[2]: pullup-5, pullup-6
2013-06-07 22:40:34 +00:00
joerg e0ac190e1e Provide explicit LC_C_LOCALE accessor and drop the various NULL checks.
Provide LC_GLOBAL_LOCALE in a way that works with all locale functions.
Merge constant data used by the initial global locale and the C locale.
Drop function call layer for _current_locale() and directly return the
locale reference, not a pointer to it. Use protected access for global
variables, so that libc references can avoid the GOT overhead.
2013-05-17 12:55:56 +00:00
matt d1e50f81fb Don't worry about divide by 0 for kernel or standalone 2013-05-09 15:03:40 +00:00
skrll 6fec03973c Don't use old syntax - it breaks the build. hi matt. 2013-05-09 07:12:59 +00:00
matt 8ef5fb1f7f When using EABI, call __aeabi_{i,l}div0 when diving by 0. 2013-05-08 05:13:56 +00:00
skrll f9f1c0a469 Whitespace. 2013-05-05 19:02:22 +00:00
joerg 323be87542 Restore standalone strtol/strtoul for citrus for now. 2013-04-26 21:20:47 +00:00
skrll 2d688776a6 Fix logic inversion. 2013-04-19 05:36:16 +00:00
joerg a67fde0356 Add strtol_l and friends. Switch _citrus_bcs_strtol to use plain
strtol_l unless in tools mode. Add note to retire the BCS code on the
next libc major bump.
2013-04-16 21:44:06 +00:00
joerg c7dafd4acd Do not use isalpha here, since we explicitly only support the Portable
Character Set as base and in theory a locale could define a ASCII
control character as letter, resulting in negations. Also avoid isdigit
here to give the compiler a better chance of deciding whether an
unsigned compare or a jump table is a better option, both are very
likely better choices than the memory indirection.
2013-04-16 19:34:57 +00:00
skrll 92ee01a067 Pretty sure we don't want to change instruction set here. hi matt. 2013-04-14 17:05:11 +00:00
matt 0441393558 Fix calling of __qdivrem which the 3rd arg needs to passed on the stack. 2013-04-14 15:53:30 +00:00
christos 3e4fc0a448 Add RCSID
Fix out of date comment
2013-03-17 02:13:10 +00:00
christos 12ea7fb385 add RCSID; use clr for pattern 2013-03-17 02:12:41 +00:00
christos ca8f29b6bf Use a single copy of the source. 2013-03-17 00:42:31 +00:00
matt 213f7e6d6b #include <arm/cdefs.h> to get _ARM_ARCH_DWORD_OK 2013-02-15 22:35:39 +00:00
matt 545df5cbb8 Fix corner cases when searching for NUL. 2013-02-08 02:19:35 +00:00
matt a317dd6322 Fix typo. 2013-02-08 01:41:35 +00:00
matt 38a95c84fa orrne wants 3 registers 2013-02-07 01:20:29 +00:00
matt 59bc6bed3d Add aeabi strong aliases. 2013-01-28 06:23:44 +00:00
matt afc5014a73 Deal with an end-of-string condition properly. 2013-01-28 06:23:14 +00:00
matt b61c7ad71a Change movsne to movnes for clang. 2013-01-28 06:22:34 +00:00
matt d3d0879f20 Fix bug in detecting EOS/match on armv6+. 2013-01-26 07:49:11 +00:00
matt cd7877eb52 Add a (unused) variant of strlcat that uses strnlen and strlcpy to do the work. 2013-01-23 07:57:27 +00:00
matt d3ab69dd3b Enable ARM assembly versions of strlcat and strnlen. 2013-01-23 07:56:09 +00:00
matt e3cc29a381 Add index/rindex strong aiases. 2013-01-23 07:45:46 +00:00
matt bb2928cbda Add EABI support routines to raise SIGFPE on integer divide by 0. 2013-01-23 07:38:19 +00:00
matt 632dd00817 Add ARM assembly of strlcat which is implemented using (the ARM optimized)
strnlen and strlcpy.
2013-01-23 07:02:45 +00:00
matt 6495fd5f51 Add support for strnlen. 2013-01-23 06:59:55 +00:00
matt 24a929b8a1 Switch to using ARM assembly versions of strcat, strchr, strrchr. 2013-01-23 05:46:17 +00:00
matt caab799770 Simple version of strlcat for ARM. 2013-01-18 22:49:11 +00:00
matt 9c4e9e6f72 Add some comments to illustrate what is actually happening. 2013-01-16 21:48:56 +00:00
matt 97ca0f0675 Fix case when searching for NUL. 2013-01-15 16:52:35 +00:00
matt 7b77c34d39 Add ARM optimized version of strrchr. 2013-01-15 08:52:27 +00:00
matt d8ec06e4ef Add missing ! on str 2013-01-15 04:48:14 +00:00
matt daf6ab5d09 Add an ARM optimized version of strchr. 2013-01-15 02:04:04 +00:00
matt 1a27ca9824 Add simple/small versions of strchr/strrchr for ARM. 2013-01-15 02:03:30 +00:00
matt cb5a58cf06 Fix two typos 2013-01-14 19:15:13 +00:00
matt 4362d68f7e Add a simple version of strcat. 2013-01-14 16:36:15 +00:00
matt 962e3d9743 Add a native version of strcat which uses the optimized strlen and strcpy
routines.
2013-01-14 00:07:29 +00:00
matt 052628e406 A version of memset that can do NEON, VFP as well as normal arm instructions 2013-01-12 20:27:13 +00:00
matt f77b15e751 Back out workaround. 2013-01-10 06:52:35 +00:00
matt 14365a1730 Fix a typo in strlcpy which caused to not deal with NULs predecing the
string properly.
2013-01-10 04:51:49 +00:00
matt eb9a5f19fe Use the naive version of strlcpy until the longer one is fixed (it's still
faster than the C version).
2013-01-10 02:14:42 +00:00
matt ddfad239b3 use #if defined(xxx) instead of ifdef 2013-01-10 02:13:49 +00:00
matt 01beb558aa Add weak alias for strlcpy 2013-01-10 02:08:22 +00:00
matt 0e293547ab Use movw on armv7 to fill uppper halfword. 2013-01-09 00:01:07 +00:00
matt d8854cd184 Add a simplier version of memset which is less than 1/2 the size of the
current one.  On a Cortex-A9, this is about 15%-30% faster than the current
libc version.  This is not a trivial implementation since that was an order
magnitude slower than the existing libc version.
2013-01-08 20:15:00 +00:00
pgoyette 640316503e Add missing quote - fix build 2013-01-08 16:58:59 +00:00
matt 8eef9c1e44 Depending on _STANDALONE include the "naive" version or the normal arm version. 2013-01-08 13:21:05 +00:00
matt 67fc12d2ba Rename strlen.S and strcpy.S to strlen_arm.S and strcpy_arm.S 2013-01-08 13:17:45 +00:00
matt 94d1844298 Add simple/small versions of the str* functions. Suitable for libsa, etc. 2013-01-08 13:14:54 +00:00
matt 3ddeb9ed7e This is a working version of memcpy implemented using NEON instructions.
Still needs tuning as it is still about 15% than the non-NEON version.
2013-01-03 09:34:44 +00:00
matt 013f63afab Deal with _LIBC (aliases, etc).
Add missing #endif.
2013-01-02 15:38:03 +00:00
matt 7910d3cfb5 Rename strlen_armv6.S to strlen.S since this is no longer armv6 dependent. 2013-01-02 15:24:21 +00:00
matt daf4ca4713 Add an assembly version of strcpy/strncpy/strlcpy.
(they all use a common source with defines to determine which to build).
2013-01-02 05:54:58 +00:00
matt 44d1b59f26 Make this work on all ARMs but keep the armv6 optimizations. It as fast as
the existing strlen for small string and once strings are 8 bytes or more in
length it starts getting significantly faster.  For really long strings,
compared to the existing strlen, this uses about 1/2 of the cycles for the
non-armv6 version and about 1/3 of the cycles for the armv6 version.
2012-12-31 07:58:44 +00:00
christos 064bbf208f kill Id RCS keyword. 2012-12-29 20:08:23 +00:00
matt 1316220d88 A few slight speedups (remove one instruction from the main loop). 2012-12-29 05:36:57 +00:00
matt 51f99baf1e strlen implementation for armv6 and later. Uses clz and uqadd8 to really
speed the search for NUL.  as fast as normal strlen at about a length of
6 or 7 and 2-3 times faster starting around 10.
2012-12-28 07:10:41 +00:00
matt 780493cbdc Debug. This becomes faster than the normal strlen at about 80 characters. 2012-12-28 05:15:08 +00:00
matt 817045ffb8 Don't need to include assym.h
Add a missing comma.
2012-12-18 06:14:23 +00:00
matt e0306b2b8a Add a routine to create an up to an 128 bitmask returned
in VFP/NEON q0 starting at the rightmost bit (bit 0).
2012-12-17 00:46:14 +00:00
matt 4118c7d32d Slighly improved (can deal with all 16 bytes being non-NUL and quickly
proceed to next qword).
2012-12-15 22:23:31 +00:00
matt 91e44c6aaa Add a NEON implementation of strlen. 2012-12-15 19:26:34 +00:00
matt b54764018c Add a NEON(only) implementation of memset.
This is a work in progress.
2012-12-13 01:41:59 +00:00
matt be5ab324d6 Change __XSCALE__ to _ARM_ARCH_DWORD_OK so that any cpu with dword load/store
can use it.
2012-12-12 15:51:09 +00:00
matt e1f7fc6d5e Change __XSCALE__ to _ARM_ARCH_DWORD_OK so that any cpu with strd can use it. 2012-12-12 15:46:05 +00:00
christos c98323355a use explicit cast to pacify lint. 2012-12-07 15:41:02 +00:00
martin 3e441138b1 Provide an assembler version of _atomic_cas_up for sparc - the C code
does not compile to something usable in a RAS. See PR 38482.
2012-11-28 21:39:59 +00:00
matt d9e09e3051 Optimize. 2012-11-28 01:35:05 +00:00
matt a96852fc0d Use the armv6 rev/rev16 if armv6 or later 2012-11-27 23:57:07 +00:00
christos dae8727ffb split udivsi3 and divsi3 to fix static linking. This could be done better. 2012-10-30 12:42:13 +00:00
chs 1957a22d40 _ARCH_ARM_6 -> _ARM_ARCH_6 2012-10-29 14:09:38 +00:00
christos 91f0e20769 Split out modsi3 and umodsi3 from the divsi3 file. This is so that
we don't get re-defined symbols in libc from libgcc in static linking.
Example: cc -pthread -static main-calls-pthread-create.c
2012-10-10 02:16:54 +00:00
matt b40d79bcfb Add a ptree_mask_node_p to determine if an item is a mask node, and what
its non-mask length is.
2012-10-06 22:15:09 +00:00
matt 6e8da97cc9 Correct copyright/fix comments. 2012-09-13 00:36:12 +00:00
matt 56a54cbe85 Fix bas code, use ldr 2012-09-12 18:23:33 +00:00
matt b9b9bd8933 Add 64bit atomic ops for ARMv6+ (using ldrexd/strexd). 2012-09-11 20:51:25 +00:00
matt 36f83f6caf Add dmb/dsb instructions as required by the armv7 arch man. 2012-08-31 23:41:52 +00:00
drochner 8588929dc5 Add "consttime_bcmp" and "explicit_bzero" functions for both kernel
abd userland, as proposed on tech-security, with explicit_bzero using
a volatile function pointer as suggested by Alan Barrett.
Both do what the name says. For userland, both are prefixed by "__"
to keep them out of the user namespace.
Change some memset/memcmp uses to the new functions where it makes
sense -- these are just some examples, more to come.
2012-08-30 12:16:48 +00:00
matt 85e052c5bf Actually use the assembly version of the atomic function if compiling
for armv6 or armv7 cpus.  Use atomic_cas_ptr instead of _lock_cas so
we pick up the assembly version when it's used.
2012-08-16 16:49:10 +00:00
matt e2b9512b7a Add ARM EABI aliases to a few functions. 2012-08-06 02:31:54 +00:00
matt e525b93aa7 Change include to <arm/aeabi.h> 2012-08-06 02:15:51 +00:00
matt 08b1727f06 Add long long / unsigned long long comparision routines. These differ
from cmpdi2 in they return strcmp like values (-1, 0, 1).
2012-08-06 01:50:30 +00:00
matt 222a0a07b3 Add RCSID.
Simplify.
2012-08-05 06:34:09 +00:00
matt c5be335689 Add another ARM EABI runtime routine for
combined quotient / remainder for signed long long.
2012-08-05 06:33:51 +00:00
matt fd8b39a588 Add a routine for __aeabi_uldivmod which is just a wrapper around __qdivrem
but returns the 64-bit dividend and remainder in r0-r3.
2012-08-05 04:24:13 +00:00
matt 59f5e05f96 For __udivsi3 and __divsi3, add their EABI aliases as alternate entry
points.
2012-08-05 04:22:01 +00:00
matt e8a22c6586 Add a missing .set noreorder 2012-08-03 06:06:44 +00:00
pooka c303bcbe4c Bit-un-rot the proplib portability layer. 2012-07-27 09:10:59 +00:00
rmind 4c826f2231 ptree_find_filtered_node: make key argument const. 2012-07-15 00:16:28 +00:00
matt 84b1adeab7 Add code to protect the ptree from multiple insertions of the same node. 2012-07-14 18:16:54 +00:00
matt 87ed7965fb Don't bother testing 0 length keys since they can only have one possible value. 2012-07-13 01:15:27 +00:00
rmind 61498e07d3 ptree: add context argument. OK matt@ 2012-07-11 00:19:28 +00:00
christos d290d1674e Fix kernel compilation: no namespace.h
Fix libc RCSID protection.
Remove useless cast.
2012-07-10 17:05:38 +00:00
rmind 6461e5c133 Add weak symbol for murmurhash2. 2012-07-09 21:25:46 +00:00
rmind 5811facfd9 Shut up lint. 2012-07-08 13:42:29 +00:00
rmind ea196989a7 Add MurmurHash2 -- a non-cryptographic hash function by Austin Appleby.
The code is taken from the upstream and is in the public domain.

OK christos@
2012-07-08 01:21:11 +00:00
christos 062204d530 fix lint comment. 2012-04-07 16:28:59 +00:00
christos 834d97b095 lint knows the code is not reachable, but gcc does not. 2012-04-07 16:18:24 +00:00
christos de149fb70f bring the casts to the operands, not the operation results. 2012-03-22 15:57:29 +00:00
he 2fa47ecfcb Lint seems to prefer that we cast via (void*) and not directly to
(u_char*), so follow suit.
2012-03-21 20:02:56 +00:00
matt 567219e1d7 Remove __P usage.
Convert to C89 prototypes.
2012-03-20 16:21:41 +00:00
martin 4eb2215803 shut up lint 2012-03-17 21:40:21 +00:00
martin 9328833c03 Mark linted 2012-03-17 20:57:35 +00:00
njoly d0e00679ff Use Lk macro when dealing with URLs. While here update or remove some
dead URL links. Another part of PR/29238.
2012-03-15 22:35:02 +00:00
christos 32c2c5c3f9 don't include <sys/cdefs.h> from assembly. 2012-03-14 16:50:34 +00:00
christos a5fd370a21 Casts and type changes to fix portability issues.
- int -> size_t
- adjust width of RHS of shift
- adjust widths of types
2012-03-09 15:41:16 +00:00
apb aaa101ee8d remove trailing white space 2012-03-02 16:22:27 +00:00
apb 2953114330 Change CTASSERT to __CTASSERT (the spelling used in <sys/cdefs.h>),
include <sys/cdefs.h> so that it will be defined,
and move it to a better place.

The previous CTASSERT would never have been used because
of the ifdef.  If it had been used, it would have had
unwanted effects from being just after the "static inline"
that appears when BZERO is defined.

Also move the __RCSID to a more conventional location.
2012-03-02 16:19:15 +00:00
joerg 76acd27422 Make sure to create the right aliases. 2012-02-28 20:41:19 +00:00
dholland 7609b9bc56 Migrate one last leftover bit (used only by the kernel now) to
sys/ufs/ufs and remove the old quota headers and no-longer-used shared
code. Ok by releng.
2012-02-05 14:19:02 +00:00
dholland 4146833dd8 Remove old (5.99.48 - 5.99.62) libquota interface. 2012-02-01 17:52:07 +00:00
dholland 59b296daa7 Change the syscall API for quotas over to the new non-proplib one.
- struct vfs_quotactl_args -> struct quotactl_args
   - add sys/stdint.h to sys/quotactl.h for clean userland build
   - install sys/quotactl.h in /usr/include
   - update set lists for same
   - add new marshalling code in libquota
   - add new unmarshalling code in vfs_syscalls.c
   - discard proplib interpreter code in vfs_quotactl.c
   - add dispatching code for the 14 quotactl ops in vfs_quotactl.c
   - mark the proplib quotactl syscall obsolete
   - add a new syscall number for the new quotactl syscall
   - change the name of the syscall to __quotactl()
   - remove the decl of the old quotactl from quota/quotaprop.h
   - add a decl of the new quotactl to sys/quotactl.h
   - update the libc build
   - update ktruss
   - remove proplib marshalling code from libquota
   - update copy of syscall table in gdb ppc sources
   - hack rumphijack to accomodate new quotactl name (as I recall,
     pooka wanted such a name change to simplify something, but I
     don't really see what/how)

This change appears to require a kernel version bump for rumpish
reasons.
2012-02-01 05:34:38 +00:00
christos df956cc4ce also handle the separator after the F field. 2012-01-23 03:22:41 +00:00
christos c1260ab13f In the new format F did not print a separator as required. 2012-01-23 02:34:01 +00:00
joerg e8bec33be1 Change CMSG_SPACE and CMSG_LEN to provide Integer Constant Expressions
again. This was changed in sys/socket.h r1.51 to work around fallout
from the IPv6 aux data migration. It broke the historic ABI on some
platforms. This commit restores compatibility for netbsd32 code on such
platforms and provides a template for future changes to the CMSG_*
alignment. Revert PCC/Clang workarounds in postfix and tmux.
2012-01-20 14:08:04 +00:00
christos 488f092662 PR/45796: Evgeniy Ivanov minixfs3 support. 2012-01-16 18:46:20 +00:00
dholland 51d1d7e7c4 Rename struct ufs_quota_entry -> struct quotaval. 2011-11-25 16:55:05 +00:00
dholland c60360c18d Reshuffle decls among the quota headers so everything is in the place
it should be:
   - stuff for the proplib interface goes in <quota/quotaprop.h>
   - stuff for userlevel only goes in <quota/quota.h>
   - stuff shared between user and kernel goes in <sys/quota.h>

Note that <quota/quota.h> and <quota/quotaprop.h> are expected to be
moved or removed later on... one thing at a time.

Update include directives in other files as needed.
2011-11-20 21:43:34 +00:00
christos 28bb169a57 compile into nothing if _STANDALONE 2011-11-14 16:21:44 +00:00
christos cb23ae6f47 add netbsd id 2011-11-14 14:37:13 +00:00
christos 58214e6f51 - fix boot block building (-D_STANDALONE)
- explain why we cast.
2011-11-14 14:36:40 +00:00
christos 7569228a97 the kernel does not have util.h 2011-11-13 22:21:29 +00:00
christos fb75d15e0f Add a function to convert from a disklabel p_fstype integer to a
dkw_ptype name.
2011-11-13 21:56:53 +00:00
joerg 4041630e67 libkern.h maps memcmp, memset and strcpy to the compiler builtins on
some platforms, so make sure to #undef them first.
2011-11-08 16:52:11 +00:00
yamt d837abef06 comments 2011-11-02 13:49:43 +00:00
yamt d1036328f3 add radix_tree_empty_tagged_tree_p, a "tagged" variant of
radix_tree_empty_tree_p.
2011-10-25 14:11:27 +00:00
christos cdcc8530f0 Add a version of proc_compare that works both for kernel and userland
(and uses the same algorithm!)
2011-10-21 02:09:00 +00:00
wiz 276389fea6 Add missing Nd. 2011-10-17 09:24:54 +00:00
yamt 759124c59e - add functions to scan the tree in the reverse order
(i wonder if it's the longest function name in the tree)
- assertions
- comments
- fix and update unittest
2011-10-14 19:42:14 +00:00
yamt 11a7e56d00 unwarp a short line 2011-10-14 16:15:54 +00:00
yamt ccdce53c95 constify 2011-10-14 16:10:47 +00:00
yamt 82698115b1 fix "get_tag" result of unittest 2011-10-14 16:06:05 +00:00