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 |