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 |
|