Commit Graph

1042 Commits

Author SHA1 Message Date
matt
99ca27526b Add a method to test the compiler for things like LDREX availability,
LDRD availability, THUMB2, EABI.
2014-02-27 09:37:02 +00:00
martin
7d33c23876 Provide CAS variants for 16 and 8 bit when running with more that 1 cpu 2014-02-24 17:18:27 +00:00
martin
a9af946581 Provide cas_16 and cas_8 emulation via cas_32 and use that for mips64 2014-02-24 16:15:43 +00:00
martin
acddc8c970 Remove misplaced #endif 2014-02-23 07:43:38 +00:00
martin
0bc3e372de Missed one __sync_* op (or gcc4.8 does inline it, while 4.5 does not?) 2014-02-22 17:16:12 +00:00
martin
b290679a78 Try to hide the C runtime implementation specific __sync_* ops from librump,
to avoid duplicates.
2014-02-22 17:08:30 +00:00
martin
a41f5c9de6 Add missing __sunc_* ops for sun2 2014-02-22 14:51:34 +00:00
martin
1e4743d51f Add missing __sync_* ops to libc 2014-02-22 12:12:30 +00:00
skrll
ee0ea75254 Add the missing __sync_* ops to libc 2014-02-22 10:23:24 +00:00
martin
fc2fa9ee78 Add the missing __sync_* ops to libc 2014-02-22 08:53:33 +00:00
skrll
685e258fc7 Another layout change 2014-02-22 08:24:27 +00:00
skrll
59b3381179 Layout changes - no functional change. 2014-02-22 08:21:03 +00:00
martin
7c40818eed Move the __sync_* ops added in the previous change to a libc-only section 2014-02-22 08:08:56 +00:00
martin
6868f31bc9 Provide the missing __sync_* ops for earlier arm versions 2014-02-21 21:54:38 +00:00
martin
c2b8beffc9 Provide all __sync_* ops in libc. 2014-02-21 19:05:33 +00:00
martin
dd367c0e94 Provide the missing __sync_* ops for sparc. 2014-02-21 16:21:02 +00:00
martin
de9cd3f918 Add a few missing namespace includes 2014-02-21 16:06:48 +00:00
martin
e39d980f88 Provide 8 and 16 bit sync ops (using 16 bit and 8 bit cas) 2014-02-21 15:51:07 +00:00
martin
181d8404c2 Fix previous: move the alias declaration outside of a #ifdef _LP64 2014-02-21 14:42:09 +00:00
martin
badf055197 Provide 32bit __sync ops based on atomic_cas_32. 2014-02-21 10:52:50 +00:00
martin
3f9f137185 Add missing __sync_lock_test_and_set_* aliases for PR lib/48601 2014-02-21 10:27:34 +00:00
martin
ce6031c29a Add missing __sync_* ops 2014-02-20 20:39:01 +00:00
martin
566b4de508 Simplify the variants returning a bool 2014-02-20 16:33:23 +00:00
martin
0ac513ac84 Add a few __sync_* and atomic functions. 2014-02-18 16:19:28 +00:00
martin
1a7bc9a039 Make the _and_fetch_8 primitives return the new value they calculated
and set - not whatever is found in memory later.
2014-02-18 13:21:04 +00:00
martin
7925d62af9 Do not include <stdbool.h> in the kernel 2014-02-18 12:23:07 +00:00
martin
7c94bf0860 Provide most missing __sync_*64 primitives for i386 2014-02-18 10:16:55 +00:00
matt
a857702bee switch to unified syntax 2014-01-30 06:39:16 +00:00
joerg
720b2586bd Include compiler-rt in libc, libm and libkern. 2014-01-29 23:37:18 +00:00
joerg
1f8490615f Kernel and standalone code uses panic() for broken code. 2014-01-29 22:29:43 +00:00
joerg
80d48117e3 Fix up the remaining __sync_* functions to build with Clang on ARM. 2014-01-29 15:59:11 +00:00
martin
25bbb5795c Fix a few more copy&pastos - now it actually builds. 2014-01-29 14:49:35 +00:00
martin
428c02d983 Fix copy&pasto 2014-01-29 14:44:32 +00:00
martin
0c99b2643b Provide _atomic_cas_{16,8}_up 2014-01-29 13:06:36 +00:00
skrll
b39a3f4728 Copyright 2014-01-29 11:34:25 +00:00
skrll
0271e6c132 Provide _atomic_cas_8_up and _atomic_cas_16_up functions 2014-01-29 11:03:04 +00:00
martin
d5d5b0e6b1 Provide _atomic_cas_8_up and _atomic_cas_16_up as assembler functions 2014-01-29 10:20:11 +00:00
joerg
8ee8f2a279 Allow building with clang.
XXX __RENAME is currently not allowed for the kernel, so use plain asm.
Clang rejects definitions of builtins, so it doesn't work without.
2014-01-28 21:47:48 +00:00
matt
96e5c530c7 fix c&p bug. 2014-01-27 20:44:29 +00:00
matt
7544d0a287 Return old 2014-01-27 20:01:50 +00:00
matt
40a93006ff Fix tpyo (add->and) 2014-01-27 18:43:07 +00:00
matt
0e4f0176c5 fix tpyos. 2014-01-27 18:36:52 +00:00
matt
f5dc673f71 Add __sync_<OP>_and_fetch_<N> aliases 2014-01-27 18:36:37 +00:00
matt
56b80ae3d6 Rework so that __sync_fetch_and_<OP>_<N> actually returns a value. 2014-01-27 18:29:47 +00:00
matt
3f7729ad00 Add __sync_fetch_and_<OP>_<N> aliases 2014-01-27 18:12:57 +00:00
matt
739e8f6504 Add __sync_fetch_and_add_8 alias 2014-01-27 18:09:51 +00:00
matt
b139333299 Add __sync_fetch_and_add_4 alias 2014-01-27 18:08:37 +00:00
matt
d9f098af4b Add _atomic_cas_16_up and _atomic_cas_8_up 2014-01-27 18:05:24 +00:00
matt
335ea84251 Add _atomic_cas_16 and _atomic_cas_8 and their aliases
__sync_val_compare_and_swap_2 & __sync_val_compare_and_swap_1
2014-01-27 18:03:44 +00:00
martin
4bb25a32b9 PR port-arm/48543: do provide __ffssi2 as strong alias (in case libgcc.a gets
not linked in) for now.
OK: skrll@
2014-01-23 11:45:46 +00:00
joerg
b8bd769d63 Include bsd.own.mk in case it hasn't been yet. 2014-01-16 11:43:49 +00:00
joerg
2356df897c Use the quad support from compiler-rt for MKLIBGCC=no. 2014-01-15 20:58:09 +00:00
apb
bfdedd98f6 Make strnlen implementation usable from src/tools/compat. 2014-01-09 11:25:11 +00:00
christos
96602b9efa make it kernel friendly. 2013-12-27 20:26:53 +00:00
christos
967db62434 kernel needs it now too. 2013-12-27 20:24:45 +00:00
joerg
0c87c94ac0 Write out register pairs for strd. 2013-12-17 01:27:21 +00:00
matt
589d55678c Fix a bug in the divby0 case. 2013-12-12 18:01:14 +00:00
joerg
aceb213538 Allow kernel code to access constant databases by moving cdbr(3) and the
required mi_vector_hash(3) into src/common.
2013-12-11 01:24:08 +00:00
skrll
cd08339278 Add __sync_synchronize alias. 2013-12-07 13:09:55 +00:00
joerg
96f5bbd28d Improve EABI handling of string functions. Most importantly, fix
__aeabi_memset, which has the arguments in the wrong order.
2013-12-02 21:21:33 +00:00
joerg
5249048f1e Fix aliases. 2013-12-02 12:20:44 +00:00
lneto
c4a02e0a12 changed lua_Number to int64_t 2013-12-02 04:39:10 +00:00
joerg
5ce8d6df3c Use explicit form of register pair operations by specifying both. 2013-11-30 21:09:11 +00:00
joerg
96195b9815 Explicitly name the register pairs. 2013-11-30 20:43:53 +00:00
joerg
d0dcd65c88 Use PLT_SYM. 2013-11-30 20:20:42 +00:00
jakllsch
0182da6369 Remove x86_64 bzero.S; which since 2009 has only contained instructions
that it should be removed in 2010.
2013-11-23 16:57:52 +00:00
matt
918e319dfb Add support for the gcc __sync builtins.
Note that these need earmv6 or later to get the ldrex/strex instructions
2013-11-08 22:42:52 +00:00
christos
4fbaa41dd1 mark variables as used 2013-11-07 17:26:13 +00:00
rmind
ecc1424a7c murmurhash2: add an optimised path for the aligned pointer case. 2013-10-26 21:06:38 +00:00
christos
7c7c6fd125 remove unused 2013-10-20 21:16:54 +00:00
martin
5fb50cc6c4 Make this compilable with gcc 4.8.1 without options DIAGNOSTIC. 2013-10-18 18:26:20 +00:00
skrll
d3b6b7a500 More (stylistic) whitespace. 2013-09-30 13:07:51 +00:00
skrll
fff36bdac8 Appease new gas 2013-09-30 12:31:27 +00:00
joerg
4d12bfcd15 Pass PICFLAGS down to cc-as-as and use __PIC__ to decide if it is small
vs big PIC mode. Retire -DPIC and -DBIGPIC.
2013-09-12 15:36:14 +00:00
matt
47c1ea4ca3 Remove movw/movt due to linker problems.
Check for 0 divisor and __aeabi_idiv0 if needed (EABI && _LIBC only).
2013-09-09 07:33:54 +00:00
matt
4e222a409b s/__libc/_libc/ 2013-09-09 00:34:10 +00:00
matt
0e3a78e197 Support using hwdiv instructions if those are available.
But only for EABI.
2013-09-08 13:24:16 +00:00
chs
18ec38ea7c switch to ELF naming for local labels. 2013-09-07 19:06:29 +00:00
matt
ca7975ae61 Use __ARM_EABI__ and new __UNWIND_TABLES__ to decide when to use .cfi ops 2013-09-05 05:15:47 +00:00
riastradh
3db7caeeb3 Comment on possible data-dependent branch in `!res'. 2013-08-28 19:31:14 +00:00
riastradh
1239c2bb08 Publish explicit_memset and consttime_memequal in userland libc.
Remove the double-underscore from the userland versions, and do the
weak alias dance instead, now that these are public parts of libc.

As discussed on tech-userlevel:

https://mail-index.netbsd.org/tech-userlevel/2013/06/24/msg007843.html
(option 3)
2013-08-28 17:47:07 +00:00
riastradh
495fdb7e9a Make explicit_memset match memset's return value. 2013-08-28 15:46:23 +00:00
riastradh
cc79193075 Fix sense of consttime_memequal and update all callers.
Now it returns true (nonzero) to mean equal and false (zero) to mean
inequal, as the name suggests.

As promised on tech-userlevel back in June:

https://mail-index.netbsd.org/tech-userlevel/2013/06/24/msg007843.html
2013-08-28 15:24:41 +00:00
matt
5fa3a11dc7 move a misplaced #endif 2013-08-25 06:15:06 +00:00
matt
3202e91ce2 Don't include .cfi info if _KERNEL || _STANDALONE 2013-08-22 19:25:00 +00:00
matt
879bc2893e Use __section(".test.startup") for the init routines 2013-08-21 03:00:56 +00:00
matt
afb7a3b050 write of final NUL in strlcpy doesn't need to be post-incremented 2013-08-20 21:37:39 +00:00
matt
61e4023f77 If compiling standalone with Thumb, use the thumb version instead of the
naive version.
2013-08-20 21:35:24 +00:00
matt
bb45e513c6 Thumb versions of strcpy/strlcpy/strncpy 2013-08-20 21:32:50 +00:00
matt
e61510c225 strlcat_arm.S is smaller than strlcat_naive.S so always use it. 2013-08-20 21:08:54 +00:00
matt
1a52a42b91 Add a missing it gt before movgt for thumb 2013-08-20 16:34:47 +00:00
matt
59eed4d06e Use the arm versions of strnlen if compiling thumb2 2013-08-20 08:08:59 +00:00
matt
04d357d985 Use the arm versions of strlen/strchr/strrchr if compiling thumb2 2013-08-20 08:07:30 +00:00
matt
7477ad6ac7 thumbify (part2) 2013-08-20 08:06:30 +00:00
matt
b628072a9d swap r1 & ip
use adds, eors, etc.
teq -> cmp
2013-08-20 08:05:49 +00:00
matt
7eb7e9aa67 Push two registers to keep stack aligned. 2013-08-20 07:52:31 +00:00
matt
3444a5b35b Unless we are using an XSCALE, default to the normal arm version of memcpy. 2013-08-20 07:25:52 +00:00
matt
4ca1b3cb84 Add two thumb2 bits. 2013-08-19 17:50:04 +00:00
matt
c2b4a072b1 Missing one teq -> cmp 2013-08-19 17:41:47 +00:00
matt
5df59dfb3f Swap use of r1 and ip
teq -> cmp.
add s to few instructions
(thumbify part 1)
2013-08-19 17:38:47 +00:00
matt
ddea6e9586 cbnz/cbz can not branch backwards so nuke 'em.
Use the same register usage in strlen as in strnlen
2013-08-19 17:02:25 +00:00
matt
3d4b320a67 Add END() 2013-08-19 06:23:59 +00:00
matt
5958fbf1be fix cfi_register -> cfi_offset 2013-08-19 06:11:20 +00:00
matt
1045cebc5a Rework to allow thumb armv7 compilation.
Add atomic_simplelock.c for thumb
2013-08-19 03:55:12 +00:00
matt
578c0a5078 Thumbify (and use .cfi ops) 2013-08-19 03:54:15 +00:00
matt
556b3d5814 thumbify
add .cfi ops (for thumb)
2013-08-19 03:51:04 +00:00
matt
3302b194a2 This is ARM only 2013-08-19 03:47:06 +00:00
matt
14ba29f9a7 Add thumb version
Use STRONG_ALIAS
2013-08-19 03:44:47 +00:00
matt
a546978def Use STRONG_ALIAS
Add thumb variation
2013-08-19 03:44:18 +00:00
matt
d2610c9da2 Add .cfi ops
Thumbify
2013-08-19 03:43:07 +00:00
matt
eeddcf15a5 Add cfi ops.
Thumbify
2013-08-19 03:27:34 +00:00
matt
4f50540e20 Add END() and clarify thumb/arm 2013-08-19 02:55:19 +00:00
matt
d0a4289725 Thumbify 2013-08-19 02:54:02 +00:00
matt
70e4c7e047 Add END() 2013-08-19 02:37:12 +00:00
matt
de1d51c4ce Thumbify 2013-08-19 02:36:27 +00:00
matt
f66bbc4e80 ip -> r2
teq -> cmp
2013-08-19 02:24:09 +00:00
matt
7ed75e50a6 Thumbify 2013-08-19 02:22:25 +00:00
matt
d3ce3f542d ip -> r2
teq -> cmp
2013-08-19 02:20:06 +00:00
matt
8ba242506b Thumbify 2013-08-19 02:13:13 +00:00
matt
414db3a8ba Use ip as a temporary 2013-08-19 02:11:03 +00:00
matt
0b070291c7 Change previous use of r2 to r3 2013-08-19 02:08:41 +00:00
matt
ad93040ca6 teq -> cmp
ip -> r2
add/sub -> adds/subs
(thumbify part 1)
2013-08-19 02:07:22 +00:00
matt
4373b1a3d8 For EABI, add .cfi ops 2013-08-19 01:17:32 +00:00
matt
9dae71ed91 Add .cfi for __ARM_EABI__
Thumbify
2013-08-19 01:12:08 +00:00
matt
b4e387d260 Add END(memcpy) 2013-08-19 01:08:53 +00:00
matt
c2438985ca For Thumb, use naive version 2013-08-19 01:08:29 +00:00
matt
f37c7d04a2 Thumbify 2013-08-19 00:56:12 +00:00
matt
4640cf4296 Add .cfi ops if EABI.
Thumbify.
2013-08-19 00:36:29 +00:00
matt
dcdd476662 Thumbify 2013-08-19 00:35:06 +00:00
matt
034de21d59 Add a hidden version for libpthread. 2013-08-16 01:47:41 +00:00
matt
48a3833972 When compiling for Thumb1, the swp instruction is not availble. So this
stub is added to provide __cpu_simple_lock and __cpu_simple_lock_try via
thumb interwork support.  It is compiled with -mno-thumb.
2013-08-15 22:42:50 +00:00
matt
f376e753f4 Only assemble if !__ARM_EABI__ 2013-08-15 21:40:11 +00:00
matt
c4948bca36 Use mvnge AHI, #0x80000000 instead of mvnge AHI, ALO, lsr #1 2013-08-13 15:52:00 +00:00
matt
1271d298bd 0x800000000 -> 0x80000000 (one too many zeroes) 2013-08-13 15:46:31 +00:00
matt
11f1fec6ba Fix movlt 2013-08-13 15:45:30 +00:00
matt
85779a4007 andlt -> movlt 2013-08-13 15:44:35 +00:00
matt
47ead0f271 Convert some more conditional instructions to unified syntax 2013-08-11 05:02:35 +00:00
matt
a1a64bab57 Switch to unified syntax
use RET/RETc
use push/pop
2013-08-11 04:56:32 +00:00
matt
c111670598 Use foo{s} since it reduces the ifdefs for thumb 2013-08-11 04:41:17 +00:00
matt
d650209479 Make these under Thumb2 2013-08-10 19:59:21 +00:00
matt
8f8ed13c79 Never modify NLO/NHI (r2,r3) only LO/HI (r0,r1) so subsequent loops will work. 2013-08-10 19:02:22 +00:00
matt
d86c65aadb Use r2 instead of ip 2013-08-10 18:45:12 +00:00
matt
b8284f6dcd Use subs/sbc
Use push/pop
Don't adjust return for atomic_dec_64 since it's void and returns nothing
2013-08-10 18:40:19 +00:00
matt
617628a5a2 use push/pop 2013-08-10 18:39:48 +00:00
matt
8aac5a9bd0 Use push/pop 2013-08-10 18:39:25 +00:00
matt
fc14a14e9e use push/pop 2013-08-10 18:39:07 +00:00
matt
edb257bd2d cmpne -> cmp
Use push/pop
2013-08-10 18:38:33 +00:00
matt
d6ef347e93 Don't adjust return of atomic_inc_64 since it's void and doesn't return
anything.
2013-08-10 18:32:06 +00:00
matt
be0a794afa Fix add -> adds 2013-08-10 18:28:15 +00:00
pgoyette
b18fe62e8a Now that all of the macros are enclosed in "do { ... } while 0" we can
remove unneded parenthesization of their invocations.

OK mrg@
2013-08-08 22:18:20 +00:00
agc
148723966e Get the correct inttypes.h header, so this can build on !NetBSD. 2013-08-08 16:43:13 +00:00
mrg
1b0c094837 apply some do { ... } while (0) so that macros aren't broken,
completing the previous change.
2013-08-08 04:32:43 +00:00
pgoyette
3386094b43 The PUT* things are macros. Use { ... } to make sure they expand correctly. 2013-08-07 23:48:13 +00:00
pgoyette
a4db567a02 Fix boundary condition in multi-line format. When the '=' following a
field name exactly filled a line, the back-up logic failed and really
messed up the formatting!
2013-08-07 22:37:28 +00:00
apb
3be9df0daa If HAVE_SNPRINTB_M is defined, then do not define the snprintb() and
snprintb_m() functions.  This should allow this file to be compiled
from a tools build regardless of whether or not the host defines these
functions.
2013-08-06 22:02:50 +00:00
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