Commit Graph

1070 Commits

Author SHA1 Message Date
justin b4bb74214e Do not build arm toolchain symbols in the rump kernel
These symbols will be provided at link time and will be
duplicate symbols in rump kernel and libc if defined.

Many have been fixed previously, but these were missed
as did not have a test.
2015-05-17 20:57:11 +00:00
christos 72b528eece Now that _PROP_ISSPACE does not include the EOF check, put the check for
EOF inside the loop. Also fix another unbounded loop that did not check for
EOF. From Mateusz Kocielski
XXX: pullup-7
2015-05-12 14:59:35 +00:00
christos 272b1fe359 Don't treat NUL (EOF) as SPACE. All the code that uses _PROP_ISSPACE() checks
explicitly for _PROP_EOF() anyway, and this can be abused to cause run beyond
the end of buffer DoS (Mateusz Kocielski)
XXX: pullup-7
2015-05-11 16:50:35 +00:00
christos ad3d79508d Limit size of xml buffer for userland requests (From Mateusz Kocielski)
XXX: pullup-7
2015-05-11 16:48:34 +00:00
christos 35d355f3ea - new test for strtoi
- namespace protection for strto{i,u}
- separate manpages for strto{i,u} from the ones for strto{u,}l
From: Kamil Rytarowski
2015-05-01 14:17:56 +00:00
riastradh 808c0b52c7 Sort includes. 2015-04-21 12:47:33 +00:00
skrll a2e01a4bd7 Use the right register in previous. Spotted by matt@ 2015-04-17 07:15:02 +00:00
skrll bbef540942 ARM ARM D7.3.2 - ensure all previous accesses are observed before
the lock is cleared
2015-04-17 07:03:40 +00:00
justin 6324ab4097 On big endian machines needs to include sys/endian.h for le32dec
Mainly affects cross builds on big endian; tested on FreeBSD mips
and Linux ppc.
2015-04-15 08:31:05 +00:00
matt 2d9adf0d04 Switch to new ABI (a0/a1 replace v0/v1) 2015-03-27 06:42:37 +00:00
justin 8f795c07a7 Don't build the __eabi_ aliases in the arm rump kernel.
These are provided by libc in userspace, so leave out of kernel
2015-03-26 13:34:51 +00:00
riastradh 5a2ca44c60 Switch to the suggested constant-time result conversion.
Not hard to find CPU/compiler combinations with branches for `!res'.

While here, make everything unsigned for good measure.
2015-03-18 20:11:35 +00:00
christos 84a48e0829 match variable names with man page (Kamil Rytarowski) 2015-01-18 17:55:22 +00:00
christos 368192c420 add strto{i,u} from Kamil Rytarowski as discussed in tech-userlevel. 2015-01-16 18:35:28 +00:00
riastradh fe3ead6a42 Introduce membar_datadep_consumer.
Discussed briefly on tech-kern without objection:

https://mail-index.netbsd.org/tech-kern/2014/11/20/msg018054.html
https://mail-index.netbsd.org/tech-kern/2015/01/07/msg018326.html
2015-01-08 22:27:17 +00:00
chs 6d40f9ff57 add a new "fo_mmap" fileops method to allow use of arbitrary uvm_objects for
mappings of file objects.  move vnode-specific details of mmap()ing a vnode
from uvm_mmap() to the new vnode-specific vn_mmap().  add new uvm_mmap_dev()
and uvm_mmap_anon() convenience functions for mapping character devices
and anonymous memory, and replace all other calls to uvm_mmap() with those.
use the new fileop in drm2 so that libdrm can use mmap() to map things
like on other platforms (instead of the ioctl that we have used so far).
2014-12-14 23:48:58 +00:00
matt f6453319ae Add atomic_c11_compare_exchange_cas_{8,16,32}.c 2014-11-20 07:07:13 +00:00
joerg 67ec38504d Provide prototypes to fix build with clang. 2014-11-04 19:56:44 +00:00
dennis f8446d6fc9 Add missing C11 atomic support functions to repair prior
build breakage.  matt@ made me do this.
2014-10-16 18:52:17 +00:00
martin be3005a074 Provide C++ 2011 <atomic> support functions for hppa and arm. 2014-10-14 07:25:05 +00:00
martin f0a1164b36 Provide <atomic> C++ 2011 support functions for mips and sh3. 2014-10-13 13:00:55 +00:00
martin 963bb46806 Move the and_{16,8}_nv sources into the right (libc only) block. 2014-10-13 12:49:59 +00:00
martin 6e3879b0c6 Add C++ 2011 <atomic> support functions. 2014-10-13 08:59:41 +00:00
martin 3f671a8ede Provide __sync_and_and_fetch_2 and __sync_and_and_fetch_1 for pre-ARMv6,
they are needed for the C++ 2011 <atomic> stuff.
2014-10-13 07:31:12 +00:00
martin 241614a4c5 Hook __atomic_compare_exchange_N into vax libc. 2014-10-12 17:53:33 +00:00
martin 2a3f84309a Provide __atomic_compare_exchange_N (as needed for the C11 2011 <atomic>
ops) via the corresponding CAS.
2014-10-12 17:51:47 +00:00
khorben 00b617c08a Look for the character to locate before checking for the NUL character
As documented in PR port-i386/49208, this fixes strchr(s, '\0'), as used by
the FAT first-stage bootloader on x86 (bootxx_msdos).
strchr(s, '\0') is otherwise equivalent to strlen(string), which would
probably look nicer in the original file, dosfs.c from libsa.

Confirmed working in qemu and on real hardware.
ok joerg@

XXX pull-up to netbsd-6 and netbsd-7
2014-09-22 20:31:56 +00:00
matt 6cf6fe02a9 New files for Userland support of UCB RISC-V (both 32-bit and 64-bit) 2014-09-19 17:36:24 +00:00
matt 6569f93208 Eliminate use of C++ keywords and don't nest struct definitions. 2014-09-05 05:19:24 +00:00
matt 27620987b8 New files for OR1K support 2014-09-03 19:34:25 +00:00
matt 8f455a577d Add __sync_val_compare_and_swap_{1,2} aliases for _atomic_cas_{8,16} 2014-09-03 19:30:47 +00:00
matt 903c030159 Remove enclosing parens on return. 2014-08-22 17:19:48 +00:00
riastradh b4d2027a4b Fix failure case in rb_tree_find_node_leq/geq.
Return NULL, not `NULL - offset'.

XXX pullup to netbsd-5, netbsd-6, netbsd-7
2014-08-22 17:17:02 +00:00
matt 11614bb2b2 MKCOMPAT fixes for when compat MACHINE_CPU != normal MACHINE_CPU 2014-08-10 23:25:49 +00:00
matt beb9c6d1b5 Preliminary files for AARCH64 (64-bit ARM) support.
Enough for a distribution build.
2014-08-10 05:47:35 +00:00
joerg 677b0f4807 Fix decoding of near CALL when address-size prefix (67h) is present.
From Wolf Ramovsky via FreeBSD.
2014-08-04 21:41:44 +00:00
joerg 5dfafbb265 Fix decoding of LEA when address-size prefix (67h) is present.
From Wolf Ramovsky via FreeBSD, loosly based on Xorg changeset f57bc0e
by Christian Zander.
2014-08-04 21:40:11 +00:00
joerg 2501b6362f Fix decoding of MOVSX. From Wolf Ramovsky via FreeBSD. 2014-08-04 19:19:02 +00:00
ryo d82036afdc fix lack of '>' pointed out in PR/48517 2014-08-02 11:19:01 +00:00
lneto 4ab4902eb2 lua: updated from 5.1 to 5.3 work3
* lua(1):
  - changed lua_Integer to intmax_t
  - updated distrib/sets/lists and etc/mtree
  - updated bsd.lua.mk
  - fixed bozohttpd (lua-bozo.c)
  - compatibilized bindings: gpio, sqlite
* lua(4):
  - removed floating-point and libc dependencies using '#ifndef _KERNEL'
  - fixed division by zero and exponentiation
  - libkern: added isalnum(), iscntrl(), isgraph(), isprint() and ispunct()
  - acpica: removed isprint() from acnetbsd.h
  - libc: moved strcspn.c, strpbrk.c and strspn.c to common
  - removed stub headers
  - compatibilized bindings: luapmf, luasystm
* reorganized luaconf.h
* updated doc/CHANGES and doc/RESPONSIBLE
2014-07-19 18:38:33 +00:00
joerg aa565dfb01 Add unused memory model argument to make GCC happy. 2014-07-06 01:19:45 +00:00
joerg 3ba4836216 Provide a basic implementation of __atomic_load_* and __atomic_store_*,
used by GCC and LLVM as backing for C11/C++11 atomics, if the hardware
is not known to have corresponding features. Include it on ARM as LLVM
and libc++ hit it when compiled for ARMv4.
2014-07-05 20:44:46 +00:00
joerg bd7dee058c Add aliases for the C11/C++11 spelling of the CAS primitives. 2014-06-28 20:18:55 +00:00
drochner 1970d452ef add a public domain notice 2014-06-24 16:39:39 +00:00
joerg 504e8e687f Add aliases for the builtins used to implement C11/C++11 atomics. 2014-06-23 21:53:45 +00:00
christos f16aa4743c update for the new function signatures of initstate/srandom 2014-06-12 20:59:46 +00:00
shm a3f6a15448 PR/48517 do not add extra '>' to string-converted value when nothing matches 2014-06-06 07:08:37 +00:00
uebayasi 19ef5b5b0b Put missing END() markers to set ELF symbol size. 2014-05-23 03:17:31 +00:00
pooka b1a03c8e0b fix build for _KERNEL 2014-05-22 16:47:31 +00:00
uebayasi 502c621104 Put missing END() markers to set ELF symbol size. 2014-05-22 15:21:13 +00:00
joerg 353aedd819 Make EHABI optional. 2014-05-06 16:02:10 +00:00
christos 57561cf1db The kernel uses 64 bit atomic ops. 2014-04-22 19:27:17 +00:00
joerg e3dae42754 Undef possible macro versions of memcpy and friends for kernel builds
too. libkern sometimes defines them to the builtins.
2014-04-16 20:39:55 +00:00
joerg a33c368664 Using bcopy/memcpy with NULL arguments is valid as long as the size is
also 0.
2014-04-14 18:18:58 +00:00
skrll 39ac7250f3 Ensure SBZ register is zero 2014-03-28 21:32:41 +00:00
christos a6e338b0d6 kill sprintf 2014-03-26 18:12:46 +00:00
jakllsch 2c56941e16 For all i386 string assembly functions that don't overlap use END() so
that symbol size information is available.
2014-03-22 19:38:46 +00:00
jakllsch 6ac3c1f4d7 For all x86_64 string assembly functions that don't overlap (i.e. every
one except memset and bzero) use END() so that symbol size information
is available.
2014-03-22 19:16:34 +00:00
riastradh 6cb10275d0 Merge riastradh-drm2 to HEAD. 2014-03-18 18:20:35 +00:00
riastradh 0766111859 Fix subword atomic_cas.
- Don't loop forever on failure.
- Don't shift away the result and return zero on success.

Evidently we lack automatic tests for these!
2014-03-09 16:19:14 +00:00
martin b6407fab71 Fix return value (typo, noticed by Nick Hudson) 2014-03-07 08:42:58 +00:00
matt 3b018d607e Use the sources in ../../arch/powerpc instead 2014-03-07 07:20:56 +00:00
matt c9642ed49c Now the sources in ../../arch/powerpc 2014-03-07 07:20:24 +00:00
matt 6dd4b41fd3 Reduce duplication.
Use beqlr to quicken returns
2014-03-07 07:17:54 +00:00
matt e70564d7d6 apcs-gnu only passes one register on the stack.
ldrd always loads little endian (low address, low register).
2014-03-05 17:20:48 +00:00
macallan 1890dda80c on 601 CPUs skip to normal memcpy if both source and destination are 32bit
aligned
2014-03-04 17:05:14 +00:00
matt ab7ecd2ca6 Don't export __sync* if _KERNEL || _STANDALONE are defined.
(except if _RUMPKERNEL is defined)
2014-03-04 16:15:28 +00:00
matt 4fa1971b77 Fix #if/#endif nesting 2014-03-04 07:01:26 +00:00
matt f2d0e50b73 fix typo. 2014-03-04 06:36:41 +00:00
matt 2e6bec6f0d Make this work with coldfire. 2014-03-04 06:15:33 +00:00
matt ab9be61dac Make this coldfire compatible 2014-03-04 04:03:49 +00:00
matt 37c6d125b7 Fix non-EABI loading of argument. Deal with endian issues.
Fixes PR/48635
2014-03-04 03:50:37 +00:00
matt 674350cab3 Add atomic_sub_64.S 2014-03-04 03:49:07 +00:00
matt 308d85879d Load new value from correct stack location in _atomic_cas_64_up 2014-03-04 03:36:24 +00:00
matt be9a2e2448 Fetch value from correct stack location. Push an even number of registers
so ldrd won't fail.
2014-03-04 03:34:22 +00:00
matt f3eefe6cf1 Use _KERNEL_OPT around #include "opt_ppcarch.h" 2014-03-03 18:55:02 +00:00
macallan a00f9ab046 on ppc601 do byte-wise copies when in _KERNEL
from scole_mail, ok matt@
2014-03-03 15:30:31 +00:00
matt d9d3fe3d18 Add atomic_cas_64 support for ARM EABI on V5TE and V5TEJ cpus.
(strd is atomic).
2014-02-27 09:39:00 +00:00
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