From owner-svn-src-head@freebsd.org Thu Oct 5 23:01:37 2017 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 20363E44AE8; Thu, 5 Oct 2017 23:01:37 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C7EEA6526F; Thu, 5 Oct 2017 23:01:36 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v95N1aCN013658; Thu, 5 Oct 2017 23:01:36 GMT (envelope-from imp@FreeBSD.org) Received: (from imp@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v95N1XKR013634; Thu, 5 Oct 2017 23:01:33 GMT (envelope-from imp@FreeBSD.org) Message-Id: <201710052301.v95N1XKR013634@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: imp set sender to imp@FreeBSD.org using -f From: Warner Losh Date: Thu, 5 Oct 2017 23:01:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r324340 - in head: . gnu/usr.bin/binutils/as gnu/usr.bin/cc lib/clang lib/libc lib/libc/arm lib/libc/arm/aeabi lib/libc/arm/gen lib/libc/sys lib/libcompiler_rt lib/msun/arm release shar... X-SVN-Group: head X-SVN-Commit-Author: imp X-SVN-Commit-Paths: in head: . gnu/usr.bin/binutils/as gnu/usr.bin/cc lib/clang lib/libc lib/libc/arm lib/libc/arm/aeabi lib/libc/arm/gen lib/libc/sys lib/libcompiler_rt lib/msun/arm release share/mk sys/conf sys/modules... X-SVN-Commit-Revision: 324340 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Oct 2017 23:01:37 -0000 Author: imp Date: Thu Oct 5 23:01:33 2017 New Revision: 324340 URL: https://svnweb.freebsd.org/changeset/base/324340 Log: Support armv7 builds for userland Make armv7 as a new MACHINE_ARCH. Copy all the places we do armv6 and add armv7 as basically an alias. clang appears to generate code for armv7 by default. armv7 hard float isn't supported by the the in-tree gcc, so it hasn't been updated to have a new default. Support armv7 as a new valid MACHINE_ARCH (and by extension TARGET_ARCH). Add armv7 to the universe build. Differential Revision: https://reviews.freebsd.org/D12010 Modified: head/Makefile head/Makefile.inc1 head/Makefile.libcompat head/gnu/usr.bin/binutils/as/Makefile head/gnu/usr.bin/cc/Makefile.inc head/lib/clang/llvm.build.mk head/lib/libc/Makefile head/lib/libc/arm/Makefile.inc head/lib/libc/arm/aeabi/Makefile.inc head/lib/libc/arm/gen/Makefile.inc head/lib/libc/sys/Makefile.inc head/lib/libcompiler_rt/Makefile.inc head/lib/msun/arm/Makefile.inc head/release/Makefile.mirrors head/share/mk/bsd.cpu.mk head/share/mk/local.meta.sys.mk head/share/mk/src.opts.mk head/share/mk/sys.mk head/sys/conf/Makefile.arm head/sys/conf/kern.mk head/sys/conf/kern.opts.mk head/sys/conf/kern.pre.mk head/sys/modules/Makefile head/sys/modules/cloudabi32/Makefile Modified: head/Makefile ============================================================================== --- head/Makefile Thu Oct 5 21:36:56 2017 (r324339) +++ head/Makefile Thu Oct 5 23:01:33 2017 (r324340) @@ -435,7 +435,7 @@ worlds: .PHONY .if make(universe) || make(universe_kernels) || make(tinderbox) || make(targets) TARGETS?=amd64 arm arm64 i386 mips powerpc riscv sparc64 _UNIVERSE_TARGETS= ${TARGETS} -TARGET_ARCHES_arm?= arm armeb armv6 +TARGET_ARCHES_arm?= arm armeb armv6 armv7 TARGET_ARCHES_arm64?= aarch64 TARGET_ARCHES_mips?= mipsel mips mips64el mips64 mipsn32 mipselhf mipshf mips64elhf mips64hf TARGET_ARCHES_powerpc?= powerpc powerpc64 powerpcspe Modified: head/Makefile.inc1 ============================================================================== --- head/Makefile.inc1 Thu Oct 5 21:36:56 2017 (r324339) +++ head/Makefile.inc1 Thu Oct 5 23:01:33 2017 (r324340) @@ -398,6 +398,7 @@ KNOWN_ARCHES?= aarch64/arm64 \ arm \ armeb/arm \ armv6/arm \ + armv7/arm \ i386 \ mips \ mipsel/mips \ @@ -614,7 +615,7 @@ BFLAGS+= -B${CROSS_BINUTILS_PREFIX} BFLAGS+= -B${WORLDTMP}/usr/bin .endif .if ${TARGET} == "arm" -.if ${TARGET_ARCH:Marmv6*} != "" && ${TARGET_CPUTYPE:M*soft*} == "" +.if ${TARGET_ARCH:Marmv[67]*} != "" && ${TARGET_CPUTYPE:M*soft*} == "" TARGET_ABI= gnueabihf .else TARGET_ABI= gnueabi @@ -650,7 +651,7 @@ XCFLAGS+= ${BFLAGS} ${TARGET_ARCH} == "powerpc64" || ${TARGET_ARCH:Mmips64*} != "") LIBCOMPAT= 32 .include "Makefile.libcompat" -.elif ${MK_LIBSOFT} != "no" && ${TARGET_ARCH} == "armv6" +.elif ${MK_LIBSOFT} != "no" && ${TARGET_ARCH:Marmv[67]*} != "" LIBCOMPAT= SOFT .include "Makefile.libcompat" .endif Modified: head/Makefile.libcompat ============================================================================== --- head/Makefile.libcompat Thu Oct 5 21:36:56 2017 (r324339) +++ head/Makefile.libcompat Thu Oct 5 23:01:33 2017 (r324340) @@ -59,10 +59,10 @@ LIB32WMAKEFLAGS+= -DCOMPAT_32BIT # ------------------------------------------------------------------- # soft-fp world -.if ${TARGET_ARCH} == "armv6" +.if ${TARGET_ARCH:Marmv[67]*} != "" LIBSOFTCFLAGS= -DCOMPAT_SOFTFP LIBSOFTCPUFLAGS= -mfloat-abi=softfp -LIBSOFTWMAKEENV= CPUTYPE=soft MACHINE=arm MACHINE_ARCH=armv6 +LIBSOFTWMAKEENV= CPUTYPE=soft MACHINE=arm MACHINE_ARCH=${TARGET_ARCH} LIBSOFTWMAKEFLAGS= -DCOMPAT_SOFTFP .endif Modified: head/gnu/usr.bin/binutils/as/Makefile ============================================================================== --- head/gnu/usr.bin/binutils/as/Makefile Thu Oct 5 21:36:56 2017 (r324339) +++ head/gnu/usr.bin/binutils/as/Makefile Thu Oct 5 23:01:33 2017 (r324340) @@ -46,8 +46,11 @@ SRCS+= app.c \ # DEO: why not used? #SRCS+= itbl-ops.c -.if ${TARGET_ARCH} == "armv6" || ${TARGET_ARCH} == "armv6eb" +.if ${TARGET_ARCH:Marmv6*} != "" CFLAGS+= -DCPU_DEFAULT=ARM_ARCH_V6K +.endif +.if ${TARGET_ARCH:Marmv7*} != "" +CFLAGS+= -DCPU_DEFAULT=ARM_ARCH_V7A .endif .if ${TARGET_CPUARCH} == "mips" Modified: head/gnu/usr.bin/cc/Makefile.inc ============================================================================== --- head/gnu/usr.bin/cc/Makefile.inc Thu Oct 5 21:36:56 2017 (r324339) +++ head/gnu/usr.bin/cc/Makefile.inc Thu Oct 5 23:01:33 2017 (r324340) @@ -34,8 +34,11 @@ CFLAGS+= -DTARGET_ARM_EABI .if ${TARGET_ARCH:Marm*eb} != "" CFLAGS += -DTARGET_ENDIAN_DEFAULT=MASK_BIG_END .endif -.if ${TARGET_ARCH} == "armv6" || ${TARGET_ARCH} == "armv6eb" +.if ${TARGET_ARCH:Marmv6*} != "" CFLAGS += -DFREEBSD_ARCH_armv6 +.endif +.if ${TARGET_ARCH:Marmv7*} != "" +CFLAGS += -DFREEBSD_ARCH_armv7 .endif .if ${TARGET_CPUARCH} == "mips" Modified: head/lib/clang/llvm.build.mk ============================================================================== --- head/lib/clang/llvm.build.mk Thu Oct 5 21:36:56 2017 (r324339) +++ head/lib/clang/llvm.build.mk Thu Oct 5 23:01:33 2017 (r324340) @@ -20,10 +20,10 @@ CFLAGS+= -D__STDC_CONSTANT_MACROS TARGET_ARCH?= ${MACHINE_ARCH} BUILD_ARCH?= ${MACHINE_ARCH} -# Armv6 uses hard float abi, unless the CPUTYPE has soft in it. +# Armv6 and armv7 uses hard float abi, unless the CPUTYPE has soft in it. # arm (for armv4 and armv5 CPUs) always uses the soft float ABI. # For all other targets, we stick with 'unknown'. -.if ${TARGET_ARCH:Marmv6*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") +.if ${TARGET_ARCH:Marmv[67]*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") TARGET_ABI= -gnueabihf .elif ${TARGET_ARCH:Marm*} TARGET_ABI= -gnueabi Modified: head/lib/libc/Makefile ============================================================================== --- head/lib/libc/Makefile Thu Oct 5 21:36:56 2017 (r324339) +++ head/lib/libc/Makefile Thu Oct 5 23:01:33 2017 (r324340) @@ -110,7 +110,7 @@ NOASM= .include "${LIBC_SRCTOP}/uuid/Makefile.inc" .include "${LIBC_SRCTOP}/xdr/Makefile.inc" .if (${LIBC_ARCH} == "arm" && \ - (${MACHINE_ARCH:Marmv6*} == "" || (defined(CPUTYPE) && ${CPUTYPE:M*soft*}))) || \ + (${MACHINE_ARCH:Marmv[67]*} == "" || (defined(CPUTYPE) && ${CPUTYPE:M*soft*}))) || \ (${LIBC_ARCH} == "mips" && ${MACHINE_ARCH:Mmips*hf} == "") || \ (${LIBC_ARCH} == "riscv" && ${MACHINE_ARCH:Mriscv*sf} != "") .include "${LIBC_SRCTOP}/softfloat/Makefile.inc" Modified: head/lib/libc/arm/Makefile.inc ============================================================================== --- head/lib/libc/arm/Makefile.inc Thu Oct 5 21:36:56 2017 (r324339) +++ head/lib/libc/arm/Makefile.inc Thu Oct 5 23:01:33 2017 (r324340) @@ -11,7 +11,7 @@ SYM_MAPS+=${LIBC_SRCTOP}/arm/Symbol.map .include "${LIBC_SRCTOP}/arm/aeabi/Makefile.inc" -.if ${MACHINE_ARCH:Marmv6*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") +.if ${MACHINE_ARCH:Marmv[67]*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") SYM_MAPS+=${LIBC_SRCTOP}/arm/Symbol_vfp.map .endif Modified: head/lib/libc/arm/aeabi/Makefile.inc ============================================================================== --- head/lib/libc/arm/aeabi/Makefile.inc Thu Oct 5 21:36:56 2017 (r324339) +++ head/lib/libc/arm/aeabi/Makefile.inc Thu Oct 5 23:01:33 2017 (r324340) @@ -5,14 +5,14 @@ SRCS+= aeabi_atexit.c \ aeabi_unwind_cpp.c \ aeabi_unwind_exidx.c -.if (${MACHINE_ARCH:Marmv6*} && defined(CPUTYPE) && ${CPUTYPE:M*soft*} != "") || \ - ${MACHINE_ARCH:Marmv6*} == "" +.if (${MACHINE_ARCH:Marmv[67]*} && defined(CPUTYPE) && ${CPUTYPE:M*soft*} != "") || \ + ${MACHINE_ARCH:Marmv[67]*} == "" SRCS+= aeabi_asm_double.S \ aeabi_asm_float.S \ aeabi_double.c \ aeabi_float.c .endif -.if ${MACHINE_ARCH:Marmv6*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") +.if ${MACHINE_ARCH:Marmv[67]*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") SRCS+= aeabi_vfp_double.S \ aeabi_vfp_float.S .endif Modified: head/lib/libc/arm/gen/Makefile.inc ============================================================================== --- head/lib/libc/arm/gen/Makefile.inc Thu Oct 5 21:36:56 2017 (r324339) +++ head/lib/libc/arm/gen/Makefile.inc Thu Oct 5 23:01:33 2017 (r324340) @@ -7,7 +7,7 @@ SRCS+= _ctx_start.S _setjmp.S _set_tp.c alloca.S fabs. arm_initfini.c \ trivial-getcontextx.c -.if ${MACHINE_ARCH:Marmv6*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") +.if ${MACHINE_ARCH:Marmv[67]*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") SRCS+= fpgetmask_vfp.c fpgetround_vfp.c fpgetsticky_vfp.c fpsetmask_vfp.c \ fpsetround_vfp.c fpsetsticky_vfp.c .endif Modified: head/lib/libc/sys/Makefile.inc ============================================================================== --- head/lib/libc/sys/Makefile.inc Thu Oct 5 21:36:56 2017 (r324339) +++ head/lib/libc/sys/Makefile.inc Thu Oct 5 23:01:33 2017 (r324340) @@ -124,7 +124,7 @@ SYM_MAPS+= ${LIBC_SRCTOP}/sys/Symbol.map CLEANFILES+= ${SASM} ${SPSEUDO} .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" || \ - ${MACHINE_CPUARCH} == "powerpc" || ${MACHINE_ARCH:Marmv6*} + ${MACHINE_CPUARCH} == "powerpc" || ${MACHINE_ARCH:Marmv[67]*} NOTE_GNU_STACK='\t.section .note.GNU-stack,"",%%progbits\n' .else NOTE_GNU_STACK='' Modified: head/lib/libcompiler_rt/Makefile.inc ============================================================================== --- head/lib/libcompiler_rt/Makefile.inc Thu Oct 5 21:36:56 2017 (r324339) +++ head/lib/libcompiler_rt/Makefile.inc Thu Oct 5 23:01:33 2017 (r324340) @@ -204,7 +204,7 @@ SRCF+= stdatomic .endif .for file in ${SRCF} -.if ${MACHINE_ARCH:Marmv6*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") \ +.if ${MACHINE_ARCH:Marmv[67]*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") \ && exists(${CRTSRC}/${CRTARCH}/${file}vfp.S) SRCS+= ${file}vfp.S . elif exists(${CRTSRC}/${CRTARCH}/${file}.S) Modified: head/lib/msun/arm/Makefile.inc ============================================================================== --- head/lib/msun/arm/Makefile.inc Thu Oct 5 21:36:56 2017 (r324339) +++ head/lib/msun/arm/Makefile.inc Thu Oct 5 23:01:33 2017 (r324340) @@ -3,7 +3,7 @@ LDBL_PREC = 53 SYM_MAPS += ${.CURDIR}/arm/Symbol.map -.if ${MACHINE_ARCH:Marmv6*} && defined(CPUTYPE) && ${CPUTYPE:M*soft*} != "" +.if ${MACHINE_ARCH:Marmv[67]*} && defined(CPUTYPE) && ${CPUTYPE:M*soft*} != "" ARCH_SRCS = fenv-softfp.c fenv-vfp.c .endif Modified: head/release/Makefile.mirrors ============================================================================== --- head/release/Makefile.mirrors Thu Oct 5 21:36:56 2017 (r324339) +++ head/release/Makefile.mirrors Thu Oct 5 23:01:33 2017 (r324340) @@ -57,7 +57,7 @@ TLD?= ${FTPDIR}/releases .endif .if defined(EMBEDDED) && !empty(EMBEDDED) -. if ${TARGET:Marm*} != "" && (${TARGET_ARCH} == "armv6" || ${TARGET_ARCH} == "aarch64") +. if ${TARGET:Marm*} != "" && (${TARGET_ARCH:Marmv[67]} != "" || ${TARGET_ARCH} == "aarch64") . if !defined(BOARDNAME) && empty(BOARDNAME) BOARDNAME:= ${KERNCONF} . else Modified: head/share/mk/bsd.cpu.mk ============================================================================== --- head/share/mk/bsd.cpu.mk Thu Oct 5 21:36:56 2017 (r324339) +++ head/share/mk/bsd.cpu.mk Thu Oct 5 23:01:33 2017 (r324340) @@ -110,8 +110,6 @@ _CPUCFLAGS = -march=${CPUTYPE} _CPUCFLAGS = -march=armv5te -D__XSCALE__ . elif ${CPUTYPE:M*soft*} != "" _CPUCFLAGS = -mfloat-abi=softfp -. elif ${CPUTYPE} == "armv6" -_CPUCFLAGS = -march=${CPUTYPE} . elif ${CPUTYPE} == "cortexa" _CPUCFLAGS = -march=armv7 -mfpu=vfp . elif ${CPUTYPE:Marmv[4567]*} != "" @@ -339,18 +337,20 @@ MACHINE_CPU += arm . if ${MACHINE_ARCH:Marmv6*} != "" MACHINE_CPU += armv6 . endif -# armv6 is a hybrid. It can use the softfp ABI, but doesn't emulate -# floating point in the general case, so don't define softfp for -# it at this time. arm and armeb are pure softfp, so define it -# for them. -. if ${MACHINE_ARCH:Marmv6*} == "" +. if ${MACHINE_ARCH:Marmv7*} != "" +MACHINE_CPU += armv7 +. endif +# armv6 and armv7 are a hybrid. It can use the softfp ABI, but doesn't emulate +# floating point in the general case, so don't define softfp for it at this +# time. arm and armeb are pure softfp, so define it for them. +. if ${MACHINE_ARCH:Marmv[67]*} == "" MACHINE_CPU += softfp . endif -# Normally armv6 is hard float ABI from FreeBSD 11 onwards. However -# when CPUTYPE has 'soft' in it, we use the soft-float ABI to allow -# building of soft-float ABI libraries. In this case, we have to -# add the -mfloat-abi=softfp to force that. -.if ${MACHINE_ARCH:Marmv6*} && defined(CPUTYPE) && ${CPUTYPE:M*soft*} != "" +# Normally armv6 and armv7 are hard float ABI from FreeBSD 11 onwards. However +# when CPUTYPE has 'soft' in it, we use the soft-float ABI to allow building of +# soft-float ABI libraries. In this case, we have to add the -mfloat-abi=softfp +# to force that. +.if ${MACHINE_ARCH:Marmv[67]*} && defined(CPUTYPE) && ${CPUTYPE:M*soft*} != "" # Needs to be CFLAGS not _CPUCFLAGS because it's needed for the ABI # not a nice optimization. CFLAGS += -mfloat-abi=softfp Modified: head/share/mk/local.meta.sys.mk ============================================================================== --- head/share/mk/local.meta.sys.mk Thu Oct 5 21:36:56 2017 (r324339) +++ head/share/mk/local.meta.sys.mk Thu Oct 5 23:01:33 2017 (r324340) @@ -43,7 +43,7 @@ OBJROOT:= ${OBJROOT:H:tA}/${OBJROOT:T} .endif # from src/Makefile (for universe) -TARGET_ARCHES_arm?= arm armeb armv6 +TARGET_ARCHES_arm?= arm armeb armv6 armv7 TARGET_ARCHES_arm64?= aarch64 TARGET_ARCHES_mips?= mipsel mips mips64el mips64 mipsn32 mipsn32el TARGET_ARCHES_powerpc?= powerpc powerpc64 powerpcspe Modified: head/share/mk/src.opts.mk ============================================================================== --- head/share/mk/src.opts.mk Thu Oct 5 21:36:56 2017 (r324339) +++ head/share/mk/src.opts.mk Thu Oct 5 23:01:33 2017 (r324340) @@ -273,7 +273,7 @@ __DEFAULT_NO_OPTIONS+=GDB_LIBEXEC __DEFAULT_YES_OPTIONS+=GDB_LIBEXEC .endif # Only doing soft float API stuff on armv6 -.if ${__T} != "armv6" +.if ${__T} != "armv6" && ${__T} != "armv7" BROKEN_OPTIONS+=LIBSOFT .endif .if ${__T:Mmips*} Modified: head/share/mk/sys.mk ============================================================================== --- head/share/mk/sys.mk Thu Oct 5 21:36:56 2017 (r324339) +++ head/share/mk/sys.mk Thu Oct 5 23:01:33 2017 (r324340) @@ -13,7 +13,7 @@ unix ?= We run FreeBSD, not UNIX. # and/or endian. This is called MACHINE_CPU in NetBSD, but that's used # for something different in FreeBSD. # -__TO_CPUARCH=C/mips(n32|64)?(el)?(hf)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc(64|spe)/powerpc/:C/riscv64(sf)?/riscv/ +__TO_CPUARCH=C/mips(n32|64)?(el)?(hf)?/mips/:C/arm(v[67])?(eb)?/arm/:C/powerpc(64|spe)/powerpc/:C/riscv64(sf)?/riscv/ MACHINE_CPUARCH=${MACHINE_ARCH:${__TO_CPUARCH}} .endif Modified: head/sys/conf/Makefile.arm ============================================================================== --- head/sys/conf/Makefile.arm Thu Oct 5 21:36:56 2017 (r324339) +++ head/sys/conf/Makefile.arm Thu Oct 5 23:01:33 2017 (r324340) @@ -75,7 +75,7 @@ FILES_CPU_FUNC = \ $S/$M/$M/cpufunc_asm_pj4b.S $S/$M/$M/cpufunc_asm_armv6.S \ $S/$M/$M/cpufunc_asm_armv7.S -.if ${MACHINE_ARCH} != "armv6" && defined(KERNPHYSADDR) +.if ${MACHINE_ARCH:Marmv[67]*} == "" && defined(KERNPHYSADDR) KERNEL_EXTRA=trampoline KERNEL_EXTRA_INSTALL=kernel.gz.tramp trampoline: ${KERNEL_KO}.tramp Modified: head/sys/conf/kern.mk ============================================================================== --- head/sys/conf/kern.mk Thu Oct 5 21:36:56 2017 (r324339) +++ head/sys/conf/kern.mk Thu Oct 5 23:01:33 2017 (r324340) @@ -259,6 +259,7 @@ LD_EMULATION_amd64=elf_x86_64_fbsd LD_EMULATION_arm=armelf_fbsd LD_EMULATION_armeb=armelfb_fbsd LD_EMULATION_armv6=armelf_fbsd +LD_EMULATION_armv7=armelf_fbsd LD_EMULATION_i386=elf_i386_fbsd LD_EMULATION_mips= elf32btsmip_fbsd LD_EMULATION_mips64= elf64btsmip_fbsd Modified: head/sys/conf/kern.opts.mk ============================================================================== --- head/sys/conf/kern.opts.mk Thu Oct 5 21:36:56 2017 (r324339) +++ head/sys/conf/kern.opts.mk Thu Oct 5 23:01:33 2017 (r324340) @@ -62,7 +62,7 @@ __DEFAULT_NO_OPTIONS = \ # Things that don't work based on the CPU .if ${MACHINE_CPUARCH} == "arm" -. if ${MACHINE_ARCH:Marmv6*} == "" +. if ${MACHINE_ARCH:Marmv[67]*} == "" BROKEN_OPTIONS+= CDDL ZFS . endif .endif Modified: head/sys/conf/kern.pre.mk ============================================================================== --- head/sys/conf/kern.pre.mk Thu Oct 5 21:36:56 2017 (r324339) +++ head/sys/conf/kern.pre.mk Thu Oct 5 23:01:33 2017 (r324340) @@ -255,6 +255,7 @@ EMBEDFS_ARCH.${MACHINE_ARCH}!= sed -n '/OUTPUT_ARCH/s/ EMBEDFS_FORMAT.arm?= elf32-littlearm EMBEDFS_FORMAT.armv6?= elf32-littlearm +EMBEDFS_FORMAT.armv7?= elf32-littlearm EMBEDFS_FORMAT.aarch64?= elf64-littleaarch64 EMBEDFS_FORMAT.mips?= elf32-tradbigmips EMBEDFS_FORMAT.mipsel?= elf32-tradlittlemips Modified: head/sys/modules/Makefile ============================================================================== --- head/sys/modules/Makefile Thu Oct 5 21:36:56 2017 (r324339) +++ head/sys/modules/Makefile Thu Oct 5 23:01:33 2017 (r324340) @@ -426,7 +426,7 @@ _autofs= autofs .endif .if ${MK_CDDL} != "no" || defined(ALL_MODULES) -.if (${MACHINE_CPUARCH} != "arm" || ${MACHINE_ARCH:Marmv6*} != "") && \ +.if (${MACHINE_CPUARCH} != "arm" || ${MACHINE_ARCH:Marmv[67]*} != "") && \ ${MACHINE_CPUARCH} != "mips" && \ ${MACHINE_CPUARCH} != "sparc64" SUBDIR+= dtrace @@ -800,7 +800,7 @@ _em= em _epic= epic .endif -.if (${MACHINE_CPUARCH} == "amd64" || ${MACHINE_ARCH} == "armv6" || \ +.if (${MACHINE_CPUARCH} == "amd64" || ${MACHINE_ARCH:Marmv[67]*} != "" || \ ${MACHINE_CPUARCH} == "i386") _cloudabi32= cloudabi32 .endif @@ -810,7 +810,7 @@ _cloudabi64= cloudabi64 .endif -.if ${MACHINE_ARCH} == "armv6" +.if ${MACHINE_ARCH:Marmv[67]*} != "" _ffec= ffec .endif Modified: head/sys/modules/cloudabi32/Makefile ============================================================================== --- head/sys/modules/cloudabi32/Makefile Thu Oct 5 21:36:56 2017 (r324339) +++ head/sys/modules/cloudabi32/Makefile Thu Oct 5 23:01:33 2017 (r324340) @@ -18,7 +18,7 @@ CLEANFILES=cloudabi32_vdso.o VDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_i686_on_64bit.S OUTPUT_TARGET=elf64-x86-64-freebsd BINARY_ARCHITECTURE=i386 -.elif ${MACHINE_ARCH} == "armv6" +.elif ${MACHINE_ARCH:Marmv[67]*} != "" VDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_armv6.S OUTPUT_TARGET=elf32-littlearm BINARY_ARCHITECTURE=arm