Commit Graph

18 Commits

Author SHA1 Message Date
Andrew Turner
94098ab7c3 Remove brk and sbrk from arm64. They were defined in The Single UNIX
Specification, Version 2, but marked as legacy, and have been removed from
later specifications. After 12 years it is time to remove them from new
architectures when the main use for sbrk is an invalid method to attempt
to find how much memory has been allocated from malloc.

There are a few places in the tree that still call sbrk, however they are
not used on arm64. They will need to be fixed to cross build from arm64,
but these will be fixed in a follow up commit.

Old copies of binutils from ports called into sbrk, however this has been
fixed around 6 weeks ago. It is advised to update binutils on arm64 before
installing a world that includes this change.

Reviewed by:	brooks, emaste
Obtained from:	brooks
Relnotes:	yes
Sponsored by:	ABT Systems Ltd
Differential Revision:	https://reviews.freebsd.org/D6464
2016-05-20 15:04:48 +00:00
Ed Maste
7481f0978a arm64 libc: hide .cerror, .curbrk, .minbrk for WITHOUT_SYMVER
When symver is in use these are hidden because they're not listed in
the Symbol.map. Add an explicit .hidden so they are also hidden in the
WITHOUT_SYMVER case.

Reviewed by:	andrew
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D5775
2016-04-14 16:32:27 +00:00
Andrew Turner
4798b7f381 Disable support for compat syscalls on arm64. These symbols were never
shipped since arm64 exists only on 11+.

Submitted by:	brooks
Reviewed by:	emaste, imp
2016-04-06 16:09:10 +00:00
Ed Maste
dae2d550d6 libc: stop exporting curbrk and minbrk in the private namespace
They are not used anywhere else in the base system and are an internal
implementation detail that does not need to be exposed.

Reviewed by:	kib
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D5728
2016-03-24 18:47:19 +00:00
Konstantin Belousov
4d22d07a07 Add support for usermode (vdso-like) gettimeofday(2) and
clock_gettime(2) on ARMv7 and ARMv8 systems which have architectural
generic timer hardware. It is similar how the RDTSC timer is used in
userspace on x86.

Fix a permission problem where generic timer access from EL0 (or
userspace on v7) was not properly initialized on APs.

For ARMv7, mark the stack non-executable. The shared page is added for
all arms (including ARMv8 64bit), and the signal trampoline code is
moved to the page.

Reviewed by:	andrew
Discussed with:	emaste, mmel
Sponsored by:	The FreeBSD Foundation
Differential revision:	https://reviews.freebsd.org/D4209
2015-12-07 12:20:26 +00:00
Craig Rodrigues
6874645fa9 Add include for declaration of _set_tp(). Eliminates -Wmissing-prototypes warnings. 2015-09-20 04:59:01 +00:00
Andrew Turner
ccee502763 Add the definitions of __infinity and __nan. 2015-08-20 13:11:52 +00:00
Andrew Turner
249d5c7acc Add support for makecontext. This supports up to 8 arguments as this
simplifies the code, these can be passed in registers.

Obtained from:	ABT Systems Ltd
Sponsored by:	The FreeBSD Foundation
2015-07-10 08:36:22 +00:00
Andrew Turner
1af1dde836 Add hton and ntoh to the arm64 Symbols.map file, they exist but were not
exported.
2015-07-06 09:57:40 +00:00
Andrew Turner
74735cf188 Cleanup brk and sbrk to use the same code to find curbrk and minbrk when
both compiling for PIC and non-PIC.

Sponsored by:	ABT Systems Ltd
2015-07-02 14:54:21 +00:00
Andrew Turner
93b86b2fb0 Implement fpgetmask, it's needed by Python.
Approved by:	ABT Systems Ltd
Sponsored by:	The FreeBSD Foundation
2015-06-25 08:22:25 +00:00
Andrew Turner
bbe1d59571 Export __flt_rounds from the arm64 libc.so 2015-06-25 08:15:47 +00:00
Andrew Turner
f36c0f6257 Implement fpsetmask. Some third-party software makes use of it, for example
perl.

Obtained from:	ABT Systems Ltd
Sponsored by:	The FreeBSD Foundation
2015-06-24 16:18:58 +00:00
Andrew Turner
a998adbb90 Set the alignment of the setjmp magic values correctly. The alignment needs
to be before the lavel, otherwise an extra word may be added between the
label and the data.

Obtained from:	ABT Systems Ltd
Sponsored by:	The FReeBSD Foundation
2015-06-24 16:15:32 +00:00
Andrew Turner
cfca10c23e Set the correct register when calling sigprocmask in longjmp.
Submitted by:	Patrick Wildt <patrick@bitrig.org>
Obtained from:	drahn@bitrig.org
2015-06-06 10:28:38 +00:00
Ed Maste
e09e55dc82 Add fabs() to arm64 libc
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D2532
2015-05-14 17:12:45 +00:00
Andrew Turner
d422e6f9b5 Add the start of libc and libstand for arm64. Not all of the machine
dependent functions have been implemented, but this is enough for world.

Differential Revision:	https://reviews.freebsd.org/D2132
Reviewed by:	emaste
Sponsored by:	The FreeBSD Foundation
2015-04-07 09:52:14 +00:00
Andrew Turner
8daa81674e Start to import support for the AArch64 architecture from ARM. This change
only adds support for kernel-toolchain, however it is expected further
changes to add kernel and userland support will be committed as they are
reviewed.

As our copy of binutils is too old the devel/aarch64-binutils port needs
to be installed to pull in a linker.

To build either TARGET needs to be set to arm64, or TARGET_ARCH set to
aarch64. The latter is set so uname -p will return aarch64 as existing
third party software expects this.

Differential Revision:	https://reviews.freebsd.org/D2005
Relnotes:	Yes
Sponsored by:	The FreeBSD Foundation
2015-03-19 13:53:47 +00:00