| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
can check against arm*hf*.
Notes:
svn path=/head/; revision=272369
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the oabi is still in the tree, but it is expected this will be removed
as developers work on surrounding code.
With this commit the ARM EABI is the only supported supported ABI by
FreeBSD on ARMa 32-bit processors.
X-MFC after: never
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D876
Notes:
svn path=/head/; revision=272350
|
| |
|
|
|
|
|
| |
from the latter.
Notes:
svn path=/head/; revision=265420
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This targets the existing ARMv6 and ARMv7 SoCs that contain a VFP unit.
This is an optional coprocessors may not be present in all devices, however
it appears to be in all current SoCs we support.
armv6hf targets the VFP variant of the ARM EABI and our copy of gcc is too
old to support this. Because of this there are a number of WITH/WITHOUT
options that are unsupported and must be left as the default value. The
options and their required value are:
* WITH_ARM_EABI
* WITHOUT_GCC
* WITHOUT_GNUCXX
In addition, without an external toolchain, the following need to be left
as their default:
* WITH_CLANG
* WITH_CLANG_IS_CC
As there is a different method of passing float and double values to
functions the ABI is incompatible with existing armv6 binaries. To use
this a full rebuild of world is required. Because no floating point values
are passed into the kernel an armv6 kernel with VFP enabled will work with
an armv6hf userland and vice versa.
Notes:
svn path=/head/; revision=263660
|
| |
|
|
|
|
|
|
|
|
|
|
| |
for ARM.
This is quite ugly, because it has to work around a clang bug that does not
allow built-in functions to be defined, even when they're ones that are
expected to be built as part of a library.
Reviewed by: ed
Notes:
svn path=/head/; revision=255092
|
| |
|
|
| |
Notes:
svn path=/head/; revision=251791
|
| |
|
|
| |
Notes:
svn path=/head/; revision=251784
|
| |
|
|
|
|
|
|
| |
r251524 introduced custom tailored versions for MIPS of these functions
for kernel-space code. We can just reuse them in userspace as well.
Notes:
svn path=/head/; revision=251525
|
| |
|
|
|
|
|
|
| |
This function can easily be implemented on top of the mb() macro
provided by <machine/atomic.h>.
Notes:
svn path=/head/; revision=251124
|
| |
|
|
|
|
|
|
| |
This makes these tests a bit more consistent with the tests done at the
bottom of the file.
Notes:
svn path=/head/; revision=251123
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Clang only supports atomic operations for ARMv6. For non-ARMv6, we still
need to emit these functions.
Clang's prototype for these functions slightly differs, as it is truly
based on GCC's documentation. It requires the use of signed types, but
also requires varargs. Still, we are not allowed to simply implement
this function directly. Cleverly work around this by implementing it
under a different name and using __strong_reference().
Notes:
svn path=/head/; revision=249968
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Originally we disabled libcompiler-rt on MIPS and SPARC64, because of an
issue where __clzdi2 and __ctzdi2 would cause endless recursion. This
bug has been fixed in r230021 already, but for some reason we only
switched to libcompiler-rt on SPARC64 -- not MIPS.
This means we can finally use <stdatomic.h> on all our architectures.
Notes:
svn path=/head/; revision=249702
|
| |
|
|
| |
Notes:
svn path=/head/; revision=246372
|
| |
|
|
| |
Notes:
svn path=/head/; revision=245651
|
| |
|
|
| |
Notes:
svn path=/head/; revision=245649
|
| |
|
|
| |
Notes:
svn path=/head/; revision=245643
|
| |
|
|
|
|
|
|
|
|
| |
* Don't provide clear_cache or the __sync_* functions on ARM with clang as
they are provided by clang as builtin functions.
* Tell clang it is aloud to compile some libgcc code using heinous GCC
extensions.
Notes:
svn path=/head/; revision=244382
|
| |
|
|
|
|
|
|
| |
in place allowing it to be used there and since r235388 (see also r235486)
we also have usable div/mod optimizations like libgcc has.
Notes:
svn path=/head/; revision=235487
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This version of libcompiler_rt adds support for __mulo[sdt]i4(), which
computes a multiply and its overflow flag. There are also a lot of
cleanup fixes to headers that don't really affect us.
Updating to this revision should make it a bit easier to contribute
changes back to the LLVM developers.
Notes:
svn path=/head/; revision=229135
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The built-in atomic operations are not implemented in our version of GCC
4.2 for the ARM and MIPS architectures. Instead of emitting locked
instructions, they generate calls to functions that can be implemented
in the C runtime.
Only implement the atomic operations that are used by <stdatomic.h> for
datatype sizes that are supported by atomic(9). This means that on these
architectures, we can only use atomic operations on 32-bits and 64-bits
variables, which is typically sufficient.
This makes <stdatomic.h> work on all architectures except MIPS, since
MIPS and SPARC64 still use libgcc. Converting these architectures to
libcompiler_rt is on my todo list.
Notes:
svn path=/head/; revision=228919
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It seems there have only been a small amount to the compiler-rt source
code in the mean time. I'd rather have the code in sync as much as
possible by the time we release 9.0. Changes:
- The libcompiler_rt library is now dual licensed under both the
University of Illinois "BSD-Like" license and the MIT license.
- Our local modifications for using .hidden instead of .private_extern
have been upstreamed, meaning our changes to lib/assembly.h can now be
reverted.
- A possible endless recursion in __modsi3() has been fixed.
- Support for ARM EABI has been added, but it has no effect on FreeBSD
(yet).
- The functions __udivmodsi4 and __divmodsi4 have been added.
Requested by: many, including bf@ and Pedro Giffuni
Notes:
svn path=/head/; revision=222656
|
| |
|
|
|
|
|
| |
Reviewed and tested by: nwhitehorn
Notes:
svn path=/head/; revision=217393
|
| |
|
|
|
|
|
| |
Noted by: Anonymous <swell.k gmail com>
Notes:
svn path=/head/; revision=217102
|
| |
|
|
|
|
|
|
|
|
|
| |
assembler source for libcompiler_rt as not needed executable stack. This
is done with a hammer instead of properly marking each assembly file
with section .note.GNU-stack to avoid modifying contributed source.
Discussed with: ed
Notes:
svn path=/head/; revision=217101
|
| |
|
|
|
|
|
|
|
| |
MIPS64 n64 binaries are broken with libcompiler_rt at this time.
Switch mips back to libgcc until the cause of breakage is analyzed
and fixed.
Notes:
svn path=/head/; revision=216804
|
| |
|
|
|
|
|
|
|
|
|
|
| |
I've had a report of a sparc64 system where cc1 generates illegal
instructions. We still have to diagnose this properly, but instead of
hosing all sparc64 boxes out there, fall back to libgcc to prevent more
damage.
Reported by: Florian Smeets
Notes:
svn path=/head/; revision=215185
|
| |
|
|
|
|
|
|
|
|
| |
Not doing so may cause all sorts of random libraries to expose
libcompiler_rt's functions, which should of course not be done.
Discussed with: kan, kib
Notes:
svn path=/head/; revision=215129
|
|
|
Obtained from: user/ed/compiler-rt
Notes:
svn path=/head/; revision=215125
|