Module Name: src
Committed By: matt
Date: Sun Aug 10 05:57:31 UTC 2014
Modified Files:
src/external/gpl3/binutils/dist/bfd: config.bfd
src/external/gpl3/binutils/dist/gas: configure.tgt
src/external/gpl3/binutils/dist/ld: Makefile.am Makefile.in
configure.tgt
src/external/gpl3/binutils/dist/ld/emulparams: armelf_nbsd.sh
armelf_nbsd_eabi.sh armelf_nbsd_eabihf.sh
src/external/gpl3/gdb/dist/bfd: config.bfd
src/external/gpl3/gdb/dist/gdb: configure.tgt
src/include: fenv.h
src/lib/libc/compiler_rt: Makefile.inc
src/lib/libc/rpc: xdr_float.c
src/lib/libc/softfloat: softfloat-specialize
src/lib/libc/stdlib: jemalloc.c
src/lib/libm: Makefile
src/libexec/ld.elf_so: Makefile
src/sbin/disklabel: main.c
src/share/mk: bsd.endian.mk bsd.klinks.mk bsd.own.mk bsd.sys.mk sys.mk
src/sys/arch: Makefile
src/sys/lib/libkern: Makefile.compiler-rt
src/sys/lib/libunwind: Registers.hpp unwind_registers.S
src/sys/modules: Makefile
src/sys/sys: aout_mids.h
src/tests/lib/libc/gen: Makefile
src/tools: Makefile headerlist
Log Message:
Changes to existing files to enable building AARCH64 userland.
evbarm64-el
This is clang only. While gcc4.8 supports aarch64, no netbsd support has
been written for aarch64 with gcc4.8.
To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/external/gpl3/binutils/dist/bfd/config.bfd
cvs rdiff -u -r1.6 -r1.7 src/external/gpl3/binutils/dist/gas/configure.tgt
cvs rdiff -u -r1.8 -r1.9 src/external/gpl3/binutils/dist/ld/Makefile.am \
src/external/gpl3/binutils/dist/ld/Makefile.in
cvs rdiff -u -r1.16 -r1.17 src/external/gpl3/binutils/dist/ld/configure.tgt
cvs rdiff -u -r1.5 -r1.6 \
src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd.sh
cvs rdiff -u -r1.6 -r1.7 \
src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd_eabi.sh
cvs rdiff -u -r1.3 -r1.4 \
src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd_eabihf.sh
cvs rdiff -u -r1.5 -r1.6 src/external/gpl3/gdb/dist/bfd/config.bfd
cvs rdiff -u -r1.6 -r1.7 src/external/gpl3/gdb/dist/gdb/configure.tgt
cvs rdiff -u -r1.9 -r1.10 src/include/fenv.h
cvs rdiff -u -r1.21 -r1.22 src/lib/libc/compiler_rt/Makefile.inc
cvs rdiff -u -r1.38 -r1.39 src/lib/libc/rpc/xdr_float.c
cvs rdiff -u -r1.8 -r1.9 src/lib/libc/softfloat/softfloat-specialize
cvs rdiff -u -r1.33 -r1.34 src/lib/libc/stdlib/jemalloc.c
cvs rdiff -u -r1.160 -r1.161 src/lib/libm/Makefile
cvs rdiff -u -r1.126 -r1.127 src/libexec/ld.elf_so/Makefile
cvs rdiff -u -r1.39 -r1.40 src/sbin/disklabel/main.c
cvs rdiff -u -r1.19 -r1.20 src/share/mk/bsd.endian.mk
cvs rdiff -u -r1.12 -r1.13 src/share/mk/bsd.klinks.mk
cvs rdiff -u -r1.826 -r1.827 src/share/mk/bsd.own.mk
cvs rdiff -u -r1.240 -r1.241 src/share/mk/bsd.sys.mk
cvs rdiff -u -r1.126 -r1.127 src/share/mk/sys.mk
cvs rdiff -u -r1.43 -r1.44 src/sys/arch/Makefile
cvs rdiff -u -r1.4 -r1.5 src/sys/lib/libkern/Makefile.compiler-rt
cvs rdiff -u -r1.16 -r1.17 src/sys/lib/libunwind/Registers.hpp
cvs rdiff -u -r1.14 -r1.15 src/sys/lib/libunwind/unwind_registers.S
cvs rdiff -u -r1.138 -r1.139 src/sys/modules/Makefile
cvs rdiff -u -r1.2 -r1.3 src/sys/sys/aout_mids.h
cvs rdiff -u -r1.40 -r1.41 src/tests/lib/libc/gen/Makefile
cvs rdiff -u -r1.176 -r1.177 src/tools/Makefile
cvs rdiff -u -r1.10 -r1.11 src/tools/headerlist
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/gpl3/binutils/dist/bfd/config.bfd
diff -u src/external/gpl3/binutils/dist/bfd/config.bfd:1.11 src/external/gpl3/binutils/dist/bfd/config.bfd:1.12
--- src/external/gpl3/binutils/dist/bfd/config.bfd:1.11 Mon Mar 10 12:01:19 2014
+++ src/external/gpl3/binutils/dist/bfd/config.bfd Sun Aug 10 05:57:30 2014
@@ -165,6 +165,16 @@ case "${targ}" in
targ_selvecs="bfd_elf64_littleaarch64_vec bfd_elf32_bigarm_vec bfd_elf32_littlearm_vec"
want64=true
;;
+ aarch64-*-netbsd*)
+ targ_defvec=bfd_elf64_littleaarch64_vec
+ targ_selvecs="bfd_elf64_bigaarch64_vec bfd_elf32_littlearm_vec bfd_elf32_bigarm_vec"
+ want64=true
+ ;;
+ aarch64_be-*-netbsd*)
+ targ_defvec=bfd_elf64_bigaarch64_vec
+ targ_selvecs="bfd_elf64_littleaarch64_vec bfd_elf32_bigarm_vec bfd_elf32_littlearm_vec"
+ want64=true
+ ;;
alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
targ_defvec=bfd_elf64_alpha_freebsd_vec
targ_selvecs="bfd_elf64_alpha_vec ecoffalpha_little_vec"
Index: src/external/gpl3/binutils/dist/gas/configure.tgt
diff -u src/external/gpl3/binutils/dist/gas/configure.tgt:1.6 src/external/gpl3/binutils/dist/gas/configure.tgt:1.7
--- src/external/gpl3/binutils/dist/gas/configure.tgt:1.6 Mon Sep 30 16:16:31 2013
+++ src/external/gpl3/binutils/dist/gas/configure.tgt Sun Aug 10 05:57:30 2014
@@ -100,6 +100,7 @@ generic_target=${cpu_type}-$vendor-$os
case ${generic_target} in
aarch64*-*-elf) fmt=elf;;
aarch64*-*-linux*) fmt=elf em=linux ;;
+ aarch64*-*-netbsd*) fmt=elf em=nbsd ;;
alpha-*-*vms*) fmt=evax ;;
alpha-*-osf*) fmt=ecoff ;;
Index: src/external/gpl3/binutils/dist/ld/Makefile.am
diff -u src/external/gpl3/binutils/dist/ld/Makefile.am:1.8 src/external/gpl3/binutils/dist/ld/Makefile.am:1.9
--- src/external/gpl3/binutils/dist/ld/Makefile.am:1.8 Fri Mar 7 04:13:46 2014
+++ src/external/gpl3/binutils/dist/ld/Makefile.am Sun Aug 10 05:57:30 2014
@@ -474,6 +474,8 @@ ALL_64_EMULATION_SOURCES = \
eaarch64elfb.c \
eaarch64linux.c \
eaarch64linuxb.c \
+ eaarch64nbsd.c \
+ eaarch64nbsdb.c \
eelf32_x86_64.c \
eelf32_x86_64_nacl.c \
eelf64_aix.c \
@@ -1777,6 +1779,14 @@ eaarch64linuxb.c: $(srcdir)/emulparams/a
$(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} aarch64linuxb "$(tdir_aarch64linuxb)"
+eaarch64nbsd.c: $(srcdir)/emulparams/aarch64nbsd.sh \
+ $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} aarch64nbsd "$(tdir_aarch64nbsd)"
+eaarch64nbsdb.c: $(srcdir)/emulparams/aarch64nbsdb.sh $(srcdir)/emulparams/aarch64nbsd.sh \
+ $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} aarch64nbsdb "$(tdir_aarch64nbsdb)"
eor32.c: $(srcdir)/emulparams/or32.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/or32.sc ${GEN_DEPENDS}
${GENSCRIPTS} or32 "$(tdir_or32)"
Index: src/external/gpl3/binutils/dist/ld/Makefile.in
diff -u src/external/gpl3/binutils/dist/ld/Makefile.in:1.8 src/external/gpl3/binutils/dist/ld/Makefile.in:1.9
--- src/external/gpl3/binutils/dist/ld/Makefile.in:1.8 Fri Mar 7 04:13:46 2014
+++ src/external/gpl3/binutils/dist/ld/Makefile.in Sun Aug 10 05:57:30 2014
@@ -780,6 +780,8 @@ ALL_64_EMULATION_SOURCES = \
eaarch64elfb.c \
eaarch64linux.c \
eaarch64linuxb.c \
+ eaarch64nbsd.c \
+ eaarch64nbsdb.c \
eelf32_x86_64.c \
eelf32_x86_64_nacl.c \
eelf64_aix.c \
@@ -1065,6 +1067,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64elfb.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64linux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64linuxb.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64nbsd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64nbsdb.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaix5ppc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaix5rs6.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaixppc.Po@am__quote@
@@ -3255,6 +3259,14 @@ eaarch64linuxb.c: $(srcdir)/emulparams/a
$(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} aarch64linuxb "$(tdir_aarch64linuxb)"
+eaarch64nbsd.c: $(srcdir)/emulparams/aarch64nbsd.sh \
+ $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} aarch64nbsd "$(tdir_aarch64nbsd)"
+eaarch64nbsdb.c: $(srcdir)/emulparams/aarch64nbsdb.sh $(srcdir)/emulparams/aarch64nbsd.sh \
+ $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} aarch64nbsdb "$(tdir_aarch64nbsdb)"
eor32.c: $(srcdir)/emulparams/or32.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/or32.sc ${GEN_DEPENDS}
${GENSCRIPTS} or32 "$(tdir_or32)"
Index: src/external/gpl3/binutils/dist/ld/configure.tgt
diff -u src/external/gpl3/binutils/dist/ld/configure.tgt:1.16 src/external/gpl3/binutils/dist/ld/configure.tgt:1.17
--- src/external/gpl3/binutils/dist/ld/configure.tgt:1.16 Fri Mar 7 04:13:46 2014
+++ src/external/gpl3/binutils/dist/ld/configure.tgt Sun Aug 10 05:57:30 2014
@@ -35,6 +35,10 @@ aarch64_be-*-linux*) targ_emul=aarch64li
targ_extra_emuls="aarch64linux aarch64elfb aarch64elf armelfb_linux_eabi armelf_linux_eabi armelfb armelf" ;;
aarch64-*-linux*) targ_emul=aarch64linux
targ_extra_emuls="aarch64linuxb aarch64elf aarch64elfb armelf_linux_eabi armelfb_linux_eabi armelf armelfb" ;;
+aarch64_be-*-netbsd*) targ_emul=aarch64nbsdb
+ targ_extra_emuls="aarch64nbsd aarch64elfb aarch64elf armelfb_nbsd_eabihf armelf_nbsd_eabihf armelfb_nbsd_eabi armelf_nbsd_eabi armelfb_nbsd armelf_nbsd armelf armelfb" ;;
+aarch64-*-netbsd*) targ_emul=aarch64nbsd
+ targ_extra_emuls="aarch64nbsdb aarch64elf aarch64elfb armelf_nbsd_eabihf armelfb_nbsd_eabihf armelf_nbsd_eabi armelfb_nbsd_eabi armelf_nbsd armelfb_nbsd armelf armelfb" ;;
alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
targ_emul=elf64alpha_fbsd
targ_extra_emuls="elf64alpha alpha"
Index: src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd.sh
diff -u src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd.sh:1.5 src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd.sh:1.6
--- src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd.sh:1.5 Thu Jun 26 22:55:23 2014
+++ src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd.sh Sun Aug 10 05:57:30 2014
@@ -8,7 +8,7 @@ unset STACK_ADDR
unset EMBEDDED
case "$target" in
- arm*-*-netbsdelf*-*eabi*)
+ aarch64*-*-netbsd* | arm*-*-netbsdelf*-*eabi*)
LIB_PATH='=/usr/lib/oabi'
;;
esac
Index: src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd_eabi.sh
diff -u src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd_eabi.sh:1.6 src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd_eabi.sh:1.7
--- src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd_eabi.sh:1.6 Thu Feb 6 18:28:28 2014
+++ src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd_eabi.sh Sun Aug 10 05:57:30 2014
@@ -14,7 +14,7 @@ case "$target" in
arm*-*-netbsdelf*-*eabi*)
LIB_PATH='=/usr/lib'
;;
- arm*-*-netbsdelf*)
+ aarch64*-*-netbsd* | arm*-*-netbsdelf*)
LIB_PATH='=/usr/lib/eabi'
;;
esac
Index: src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd_eabihf.sh
diff -u src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd_eabihf.sh:1.3 src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd_eabihf.sh:1.4
--- src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd_eabihf.sh:1.3 Thu Feb 6 18:28:28 2014
+++ src/external/gpl3/binutils/dist/ld/emulparams/armelf_nbsd_eabihf.sh Sun Aug 10 05:57:30 2014
@@ -11,7 +11,7 @@ case "$target" in
arm*-*-netbsdelf*-*eabihf*)
LIB_PATH='=/usr/lib'
;;
- arm*-*-netbsdelf*)
+ aarch64*-*-netbsd* | arm*-*-netbsdelf*)
LIB_PATH='=/usr/lib/eabihf'
;;
esac
Index: src/external/gpl3/gdb/dist/bfd/config.bfd
diff -u src/external/gpl3/gdb/dist/bfd/config.bfd:1.5 src/external/gpl3/gdb/dist/bfd/config.bfd:1.6
--- src/external/gpl3/gdb/dist/bfd/config.bfd:1.5 Sun Jun 22 23:52:57 2014
+++ src/external/gpl3/gdb/dist/bfd/config.bfd Sun Aug 10 05:57:30 2014
@@ -184,6 +184,16 @@ case "${targ}" in
targ_selvecs="bfd_elf64_littleaarch64_vec bfd_elf32_littleaarch64_vec bfd_elf32_bigaarch64_vec bfd_elf32_bigarm_vec bfd_elf32_littlearm_vec"
want64=true
;;
+ aarch64-*-netbsd*)
+ targ_defvec=bfd_elf64_littleaarch64_vec
+ targ_selvecs="bfd_elf64_bigaarch64_vec bfd_elf32_littlearm_vec bfd_elf32_bigarm_vec"
+ want64=true
+ ;;
+ aarch64_be-*-netbsd*)
+ targ_defvec=bfd_elf64_bigaarch64_vec
+ targ_selvecs="bfd_elf64_littleaarch64_vec bfd_elf32_bigarm_vec bfd_elf32_littlearm_vec"
+ want64=true
+ ;;
alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
targ_defvec=bfd_elf64_alpha_freebsd_vec
targ_selvecs="bfd_elf64_alpha_vec ecoffalpha_little_vec"
Index: src/external/gpl3/gdb/dist/gdb/configure.tgt
diff -u src/external/gpl3/gdb/dist/gdb/configure.tgt:1.6 src/external/gpl3/gdb/dist/gdb/configure.tgt:1.7
--- src/external/gpl3/gdb/dist/gdb/configure.tgt:1.6 Sun Jun 22 23:52:57 2014
+++ src/external/gpl3/gdb/dist/gdb/configure.tgt Sun Aug 10 05:57:30 2014
@@ -45,6 +45,12 @@ aarch64*-*-linux*)
build_gdbserver=yes
;;
+aarch64*-*-netbsd*)
+ # Target: AArch64 NetBSD
+ #gdb_target_obs="aarch64-tdep.o aarch64-netbsd-tdep.o"
+ gdb_target_obs="aarch64-tdep.o"
+ ;;
+
alpha*-*-osf*)
# Target: Little-endian Alpha running OSF/1
gdb_target_obs="alpha-tdep.o alpha-osf1-tdep.o alpha-mdebug-tdep.o"
Index: src/include/fenv.h
diff -u src/include/fenv.h:1.9 src/include/fenv.h:1.10
--- src/include/fenv.h:1.9 Sun Apr 28 21:07:36 2013
+++ src/include/fenv.h Sun Aug 10 05:57:30 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: fenv.h,v 1.9 2013/04/28 21:07:36 matt Exp $ */
+/* $NetBSD: fenv.h,v 1.10 2014/08/10 05:57:30 matt Exp $ */
/*
* Copyright (c) 2010 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -25,7 +25,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
-#if !defined(__arm__) && !defined(__i386__) \
+#if !defined(__aarch64__) && !defined(__arm__) && !defined(__i386__) \
&& !defined(__sparc__) && !defined(__x86_64__)
#error "fenv.h is currently not supported for this architecture"
#endif
Index: src/lib/libc/compiler_rt/Makefile.inc
diff -u src/lib/libc/compiler_rt/Makefile.inc:1.21 src/lib/libc/compiler_rt/Makefile.inc:1.22
--- src/lib/libc/compiler_rt/Makefile.inc:1.21 Mon Jul 14 07:55:26 2014
+++ src/lib/libc/compiler_rt/Makefile.inc Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.inc,v 1.21 2014/07/14 07:55:26 joerg Exp $
+# $NetBSD: Makefile.inc,v 1.22 2014/08/10 05:57:31 matt Exp $
COMPILER_RT_SRCDIR= ${NETBSDSRCDIR}/sys/external/bsd/compiler_rt/dist
@@ -63,43 +63,28 @@ GENERIC_SRCS+= \
addvti3.c \
ashlti3.c \
ashrti3.c \
- clzsi2.c \
clzti2.c \
cmpti2.c \
- ctzsi2.c \
ctzti2.c \
- divmodsi4.c \
- divsi3.c \
divti3.c \
ffsti2.c \
fixsfdi.c \
fixdfdi.c \
fixunsdfdi.c \
fixunsdfsi.c \
- fixunsdfti.c \
fixunssfdi.c \
fixunssfsi.c \
- fixunssfti.c \
fixunsxfdi.c \
fixunsxfsi.c \
- fixunsxfti.c \
fixxfdi.c \
- fixxfti.c \
floatdidf.c \
floatdisf.c \
floatdixf.c \
- floattidf.c \
- floattisf.c \
- floattixf.c \
floatundidf.c \
floatundisf.c \
floatundixf.c \
- floatuntidf.c \
- floatuntisf.c \
- floatuntixf.c \
int_util.c \
lshrti3.c \
- modsi3.c \
modti3.c \
muldc3.c \
mulosi4.c \
@@ -123,26 +108,49 @@ GENERIC_SRCS+= \
subvsi3.c \
subvti3.c \
ucmpti2.c \
- udivmodsi4.c \
udivmodti4.c \
udivti3.c \
- umodsi3.c \
umodti3.c
-.if ${MACHINE_CPU} != "sh3"
+.if ${MACHINE_ARCH} != "aarch64"
+GENERIC_SRCS+= \
+ fixunsdfti.c \
+ fixunssfti.c \
+ fixunsxfti.c \
+ fixxfti.c \
+ floattidf.c \
+ floattisf.c \
+ floattixf.c \
+ floatuntidf.c \
+ floatuntisf.c \
+ floatuntixf.c
+.endif
+
+# These have h/w instructions which are always used.
+.if ${MACHINE_ARCH} != "alpha" && ${MACHINE_CPU} != "powerpc" \
+ && ${MACHINE_CPU} != "aarch64" && ${MACHINE_ARCH} != "vax"
+GENERIC_SRCS+= \
+ clzsi2.c \
+ ctzsi2.c \
+ divmodsi4.c \
+ divsi3.c \
+ modsi3.c \
+ udivmodsi4.c \
+ umodsi3.c
+
+. if ${MACHINE_CPU} != "sh3"
# On sh3 __udivsi3 is gcc "millicode" with special calling convention
# (less registers clobbered than usual). Each DSO that needs it gets
# its own hidden copy from libgcc.a.
GENERIC_SRCS+= \
udivsi3.c
+. endif
.endif
+
GENERIC_SRCS+= \
absvdi2.c \
addvdi3.c \
- clzdi2.c \
- ctzdi2.c \
- ffsdi2.c \
mulodi4.c \
mulvdi3.c \
negvdi2.c \
@@ -150,6 +158,16 @@ GENERIC_SRCS+= \
popcountdi2.c \
subvdi3.c
+# These have h/w instructions which are always used.
+.if ${MACHINE_ARCH} != "alpha" && ${MACHINE_CPU} != "powerpc64" \
+ && ${MACHINE_ARCH} != "aarch64"
+GENERIC_SRCS+= \
+ clzdi2.c \
+ ctzdi2.c \
+ ffsdi2.c
+.endif
+
+# Don't need these on 64-bit machines.
.if empty(LIBC_MACHINE_ARCH:M*64*) && ${LIBC_MACHINE_ARCH} != "alpha"
GENERIC_SRCS+= \
cmpdi2.c \
@@ -186,6 +204,11 @@ GENERIC_SRCS+= \
gcc_qsub.c
.endif
+.if ${MACHINE_CPU} == "aarch64"
+GENERIC_SRCS+= \
+ clear_cache.c
+.endif
+
.if ${MACHINE_CPU} == "arm"
.if !empty(LIBC_MACHINE_ARCH:Mearm*)
GENERIC_SRCS+= \
Index: src/lib/libc/rpc/xdr_float.c
diff -u src/lib/libc/rpc/xdr_float.c:1.38 src/lib/libc/rpc/xdr_float.c:1.39
--- src/lib/libc/rpc/xdr_float.c:1.38 Mon Mar 11 20:19:29 2013
+++ src/lib/libc/rpc/xdr_float.c Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: xdr_float.c,v 1.38 2013/03/11 20:19:29 tron Exp $ */
+/* $NetBSD: xdr_float.c,v 1.39 2014/08/10 05:57:31 matt Exp $ */
/*
* Copyright (c) 2010, Oracle America, Inc.
@@ -37,7 +37,7 @@
static char *sccsid = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro";
static char *sccsid = "@(#)xdr_float.c 2.1 88/07/29 4.0 RPCSRC";
#else
-__RCSID("$NetBSD: xdr_float.c,v 1.38 2013/03/11 20:19:29 tron Exp $");
+__RCSID("$NetBSD: xdr_float.c,v 1.39 2014/08/10 05:57:31 matt Exp $");
#endif
#endif
@@ -74,7 +74,8 @@ __weak_alias(xdr_float,_xdr_float)
#if defined(__m68k__) || defined(__sparc__) || defined(__i386__) || \
defined(__mips__) || defined(__ns32k__) || defined(__alpha__) || \
defined(__arm__) || defined(__powerpc__) || defined(__sh__) || \
- defined(__x86_64__) || defined(__hppa__) || defined(__ia64__)
+ defined(__x86_64__) || defined(__hppa__) || defined(__ia64__) || \
+ defined(__aarch64__)
#include <machine/endian.h>
#define IEEEFP
#endif
Index: src/lib/libc/softfloat/softfloat-specialize
diff -u src/lib/libc/softfloat/softfloat-specialize:1.8 src/lib/libc/softfloat/softfloat-specialize:1.9
--- src/lib/libc/softfloat/softfloat-specialize:1.8 Thu Jan 10 08:16:10 2013
+++ src/lib/libc/softfloat/softfloat-specialize Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: softfloat-specialize,v 1.8 2013/01/10 08:16:10 matt Exp $ */
+/* $NetBSD: softfloat-specialize,v 1.9 2014/08/10 05:57:31 matt Exp $ */
/* This is a derivative work. */
@@ -136,8 +136,10 @@ Returns 1 if the single-precision floati
NaN; otherwise returns 0.
-------------------------------------------------------------------------------
*/
-#if defined(SOFTFLOAT_FOR_GCC) && !defined(SOFTFLOATSPARC64_FOR_GCC) && \
- !defined(SOFTFLOAT_M68K_FOR_GCC)
+#if defined(SOFTFLOAT_FOR_GCC) \
+ && !defined(SOFTFLOATAARCH64_FOR_GCC) \
+ && !defined(SOFTFLOATSPARC64_FOR_GCC) \
+ && !defined(SOFTFLOATM68K_FOR_GCC)
static
#endif
flag float32_is_signaling_nan( float32 a )
@@ -236,8 +238,10 @@ Returns 1 if the double-precision floati
NaN; otherwise returns 0.
-------------------------------------------------------------------------------
*/
-#if defined(SOFTFLOAT_FOR_GCC) && !defined(SOFTFLOATSPARC64_FOR_GCC) && \
- !defined(SOFTFLOATM68K_FOR_GCC)
+#if defined(SOFTFLOAT_FOR_GCC) \
+ && !defined(SOFTFLOATAARCH64_FOR_GCC) \
+ && !defined(SOFTFLOATSPARC64_FOR_GCC) \
+ && !defined(SOFTFLOATM68K_FOR_GCC)
static
#endif
flag float64_is_signaling_nan( float64 a )
Index: src/lib/libc/stdlib/jemalloc.c
diff -u src/lib/libc/stdlib/jemalloc.c:1.33 src/lib/libc/stdlib/jemalloc.c:1.34
--- src/lib/libc/stdlib/jemalloc.c:1.33 Wed Jul 16 19:09:53 2014
+++ src/lib/libc/stdlib/jemalloc.c Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: jemalloc.c,v 1.33 2014/07/16 19:09:53 riastradh Exp $ */
+/* $NetBSD: jemalloc.c,v 1.34 2014/08/10 05:57:31 matt Exp $ */
/*-
* Copyright (C) 2006,2007 Jason Evans <[email protected]>.
@@ -118,7 +118,7 @@
#include <sys/cdefs.h>
/* __FBSDID("$FreeBSD: src/lib/libc/stdlib/malloc.c,v 1.147 2007/06/15 22:00:16 jasone Exp $"); */
-__RCSID("$NetBSD: jemalloc.c,v 1.33 2014/07/16 19:09:53 riastradh Exp $");
+__RCSID("$NetBSD: jemalloc.c,v 1.34 2014/08/10 05:57:31 matt Exp $");
#ifdef __FreeBSD__
#include "libc_private.h"
@@ -233,6 +233,11 @@ __strerror_r(int e, char *s, size_t l)
# define QUANTUM_2POW_MIN 4
# define SIZEOF_PTR_2POW 3
#endif
+#ifdef __aarch64__
+# define QUANTUM_2POW_MIN 4
+# define SIZEOF_PTR_2POW 3
+# define NO_TLS
+#endif
#ifdef __alpha__
# define QUANTUM_2POW_MIN 4
# define SIZEOF_PTR_2POW 3
Index: src/lib/libm/Makefile
diff -u src/lib/libm/Makefile:1.160 src/lib/libm/Makefile:1.161
--- src/lib/libm/Makefile:1.160 Mon Jun 16 12:54:43 2014
+++ src/lib/libm/Makefile Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.160 2014/06/16 12:54:43 joerg Exp $
+# $NetBSD: Makefile,v 1.161 2014/08/10 05:57:31 matt Exp $
#
# @(#)Makefile 5.1beta 93/09/24
#
@@ -50,7 +50,15 @@ USE_SHLIBDIR= yes
# compiler_rt uses typeof() and __extension__
LINTFLAGS += -g
-.if (${MACHINE_ARCH} == "alpha")
+.if (${MACHINE_CPU} == "aarch64")
+.PATH: ${.CURDIR}/arch/aarch64
+ARCH_SRCS = e_sqrt.S e_sqrtf.S s_fabsf.S
+ARCH_SRCS+= s_fma.S s_fmaf.S s_fmax.S s_fmaxf.S s_fmin.S s_fminf.S
+COPTS.e_sqrtl.c += -DHAVE_FENV_H
+COMMON_SRCS+= fenv.c
+COMMON_SRCS+= e_sqrtl.c
+COMMON_SRCS+= s_fma.c s_fmaf.c s_fmal.c
+.elif (${MACHINE_ARCH} == "alpha")
.PATH: ${.CURDIR}/arch/alpha
ARCH_SRCS = s_copysign.S s_copysignf.S lrint.S
COPTS+= -mfloat-ieee -mieee-with-inexact -mfp-trap-mode=sui -mtrap-precision=i
Index: src/libexec/ld.elf_so/Makefile
diff -u src/libexec/ld.elf_so/Makefile:1.126 src/libexec/ld.elf_so/Makefile:1.127
--- src/libexec/ld.elf_so/Makefile:1.126 Thu Mar 6 09:34:56 2014
+++ src/libexec/ld.elf_so/Makefile Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.126 2014/03/06 09:34:56 matt Exp $
+# $NetBSD: Makefile,v 1.127 2014/08/10 05:57:31 matt Exp $
#
# NOTE: when changing ld.so, ensure that ldd still compiles.
#
@@ -26,7 +26,8 @@ ARCHSUBDIR= ${MACHINE_CPU}
.endif
M= ${.CURDIR}/arch/${ARCHSUBDIR}
-.if ((${LDELFSO_MACHINE_ARCH} == "alpha") || \
+.if ((${MACHINE_CPU} == "aarch64") || \
+ (${LDELFSO_MACHINE_ARCH} == "alpha") || \
(${MACHINE_CPU} == "arm") || \
(${LDELFSO_MACHINE_ARCH} == "coldfire") || \
(${LDELFSO_MACHINE_ARCH} == "hppa") || \
Index: src/sbin/disklabel/main.c
diff -u src/sbin/disklabel/main.c:1.39 src/sbin/disklabel/main.c:1.40
--- src/sbin/disklabel/main.c:1.39 Tue Jul 15 20:18:30 2014
+++ src/sbin/disklabel/main.c Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.39 2014/07/15 20:18:30 joerg Exp $ */
+/* $NetBSD: main.c,v 1.40 2014/08/10 05:57:31 matt Exp $ */
/*
* Copyright (c) 2006 The NetBSD Foundation, Inc.
@@ -76,7 +76,7 @@ __COPYRIGHT("@(#) Copyright (c) 1987, 19
static char sccsid[] = "@(#)disklabel.c 8.4 (Berkeley) 5/4/95";
/* from static char sccsid[] = "@(#)disklabel.c 1.2 (Symmetric) 11/28/85"; */
#else
-__RCSID("$NetBSD: main.c,v 1.39 2014/07/15 20:18:30 joerg Exp $");
+__RCSID("$NetBSD: main.c,v 1.40 2014/08/10 05:57:31 matt Exp $");
#endif
#endif /* not lint */
@@ -259,6 +259,7 @@ static const struct disklabel_params {
{ "prep", 1, 1, 0, 8, 2, 0, BIG_ENDIAN }, /* powerpc */
{ "dreadmcast", 1, 1, 0, 16, 2, 0, LITTLE_ENDIAN }, /* sh3 */
+ { "evbarm64", 1, 1, 0, 16, 2, 0, 0 }, /* aarch64 */
{ "evbsh3", 1, 1, 0, 16, 2, 0, 0 }, /* sh3 */
{ "evbcf", 1, 1, 0, 16, 2, 0, BIG_ENDIAN }, /* coldfire */
{ "evbppc-mbr", 1, 1, 0, 16, 2, 0, BIG_ENDIAN }, /* powerpc */
@@ -296,6 +297,7 @@ static const struct arch_endian {
int byteorder;
const char *arch;
} arch_endians[] = {
+ { LITTLE_ENDIAN, "aarch64" },
{ LITTLE_ENDIAN, "alpha" },
{ LITTLE_ENDIAN, "arm" },
{ LITTLE_ENDIAN, "earm" },
@@ -314,6 +316,7 @@ static const struct arch_endian {
{ LITTLE_ENDIAN, "vax" },
{ LITTLE_ENDIAN, "x86_64" },
+ { BIG_ENDIAN, "aarch64eb" },
{ BIG_ENDIAN, "armeb" },
{ BIG_ENDIAN, "coldfire" },
{ BIG_ENDIAN, "earmeb" },
Index: src/share/mk/bsd.endian.mk
diff -u src/share/mk/bsd.endian.mk:1.19 src/share/mk/bsd.endian.mk:1.20
--- src/share/mk/bsd.endian.mk:1.19 Mon Aug 5 15:33:07 2013
+++ src/share/mk/bsd.endian.mk Sun Aug 10 05:57:31 2014
@@ -1,11 +1,12 @@
-# $NetBSD: bsd.endian.mk,v 1.19 2013/08/05 15:33:07 matt Exp $
+# $NetBSD: bsd.endian.mk,v 1.20 2014/08/10 05:57:31 matt Exp $
.if !defined(_BSD_ENDIAN_MK_)
_BSD_ENDIAN_MK_=1
.include <bsd.init.mk>
-.if ${MACHINE_ARCH} == "alpha" || \
+.if ${MACHINE_ARCH} == "aarch64" || \
+ ${MACHINE_ARCH} == "alpha" || \
${MACHINE_ARCH} == "arm" || \
(!empty(MACHINE_ARCH:Mearm*) && empty(MACHINE_ARCH:Mearm*eb)) || \
${MACHINE_ARCH} == "i386" || \
Index: src/share/mk/bsd.klinks.mk
diff -u src/share/mk/bsd.klinks.mk:1.12 src/share/mk/bsd.klinks.mk:1.13
--- src/share/mk/bsd.klinks.mk:1.12 Wed Jan 22 15:19:05 2014
+++ src/share/mk/bsd.klinks.mk Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.klinks.mk,v 1.12 2014/01/22 15:19:05 christos Exp $
+# $NetBSD: bsd.klinks.mk,v 1.13 2014/08/10 05:57:31 matt Exp $
#
.include <bsd.own.mk>
@@ -27,6 +27,8 @@ CLEANFILES+= x86
CLEANFILES+= x86 i386
.elif ${KLINK_MACHINE} == "evbmips"
CLEANFILES+= algor sbmips
+.elif ${MACHINE_CPU} == "aarch64"
+CLEANFILES+= arm
.endif
.if defined(XEN_BUILD) || ${KLINK_MACHINE} == "xen"
@@ -66,6 +68,10 @@ CLEANFILES+= x86
-@rm -f x86 && \
ln -s $S/arch/x86/include x86
.endif
+.if ${MACHINE_CPU} == "aarch64"
+ -@rm -f arm && \
+ ln -s $S/arch/arm/include arm
+.endif
.if defined(XEN_BUILD) || ${KLINK_MACHINE} == "xen"
-@rm -f xen && \
ln -s $S/arch/xen/include xen
Index: src/share/mk/bsd.own.mk
diff -u src/share/mk/bsd.own.mk:1.826 src/share/mk/bsd.own.mk:1.827
--- src/share/mk/bsd.own.mk:1.826 Tue Aug 5 15:51:23 2014
+++ src/share/mk/bsd.own.mk Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.own.mk,v 1.826 2014/08/05 15:51:23 apb Exp $
+# $NetBSD: bsd.own.mk,v 1.827 2014/08/10 05:57:31 matt Exp $
# This needs to be before bsd.init.mk
.if defined(BSD_MK_COMPAT_FILE)
@@ -14,7 +14,7 @@ MAKECONF?= /etc/mk.conf
#
# CPU model, derived from MACHINE_ARCH
#
-MACHINE_CPU= ${MACHINE_ARCH:C/mipse[bl]/mips/:C/mips64e[bl]/mips/:C/sh3e[bl]/sh3/:S/coldfire/m68k/:S/m68000/m68k/:C/arm.*/arm/:C/earm.*/arm/:S/earm/arm/:S/powerpc64/powerpc/}
+MACHINE_CPU= ${MACHINE_ARCH:C/mipse[bl]/mips/:C/mips64e[bl]/mips/:C/sh3e[bl]/sh3/:S/coldfire/m68k/:S/m68000/m68k/:C/arm.*/arm/:C/earm.*/arm/:S/earm/arm/:S/powerpc64/powerpc/:S/aarch64eb/aarch64/}
#
# Subdirectory used below ${RELEASEDIR} when building a release
@@ -50,6 +50,12 @@ TOOLCHAIN_MISSING?= yes
TOOLCHAIN_MISSING?= no
+.if ${MACHINE_CPU} == "aarch64" && ${MKLLVM:Uyes} != "no"
+MKLLVM?= yes
+HAVE_LLVM?= yes
+MKGCC?= no
+.endif
+
#
# GCC Using platforms.
#
@@ -62,7 +68,7 @@ TOOLCHAIN_MISSING?= no
${MACHINE_ARCH} == "powerpc64"
HAVE_GCC?= 45
-.elif ${MACHINE} == "playstation2"
+.elif ${MACHINE} == "playstation2" || ${MACHINE_CPU} == "aarch64"
HAVE_GCC?= 0
.else
# Otherwise, default to GCC4.8
@@ -87,6 +93,7 @@ EXTERNAL_GCC_SUBDIR= /does/not/exist
_LIBC_COMPILER_RT.${MACHINE_ARCH}= yes
.endif
+_LIBC_COMPILER_RT.aarch64= yes
_LIBC_COMPILER_RT.i386= yes
_LIBC_COMPILER_RT.x86_64= yes
@@ -96,6 +103,7 @@ HAVE_LIBGCC?= no
HAVE_LIBGCC?= yes
.endif
+
# ia64 is not support
.if ${MKLLVM:Uno} == "yes" || !empty(MACHINE_ARCH:Mearm*)
HAVE_LIBGCC_EH?= no
@@ -515,6 +523,7 @@ CTFMERGE= ${TOOL_CTFMERGE}
.endif
# For each ${MACHINE_CPU}, list the ports that use it.
+MACHINES.aarch64= evbarm64
MACHINES.alpha= alpha
MACHINES.arm= acorn26 acorn32 cats epoc32 evbarm hpcarm \
iyonix netwinder shark zaurus
@@ -747,6 +756,7 @@ SHLIB_VERSION_FILE?= ${.CURDIR}/shlib_ve
#
# GNU sources and packages sometimes see architecture names differently.
#
+GNU_ARCH.aarch64eb=aarch64_be
GNU_ARCH.coldfire=m5407
GNU_ARCH.earm=arm
GNU_ARCH.earmhf=arm
@@ -872,7 +882,7 @@ MK${var}:= yes
|| ${MACHINE_ARCH} == "mips64eb" || ${MACHINE_ARCH} == "mips64el" \
|| ${MACHINE_ARCH} == "powerpc64"
MKCOMPAT?= yes
-.elif !empty(MACHINE_ARCH:Mearm*)
+.elif !empty(MACHINE_ARCH:Mearm*) || ${MACHINE_CPU} == "aarch64"
MKCOMPAT?= no
.else
# Don't let this build where it really isn't supported.
@@ -1094,6 +1104,7 @@ _NEEDS_LIBCXX.${MACHINE_ARCH}= yes
.endif
_NEEDS_LIBCXX.i386= yes
_NEEDS_LIBCXX.x86_64= yes
+_NEEDS_LIBCXX.aarch64= yes
.if ${MKLLVM} == "yes" && ${_NEEDS_LIBCXX.${MACHINE_ARCH}:Uno} == "yes"
MKLIBCXX:= yes
Index: src/share/mk/bsd.sys.mk
diff -u src/share/mk/bsd.sys.mk:1.240 src/share/mk/bsd.sys.mk:1.241
--- src/share/mk/bsd.sys.mk:1.240 Fri Jun 13 01:17:45 2014
+++ src/share/mk/bsd.sys.mk Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.sys.mk,v 1.240 2014/06/13 01:17:45 mrg Exp $
+# $NetBSD: bsd.sys.mk,v 1.241 2014/08/10 05:57:31 matt Exp $
#
# Build definitions used for NetBSD source tree builds.
@@ -259,8 +259,13 @@ YFLAGS+= ${YPREFIX:D-p${YPREFIX}} ${YHEA
.endif
# Objcopy
+.if ${MACHINE_ARCH} == aarch64eb
+# AARCH64 big endian needs to preserve $x/$d symbols for the linker.
+OBJCOPYLIBFALGS_EXTRA=-K '\$x' -K '\$d'
+.elif !empty(MACHINE_ARCH:M*arm*eb)
# ARM big endian needs to preserve $a/$d/$t symbols for the linker.
-OBJCOPYLIBFLAGS?=${"${.TARGET:M*.po}" != "":?-X:-x} \
- ${"${MACHINE_ARCH:M*arm*eb}" != "":?-K '\$a' -K '\$d' -K '\$t':}
+OBJCOPYLIBFLAGS_EXTRA=-K '\$a' -K '\$d' -K '\$t'
+.endif
+OBJCOPYLIBFLAGS?=${"${.TARGET:M*.po}" != "":?-X:-x} ${OBJCOPYLIBFLAGS_EXTRA}
.endif # !defined(_BSD_SYS_MK_)
Index: src/share/mk/sys.mk
diff -u src/share/mk/sys.mk:1.126 src/share/mk/sys.mk:1.127
--- src/share/mk/sys.mk:1.126 Wed Aug 6 15:23:48 2014
+++ src/share/mk/sys.mk Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-# $NetBSD: sys.mk,v 1.126 2014/08/06 15:23:48 apb Exp $
+# $NetBSD: sys.mk,v 1.127 2014/08/10 05:57:31 matt Exp $
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
#
# This file contains the basic rules for make(1) and is read first
@@ -32,6 +32,8 @@ DBG?= -Os -freorder-blocks
DBG?= -O2 -fno-reorder-blocks
.elif ${MACHINE_ARCH} == "coldfire"
DBG?= -O1
+.elif !empty(MACHINE_ARCH:Maarch64*)
+DBG?= -O2 ${"${.TARGET:M*.po}" == "":? -fomit-frame-pointer:}
.elif ${MACHINE_ARCH} == "vax"
DBG?= -O1 -fgcse -fstrength-reduce -fgcse-after-reload
.else
Index: src/sys/arch/Makefile
diff -u src/sys/arch/Makefile:1.43 src/sys/arch/Makefile:1.44
--- src/sys/arch/Makefile:1.43 Mon Mar 31 11:25:48 2014
+++ src/sys/arch/Makefile Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.43 2014/03/31 11:25:48 martin Exp $
+# $NetBSD: Makefile,v 1.44 2014/08/10 05:57:31 matt Exp $
# For now, we install the machine and arch includes, and symlink 'machine'
# to the location of the machine includes (usually).
@@ -16,7 +16,9 @@ ARCHSUBDIR= mips
ARCHSUBDIR= powerpc
.endif
-.if ${MACHINE_CPU} == "arm"
+.if ${MACHINE_CPU} == "aarch64"
+SUBDIR= evbarm64
+.elif ${MACHINE_CPU} == "arm"
SUBDIR= acorn26 acorn32 cats epoc32 evbarm hpcarm iyonix netwinder shark zaurus
.else
SUBDIR= ${MACHINE}
@@ -27,6 +29,9 @@ SUBDIR= ${MACHINE}
SUBDIR+= ${ARCHSUBDIR}
.endif
.endif
+.if ${MACHINE_CPU} == "aarch64"
+SUBDIR+= arm
+.endif
.if ${MACHINE} == sparc
SUBDIR+= sparc64
.endif
@@ -58,7 +63,7 @@ SUBDIR+= xen
# x68k x86_64 xen \
# zaurus
-.if ${MACHINE_CPU} == arm
+.if ${MACHINE_CPU} == aarch64 || ${MACHINE_CPU} == "arm"
INCSYMLINKS= ${MACHINE_CPU} /usr/include/machine
.else
INCSYMLINKS= ${MACHINE} /usr/include/machine
Index: src/sys/lib/libkern/Makefile.compiler-rt
diff -u src/sys/lib/libkern/Makefile.compiler-rt:1.4 src/sys/lib/libkern/Makefile.compiler-rt:1.5
--- src/sys/lib/libkern/Makefile.compiler-rt:1.4 Wed Feb 26 22:37:55 2014
+++ src/sys/lib/libkern/Makefile.compiler-rt Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.compiler-rt,v 1.4 2014/02/26 22:37:55 joerg Exp $
+# $NetBSD: Makefile.compiler-rt,v 1.5 2014/08/10 05:57:31 matt Exp $
COMPILER_RT_SRCDIR= ${NETBSDSRCDIR}/sys/external/bsd/compiler_rt/dist
@@ -21,32 +21,16 @@ GENERIC_SRCS+= \
addvdi3.c \
addvsi3.c \
addvti3.c \
- ashldi3.c \
ashlti3.c \
- ashrdi3.c \
ashrti3.c \
- clzdi2.c \
- clzsi2.c \
clzti2.c \
- cmpdi2.c \
cmpti2.c \
- ctzdi2.c \
- ctzsi2.c \
ctzti2.c \
- divdi3.c \
- divmoddi4.c \
- divmodsi4.c \
- divsi3.c \
divti3.c \
- ffsdi2.c \
ffsti2.c \
int_util.c \
- lshrdi3.c \
lshrti3.c \
- moddi3.c \
- modsi3.c \
modti3.c \
- muldi3.c \
mulodi4.c \
mulosi4.c \
muloti4.c \
@@ -54,7 +38,6 @@ GENERIC_SRCS+= \
mulvdi3.c \
mulvsi3.c \
mulvti3.c \
- negdi2.c \
negti2.c \
negvdi2.c \
negvsi2.c \
@@ -68,18 +51,55 @@ GENERIC_SRCS+= \
subvdi3.c \
subvsi3.c \
subvti3.c \
- ucmpdi2.c \
ucmpti2.c \
- udivdi3.c \
- udivmoddi4.c \
- udivmodsi4.c \
udivmodti4.c \
- udivsi3.c \
udivti3.c \
- umoddi3.c \
- umodsi3.c \
umodti3.c
+.if ${MACHINE_CPU} != "aarch64" && ${MACHINE} != "alpha"
+GENERIC_SRCS+= \
+ clzsi2.c \
+ ctzsi2.c
+.endif
+
+.if ${MACHINE_CPU} != "aarch64" && ${MACHINE} != "alpha"
+GENERIC_SRCS+= \
+ divmodsi4.c \
+ divsi3.c \
+ modsi3.c \
+ udivmodsi4.c \
+ udivsi3.c \
+ umodsi3.c
+.endif
+
+.if ${MACHINE_CPU} != "aarch64" && ${MACHINE} != "alpha"
+GENERIC_SRCS+= \
+ clzdi2.c \
+ ctzdi2.c \
+ ffsdi2.c
+.endif
+
+.if ${MACHINE_CPU} != "aarch64" && ${MACHINE} != "alpha"
+GENERIC_SRCS+= \
+ ashldi3.c \
+ ashrdi3.c \
+ lshrdi3.c
+.endif
+
+.if ${MACHINE_CPU} != "aarch64" && ${MACHINE} != "alpha"
+GENERIC_SRCS+= \
+ cmpdi2.c \
+ divdi3.c \
+ divmoddi4.c \
+ moddi3.c \
+ muldi3.c \
+ negdi2.c \
+ ucmpdi2.c \
+ udivdi3.c \
+ udivmoddi4.c \
+ umoddi3.c
+.endif
+
.if ${MACHINE_CPU} == "arm"
. if !empty(MACHINE_ARCH:Mearm*)
GENERIC_SRCS+= \
Index: src/sys/lib/libunwind/Registers.hpp
diff -u src/sys/lib/libunwind/Registers.hpp:1.16 src/sys/lib/libunwind/Registers.hpp:1.17
--- src/sys/lib/libunwind/Registers.hpp:1.16 Sun May 11 02:07:35 2014
+++ src/sys/lib/libunwind/Registers.hpp Sun Aug 10 05:57:31 2014
@@ -237,6 +237,85 @@ private:
};
enum {
+ DWARF_AARCH64_X0 = 0,
+ DWARF_AARCH64_X30 = 30,
+ DWARF_AARCH64_SP = 31,
+ DWARF_AARCH64_ELR_MODE = 33,
+ DWARF_AARCH64_V0 = 64,
+ DWARF_AARCH64_V31 = 95,
+
+ REGNO_AARCH64_X0 = 0,
+ REGNO_AARCH64_X30 = 30,
+ REGNO_AARCH64_SP = 31,
+ REGNO_AARCH64_ELR_MODE = 32,
+ REGNO_AARCH64_V0 = 33,
+ REGNO_AARCH64_V31 = 64,
+};
+
+class Registers_aarch64 {
+public:
+ enum {
+ LAST_RESTORE_REG = REGNO_AARCH64_V31,
+ LAST_REGISTER = REGNO_AARCH64_V31,
+ RETURN_OFFSET = 0,
+ };
+
+ __dso_hidden Registers_aarch64();
+
+ static int dwarf2regno(int num) {
+ if (num >= DWARF_AARCH64_X0 && num <= DWARF_AARCH64_X30)
+ return REGNO_AARCH64_X0 + (num - DWARF_AARCH64_X0);
+ if (num == DWARF_AARCH64_SP)
+ return REGNO_AARCH64_SP;
+ if (num == DWARF_AARCH64_ELR_MODE)
+ return REGNO_AARCH64_ELR_MODE;
+ if (num >= DWARF_AARCH64_V0 && num <= DWARF_AARCH64_V31)
+ return REGNO_AARCH64_V0 + (num - DWARF_AARCH64_V0);
+ return LAST_REGISTER + 1;
+ }
+
+ bool validRegister(int num) const {
+ return num >= 0 && num <= LAST_RESTORE_REG;
+ }
+
+ uint64_t getRegister(int num) const {
+ assert(validRegister(num));
+ return reg[num];
+ }
+
+ void setRegister(int num, uint64_t value) {
+ assert(validRegister(num));
+ reg[num] = value;
+ }
+
+ uint64_t getIP() const { return reg[REGNO_AARCH64_X30]; }
+
+ void setIP(uint64_t value) { reg[REGNO_AARCH64_X30] = value; }
+
+ uint64_t getSP() const { return reg[REGNO_AARCH64_SP]; }
+
+ void setSP(uint64_t value) { reg[REGNO_AARCH64_SP] = value; }
+
+ bool validFloatVectorRegister(int num) const {
+ return (num >= REGNO_AARCH64_V0 && num <= REGNO_AARCH64_V31);
+ }
+
+ void copyFloatVectorRegister(int num, uint64_t addr_) {
+ const void *addr = reinterpret_cast<const void *>(addr_);
+ memcpy(vecreg + (num - REGNO_AARCH64_V0), addr, sizeof(vecreg[0]));
+ }
+
+ __dso_hidden void jumpto() const __dead;
+
+private:
+ struct vecreg_t {
+ uint64_t low, high;
+ };
+ uint64_t reg[REGNO_AARCH64_ELR_MODE + 1];
+ vecreg_t vecreg[32];
+};
+
+enum {
DWARF_ARM32_R0 = 0,
DWARF_ARM32_R15 = 15,
DWARF_ARM32_SPSR = 128,
@@ -951,6 +1030,8 @@ typedef Registers_x86 NativeUnwindRegist
typedef Registers_x86_64 NativeUnwindRegisters;
#elif __powerpc__
typedef Registers_ppc32 NativeUnwindRegisters;
+#elif __aarch64__
+typedef Registers_aarch64 NativeUnwindRegisters;
#elif __arm__
typedef Registers_arm32 NativeUnwindRegisters;
#elif __vax__
Index: src/sys/lib/libunwind/unwind_registers.S
diff -u src/sys/lib/libunwind/unwind_registers.S:1.14 src/sys/lib/libunwind/unwind_registers.S:1.15
--- src/sys/lib/libunwind/unwind_registers.S:1.14 Wed May 14 22:13:36 2014
+++ src/sys/lib/libunwind/unwind_registers.S Sun Aug 10 05:57:31 2014
@@ -269,6 +269,75 @@ ENTRY(_ZNK7_Unwind15Registers_ppc326jump
bctr
#endif
+#ifdef __aarch64__
+ .hidden _ZN7_Unwind17Registers_aarch64C1Ev
+ENTRY(_ZN7_Unwind17Registers_aarch64C1Ev)
+ stp x0, x1, [x0]
+ add x0, x0, #16
+ stp x2, x3, [x0], #16
+ stp x4, x5, [x0], #16
+ stp x6, x7, [x0], #16
+ stp x8, x9, [x0], #16
+ stp x10, x11, [x0], #16
+ stp x12, x13, [x0], #16
+ stp x14, x15, [x0], #16
+ stp x16, x17, [x0], #16
+ stp x18, x19, [x0], #16
+ stp x20, x22, [x0], #16
+ stp x22, x24, [x0], #16
+ stp x24, x26, [x0], #16
+ stp x26, x27, [x0], #16
+ stp x28, x29, [x0], #16
+ mov x1, sp
+ stp x30, x1, [x0], #16
+
+ add x0, x0, #8
+ str xzr, [x0], #8
+
+ stp q0, q1, [x0], #64
+ stp q2, q3, [x0], #64
+ stp q4, q5, [x0], #64
+ stp q6, q7, [x0], #64
+ stp q8, q9, [x0], #64
+ stp q10, q11, [x0], #64
+ stp q12, q13, [x0], #64
+ stp q14, q15, [x0], #64
+ stp q16, q17, [x0], #64
+ stp q18, q19, [x0], #64
+ stp q20, q21, [x0], #64
+ stp q22, q23, [x0], #64
+ stp q24, q25, [x0], #64
+ stp q26, q27, [x0], #64
+ stp q28, q29, [x0], #64
+ stp q30, q31, [x0], #64
+
+ ret
+END(_ZN7_Unwind17Registers_aarch64C1Ev)
+
+ .hidden _ZNK7_Unwind17Registers_aarch646jumptoEv
+ENTRY(_ZNK7_Unwind17Registers_aarch646jumptoEv)
+ ldp x2, x3, [x0, #16]
+ ldp x4, x6, [x0, #32]
+ ldp x6, x7, [x0, #48]
+ ldp x8, x9, [x0, #64]
+ ldp x10, x11, [x0, #80]
+ ldp x12, x13, [x0, #96]
+ ldp x14, x16, [x0, #112]
+ ldp x16, x17, [x0, #128]
+ ldp x18, x19, [x0, #144]
+ ldp x20, x21, [x0, #160]
+ ldp x22, x23, [x0, #176]
+ ldp x24, x26, [x0, #192]
+ ldp x26, x27, [x0, #208]
+ ldp x28, x29, [x0, #224]
+ ldp x30, x1, [x0, #240]
+ mov sp, x1
+
+ ldp x0, x1, [x0, #0]
+ ret
+END(_ZNK7_Unwind17Registers_aarch646jumptoEv)
+#endif /* __aarch64__ */
+
#if defined(__arm__)
.fpu vfpv3
.hidden _ZN7_Unwind15Registers_arm32C1Ev
Index: src/sys/modules/Makefile
diff -u src/sys/modules/Makefile:1.138 src/sys/modules/Makefile:1.139
--- src/sys/modules/Makefile:1.138 Sat Aug 9 22:10:35 2014
+++ src/sys/modules/Makefile Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.138 2014/08/09 22:10:35 riz Exp $
+# $NetBSD: Makefile,v 1.139 2014/08/10 05:57:31 matt Exp $
.include <bsd.own.mk>
@@ -117,11 +117,12 @@ SUBDIR+= xldscripts
SUBDIR+= exec_aout
.endif
-.if ${MACHINE_ARCH} != "alpha"
+.if ${MACHINE_ARCH} != "alpha" && ${MACHINE_CPU} != "aarch64"
SUBDIR+= exec_elf32
.endif
-.if ${MACHINE_ARCH} == "alpha" || \
+.if ${MACHINE_CPU} == "aarch64" || \
+ ${MACHINE_ARCH} == "alpha" || \
${MACHINE_ARCH} == "sparc64" || \
${MACHINE_ARCH} == "x86_64"
SUBDIR+= exec_elf64
Index: src/sys/sys/aout_mids.h
diff -u src/sys/sys/aout_mids.h:1.2 src/sys/sys/aout_mids.h:1.3
--- src/sys/sys/aout_mids.h:1.2 Thu Dec 27 06:55:49 2012
+++ src/sys/sys/aout_mids.h Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: aout_mids.h,v 1.2 2012/12/27 06:55:49 martin Exp $ */
+/* $NetBSD: aout_mids.h,v 1.3 2014/08/10 05:57:31 matt Exp $ */
/*
* Copyright (c) 2009, The NetBSD Foundation, Inc.
@@ -61,6 +61,7 @@
#define MID_X86_64 157 /* AMD x86-64 */
#define MID_SH5_32 158 /* ILP32 SH5 */
#define MID_IA64 159 /* Itanium */
+#define MID_AARCH64 183 /* ARM AARCH64 */
#define MID_HP200 200 /* hp200 (68010) BSD binary */
#define MID_HP300 300 /* hp300 (68020+68881) BSD binary */
#define MID_HPUX 0x20C /* hp200/300 HP-UX binary */
Index: src/tests/lib/libc/gen/Makefile
diff -u src/tests/lib/libc/gen/Makefile:1.40 src/tests/lib/libc/gen/Makefile:1.41
--- src/tests/lib/libc/gen/Makefile:1.40 Tue Apr 29 06:29:02 2014
+++ src/tests/lib/libc/gen/Makefile Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.40 2014/04/29 06:29:02 uebayasi Exp $
+# $NetBSD: Makefile,v 1.41 2014/08/10 05:57:31 matt Exp $
.include <bsd.own.mk>
@@ -17,8 +17,10 @@ TESTS_C+= t_floatunditf
TESTS_C+= t_fmtcheck
TESTS_C+= t_fnmatch
TESTS_C+= t_fpclassify
+.if ${MACHINE_CPU} != "aarch64"
TESTS_C+= t_fpsetmask
TESTS_C+= t_fpsetround
+.endif
TESTS_C+= t_ftok
TESTS_C+= t_getcwd
TESTS_C+= t_getgrent
@@ -39,6 +41,14 @@ TESTS_C+= t_time
TESTS_C+= t_ttyname
TESTS_C+= t_vis
+.if ${MACHINE_CPU} == "aarch64" || ${MACHINE_CPU} == "arm" \
+ || ${MACHINE_CPU} == "sparc" \
+ || ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64"
+CPPFLAGS.t_siginfo.c+= -DHAVE_FENV
+LDADD.t_siginfo+= -lm
+DPADD.t_siginfo+= ${LIBM}
+.endif
+
LDADD.t_fpclassify+= -lm
DPADD.t_fpclassify+= ${LIBM}
LDADD.t_fpsetround+= -lm
Index: src/tools/Makefile
diff -u src/tools/Makefile:1.176 src/tools/Makefile:1.177
--- src/tools/Makefile:1.176 Tue Jul 15 13:19:44 2014
+++ src/tools/Makefile Sun Aug 10 05:57:31 2014
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.176 2014/07/15 13:19:44 christos Exp $
+# $NetBSD: Makefile,v 1.177 2014/08/10 05:57:31 matt Exp $
.include <bsd.own.mk>
.include <bsd.endian.mk>
@@ -25,7 +25,7 @@
TOOLS_BUILDRUMP?=no
.if ${TOOLCHAIN_MISSING} == "no"
-. if defined(HAVE_GCC)
+. if defined(HAVE_GCC) && ${HAVE_GCC} > 0
TOOLCHAIN_BITS= gmake .WAIT
TOOLCHAIN_BITS+= gmp .WAIT
TOOLCHAIN_BITS+= mpfr .WAIT
@@ -37,7 +37,7 @@ TOOLCHAIN_BITS+= mpc .WAIT
TOOLCHAIN_BITS+= binutils .WAIT
.endif
-.if defined(HAVE_GCC)
+.if defined(HAVE_GCC) && ${HAVE_GCC} > 0
. if ${TOOLCHAIN_MISSING} == "no"
TOOLCHAIN_BITS+= gcc
. if ${MKCROSSGDB:Uno} != "no" || make(obj)
Index: src/tools/headerlist
diff -u src/tools/headerlist:1.10 src/tools/headerlist:1.11
--- src/tools/headerlist:1.10 Mon Mar 31 11:25:49 2014
+++ src/tools/headerlist Sun Aug 10 05:57:31 2014
@@ -1,8 +1,10 @@
-# $NetBSD: headerlist,v 1.10 2014/03/31 11:25:49 martin Exp $
+# $NetBSD: headerlist,v 1.11 2014/08/10 05:57:31 matt Exp $
#
# do not edit; this file was automatically generated by:
# NetBSD: mkheaderlist.sh,v 1.1 2007/08/07 12:38:23 yamt Exp
+./aarch64/include/disklabel.h
+./aarch64/include/elf_machdep.h
./acorn26/include/disklabel.h
./acorn26/include/elf_machdep.h
./acorn32/include/disklabel.h
@@ -40,6 +42,8 @@
./epoc32/include/elf_machdep.h
./evbarm/include/disklabel.h
./evbarm/include/elf_machdep.h
+./evbarm64/include/disklabel.h
+./evbarm64/include/elf_machdep.h
./evbcf/include/disklabel.h
./evbcf/include/elf_machdep.h
./evbmips/include/disklabel.h