diff -x .svn -I '$FreeBSD.*$' -Naur head/Makefile armv6/Makefile --- head/Makefile 2012-08-08 13:43:35.499724082 -0700 +++ armv6/Makefile 2012-08-09 12:08:25.460724118 -0700 @@ -135,7 +135,7 @@ _TARGET_ARCH= ${TARGET:S/pc98/i386/} .elif !defined(TARGET) && defined(TARGET_ARCH) && \ ${TARGET_ARCH} != ${MACHINE_ARCH} -_TARGET= ${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/} +_TARGET= ${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/} .endif # Legacy names, for another transition period mips:mips(n32|64)?eb -> mips:mips\1 .if defined(TARGET) && defined(TARGET_ARCH) && \ @@ -329,7 +329,7 @@ # .if make(universe) || make(universe_kernels) || make(tinderbox) || make(targets) TARGETS?=amd64 arm i386 ia64 mips pc98 powerpc sparc64 -TARGET_ARCHES_arm?= arm armeb +TARGET_ARCHES_arm?= arm armeb armv6 armv6eb TARGET_ARCHES_mips?= mipsel mips mips64el mips64 mipsn32 TARGET_ARCHES_powerpc?= powerpc powerpc64 TARGET_ARCHES_pc98?= i386 diff -x .svn -I '$FreeBSD.*$' -Naur head/Makefile.inc1 armv6/Makefile.inc1 --- head/Makefile.inc1 2012-08-08 13:43:34.581723937 -0700 +++ armv6/Makefile.inc1 2012-08-09 12:08:25.461724016 -0700 @@ -137,7 +137,7 @@ VERSION+= ${OSRELDATE} .endif -KNOWN_ARCHES?= amd64 arm armeb/arm i386 i386/pc98 ia64 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc sparc64 +KNOWN_ARCHES?= amd64 arm armeb/arm armv6/arm armv6eb/arm i386 i386/pc98 ia64 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc sparc64 .if ${TARGET} == ${TARGET_ARCH} _t= ${TARGET} .else diff -x .svn -I '$FreeBSD.*$' -Naur head/contrib/binutils/bfd/config.bfd armv6/contrib/binutils/bfd/config.bfd --- head/contrib/binutils/bfd/config.bfd 2012-08-08 12:40:40.374723870 -0700 +++ armv6/contrib/binutils/bfd/config.bfd 2012-08-08 12:42:12.988723902 -0700 @@ -277,6 +277,14 @@ targ_defvec=bfd_elf32_bigarm_vec targ_selvecs=bfd_elf32_littlearm_vec ;; + armv6eb-*-freebsd*) + targ_defvec=bfd_elf32_bigarm_vec + targ_selvecs=bfd_elf32_littlearm_vec + ;; + armv6-*-freebsd*) + targ_defvec=bfd_elf32_littlearm_vec + targ_selvecs=bfd_elf32_bigarm_vec + ;; arm-*-elf | arm-*-freebsd* | arm*-*-linux-* | arm*-*-conix* | \ arm*-*-uclinux* | arm-*-kfreebsd*-gnu | \ arm*-*-eabi* ) diff -x .svn -I '$FreeBSD.*$' -Naur head/contrib/binutils/config.sub armv6/contrib/binutils/config.sub --- head/contrib/binutils/config.sub 2012-08-08 12:40:31.591724209 -0700 +++ armv6/contrib/binutils/config.sub 2012-08-08 12:42:06.144724371 -0700 @@ -241,7 +241,7 @@ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | arc | arm | arm[bl]e | arme[lb] | armv[23456] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ diff -x .svn -I '$FreeBSD.*$' -Naur head/contrib/binutils/gas/config/tc-arm.c armv6/contrib/binutils/gas/config/tc-arm.c --- head/contrib/binutils/gas/config/tc-arm.c 2012-08-08 12:40:34.644723906 -0700 +++ armv6/contrib/binutils/gas/config/tc-arm.c 2012-08-09 20:37:41.509724350 -0700 @@ -20008,6 +20008,9 @@ {"cortex-a8", ARM_ARCH_V7A, ARM_FEATURE(0, FPU_VFP_V3 | FPU_NEON_EXT_V1), NULL}, + {"cortex-a9", ARM_ARCH_V7A, ARM_FEATURE(0, FPU_VFP_V3 + | FPU_NEON_EXT_V1), + NULL}, {"cortex-r4", ARM_ARCH_V7R, FPU_NONE, NULL}, {"cortex-m3", ARM_ARCH_V7M, FPU_NONE, NULL}, /* ??? XSCALE is really an architecture. */ @@ -20106,6 +20109,7 @@ {"vfp", FPU_ARCH_VFP_V2}, {"vfp9", FPU_ARCH_VFP_V2}, {"vfp3", FPU_ARCH_VFP_V3}, + {"vfpv3", FPU_ARCH_VFP_V3}, {"vfp10", FPU_ARCH_VFP_V2}, {"vfp10-r0", FPU_ARCH_VFP_V1}, {"vfpxd", FPU_ARCH_VFP_V1xD}, diff -x .svn -I '$FreeBSD.*$' -Naur head/contrib/gcc/config/arm/freebsd.h armv6/contrib/gcc/config/arm/freebsd.h --- head/contrib/gcc/config/arm/freebsd.h 2012-08-08 13:43:28.281723940 -0700 +++ armv6/contrib/gcc/config/arm/freebsd.h 2012-08-08 22:08:23.270724447 -0700 @@ -56,8 +56,6 @@ /************************[ Target stuff ]***********************************/ -#undef TARGET_VERSION -#define TARGET_VERSION fprintf (stderr, " (FreeBSD/StrongARM ELF)"); #ifndef TARGET_ENDIAN_DEFAULT #define TARGET_ENDIAN_DEFAULT 0 @@ -87,8 +85,22 @@ /* We use the GCC defaults here. */ #undef WCHAR_TYPE +#if defined(FREEBSD_ARCH_armv6) +#undef SUBTARGET_CPU_DEFAULT +#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm1176jzs +#undef FBSD_TARGET_CPU_CPP_BUILTINS +#define FBSD_TARGET_CPU_CPP_BUILTINS() \ + do { \ + builtin_define ("__FreeBSD_ARCH_armv6__"); \ + } while (0) +#undef TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (FreeBSD/armv6 ELF)"); +#else #undef SUBTARGET_CPU_DEFAULT #define SUBTARGET_CPU_DEFAULT TARGET_CPU_strongarm +#undef TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (FreeBSD/StrongARM ELF)"); +#endif /* FreeBSD does its profiling differently to the Acorn compiler. We don't need a word following the mcount call; and to skip it diff -x .svn -I '$FreeBSD.*$' -Naur head/gnu/usr.bin/binutils/Makefile.inc0 armv6/gnu/usr.bin/binutils/Makefile.inc0 --- head/gnu/usr.bin/binutils/Makefile.inc0 2012-08-08 12:39:08.746724617 -0700 +++ armv6/gnu/usr.bin/binutils/Makefile.inc0 2012-08-08 12:40:18.279723975 -0700 @@ -7,7 +7,7 @@ VERSION= "2.17.50 [FreeBSD] 2007-07-03" .if defined(TARGET_ARCH) -TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/:C/powerpc64/powerpc/} +TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/} .else TARGET_CPUARCH=${MACHINE_CPUARCH} .endif @@ -16,7 +16,7 @@ TARGET_OS?= freebsd BINUTILS_ARCH=${TARGET_ARCH:C/amd64/x86_64/} TARGET_TUPLE?= ${BINUTILS_ARCH}-${TARGET_VENDOR}-${TARGET_OS} -.if ${TARGET_ARCH} == "armeb" || \ +.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" || \ (${TARGET_CPUARCH} == "mips" && ${TARGET_ARCH:Mmips*el} == "") TARGET_BIG_ENDIAN=t .endif diff -x .svn -I '$FreeBSD.*$' -Naur head/gnu/usr.bin/binutils/as/Makefile armv6/gnu/usr.bin/binutils/as/Makefile --- head/gnu/usr.bin/binutils/as/Makefile 2012-08-08 12:39:08.728723754 -0700 +++ armv6/gnu/usr.bin/binutils/as/Makefile 2012-08-12 16:33:25.802724722 -0700 @@ -42,6 +42,10 @@ # DEO: why not used? #SRCS+= itbl-ops.c +.if ${TARGET_ARCH} == "armv6" || ${TARGET_ARCH} == "armv6eb" +CFLAGS+= -DCPU_DEFAULT=ARM_ARCH_V6K +.endif + .if ${TARGET_CPUARCH} == "mips" SRCS+= itbl-ops.c itbl-parse.y itbl-lex.l .if ${TARGET_ARCH:Mmips64*} != "" diff -x .svn -I '$FreeBSD.*$' -Naur head/gnu/usr.bin/binutils/ld/Makefile.arm armv6/gnu/usr.bin/binutils/ld/Makefile.arm --- head/gnu/usr.bin/binutils/ld/Makefile.arm 2012-08-08 12:39:08.597723847 -0700 +++ armv6/gnu/usr.bin/binutils/ld/Makefile.arm 2012-08-08 12:40:18.046723902 -0700 @@ -1,6 +1,6 @@ -# $FreeBSD: head/gnu/usr.bin/binutils/ld/Makefile.arm 219811 2011-03-21 04:03:55Z marcel $ +# $FreeBSD: projects/armv6/gnu/usr.bin/binutils/ld/Makefile.arm 238211 2012-07-07 19:12:15Z kientzle $ -.if ${TARGET_ARCH} == "armeb" +.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" NATIVE_EMULATION= armelfb_fbsd .else NATIVE_EMULATION= armelf_fbsd diff -x .svn -I '$FreeBSD.*$' -Naur head/gnu/usr.bin/binutils/libbfd/Makefile.arm armv6/gnu/usr.bin/binutils/libbfd/Makefile.arm --- head/gnu/usr.bin/binutils/libbfd/Makefile.arm 2012-08-08 12:39:08.541724612 -0700 +++ armv6/gnu/usr.bin/binutils/libbfd/Makefile.arm 2012-08-08 12:40:17.894723963 -0700 @@ -1,6 +1,6 @@ -# $FreeBSD: head/gnu/usr.bin/binutils/libbfd/Makefile.arm 218822 2011-02-18 20:54:12Z dim $ +# $FreeBSD: projects/armv6/gnu/usr.bin/binutils/libbfd/Makefile.arm 238211 2012-07-07 19:12:15Z kientzle $ -.if ${TARGET_ARCH} == "armeb" +.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" DEFAULT_VECTOR= bfd_elf32_bigarm_vec .else DEFAULT_VECTOR= bfd_elf32_littlearm_vec @@ -14,7 +14,7 @@ elflink.c VECS+= ${DEFAULT_VECTOR} -.if ${TARGET_ARCH} == "armeb" +.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" VECS+= bfd_elf32_littlearm_vec .else VECS+= bfd_elf32_bigarm_vec diff -x .svn -I '$FreeBSD.*$' -Naur head/gnu/usr.bin/cc/Makefile.inc armv6/gnu/usr.bin/cc/Makefile.inc --- head/gnu/usr.bin/cc/Makefile.inc 2012-08-08 12:39:08.086723944 -0700 +++ armv6/gnu/usr.bin/cc/Makefile.inc 2012-08-08 12:40:17.178723830 -0700 @@ -26,9 +26,12 @@ CFLAGS+= -DCROSS_COMPILE .endif -.if ${TARGET_ARCH} == "armeb" +.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" CFLAGS += -DTARGET_ENDIAN_DEFAULT=MASK_BIG_END .endif +.if ${TARGET_ARCH} == "armv6" || ${TARGET_ARCH} == "armv6eb" +CFLAGS += -DFREEBSD_ARCH_armv6 +.endif .if ${TARGET_CPUARCH} == "mips" .if ${TARGET_ARCH:Mmips*el} != "" diff -x .svn -I '$FreeBSD.*$' -Naur head/gnu/usr.bin/cc/Makefile.tgt armv6/gnu/usr.bin/cc/Makefile.tgt --- head/gnu/usr.bin/cc/Makefile.tgt 2012-08-08 12:39:08.183723870 -0700 +++ armv6/gnu/usr.bin/cc/Makefile.tgt 2012-08-08 12:40:17.229723950 -0700 @@ -4,7 +4,7 @@ # MACHINE_CPUARCH, but there's no easy way to export make functions... .if defined(TARGET_ARCH) -TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/:C/powerpc64/powerpc/} +TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/} .else TARGET_CPUARCH=${MACHINE_CPUARCH} .endif @@ -17,7 +17,7 @@ .if ${TARGET_ARCH} == "sparc64" TARGET_CPU_DEFAULT= TARGET_CPU_ultrasparc .endif -.if ${TARGET_ARCH} == "armeb" || \ +.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" || \ (${TARGET_CPUARCH} == "mips" && ${TARGET_ARCH:Mmips*el} == "") TARGET_BIG_ENDIAN=t .endif diff -x .svn -I '$FreeBSD.*$' -Naur head/gnu/usr.bin/gdb/Makefile.inc armv6/gnu/usr.bin/gdb/Makefile.inc --- head/gnu/usr.bin/gdb/Makefile.inc 2012-08-08 12:39:08.816723924 -0700 +++ armv6/gnu/usr.bin/gdb/Makefile.inc 2012-08-08 12:40:18.624723868 -0700 @@ -20,7 +20,7 @@ # MACHINE_CPUARCH, but there's no easy way to export make functions... .if defined(TARGET_ARCH) -TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/:C/powerpc64/powerpc/} +TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/} .else TARGET_CPUARCH=${MACHINE_CPUARCH} .endif diff -x .svn -I '$FreeBSD.*$' -Naur head/gnu/usr.bin/gdb/libgdb/Makefile armv6/gnu/usr.bin/gdb/libgdb/Makefile --- head/gnu/usr.bin/gdb/libgdb/Makefile 2012-08-08 12:39:08.812723882 -0700 +++ armv6/gnu/usr.bin/gdb/libgdb/Makefile 2012-08-08 12:40:18.620723751 -0700 @@ -4,7 +4,7 @@ # MACHINE_CPUARCH, but there's no easy way to export make functions... .if defined(TARGET_ARCH) -TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/:C/powerpc64/powerpc/} +TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/} .else TARGET_CPUARCH=${MACHINE_CPUARCH} .endif diff -x .svn -I '$FreeBSD.*$' -Naur head/share/mk/bsd.cpu.mk armv6/share/mk/bsd.cpu.mk --- head/share/mk/bsd.cpu.mk 2012-08-08 12:41:28.059724526 -0700 +++ armv6/share/mk/bsd.cpu.mk 2012-08-08 17:28:27.568723833 -0700 @@ -97,9 +97,13 @@ . if ${CPUTYPE} == "xscale" #XXX: gcc doesn't seem to like -mcpu=xscale, and dies while rebuilding itself #_CPUCFLAGS = -mcpu=xscale -_CPUCFLAGS = -march=armv5te -D__XSCALE__ +_CPUCFLAGS = -march=armv5te -D__XSCALE__ -DARM_WANT_TP_ADDRESS +. elif ${CPUTYPE} == "armv6" +_CPUCFLAGS = -march=${CPUTYPE} -DARM_ARCH_6=1 +. elif ${CPUTYPE} == "cortexa" +_CPUCFLAGS = -march=armv6 -DARM_ARCH_6=1 -mfpu=vfp . else -_CPUCFLAGS = -mcpu=${CPUTYPE} +_CPUCFLAGS = -mcpu=${CPUTYPE} -DARM_WANT_TP_ADDRESS . endif . elif ${MACHINE_ARCH} == "powerpc" . if ${CPUTYPE} == "e500" diff -x .svn -I '$FreeBSD.*$' -Naur head/share/mk/bsd.endian.mk armv6/share/mk/bsd.endian.mk --- head/share/mk/bsd.endian.mk 2012-08-08 12:41:28.072724475 -0700 +++ armv6/share/mk/bsd.endian.mk 2012-08-08 12:43:17.755723997 -0700 @@ -4,12 +4,14 @@ ${MACHINE_ARCH} == "i386" || \ ${MACHINE_ARCH} == "ia64" || \ ${MACHINE_ARCH} == "arm" || \ + ${MACHINE_ARCH} == "armv6" || \ ${MACHINE_ARCH:Mmips*el} != "" TARGET_ENDIANNESS= 1234 .elif ${MACHINE_ARCH} == "powerpc" || \ ${MACHINE_ARCH} == "powerpc64" || \ ${MACHINE_ARCH} == "sparc64" || \ ${MACHINE_ARCH} == "armeb" || \ + ${MACHINE_ARCH} == "armv6eb" || \ ${MACHINE_ARCH:Mmips*} != "" TARGET_ENDIANNESS= 4321 .endif diff -x .svn -I '$FreeBSD.*$' -Naur head/share/mk/sys.mk armv6/share/mk/sys.mk --- head/share/mk/sys.mk 2012-08-08 12:41:28.054724587 -0700 +++ armv6/share/mk/sys.mk 2012-08-08 12:43:17.737723884 -0700 @@ -13,7 +13,7 @@ # and/or endian. This is called MACHINE_CPU in NetBSD, but that's used # for something different in FreeBSD. # -MACHINE_CPUARCH=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/:C/powerpc64/powerpc/} +MACHINE_CPUARCH=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/} .endif # If the special target .POSIX appears (without prerequisites or diff -x .svn -I '$FreeBSD.*$' -Naur head/sys/conf/kern.pre.mk armv6/sys/conf/kern.pre.mk --- head/sys/conf/kern.pre.mk 2012-08-08 12:42:10.615724038 -0700 +++ armv6/sys/conf/kern.pre.mk 2012-08-08 12:43:55.826723845 -0700 @@ -6,7 +6,7 @@ .include # backwards compat option for older systems. -MACHINE_CPUARCH?=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/:C/powerpc64/powerpc/} +MACHINE_CPUARCH?=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/} # Can be overridden by makeoptions or /etc/make.conf KERNEL_KO?= kernel diff -x .svn -I '$FreeBSD.*$' -Naur head/sys/conf/kmod.mk armv6/sys/conf/kmod.mk --- head/sys/conf/kmod.mk 2012-08-08 13:43:36.083723960 -0700 +++ armv6/sys/conf/kmod.mk 2012-08-09 12:08:28.869723938 -0700 @@ -61,7 +61,7 @@ # # backwards compat option for older systems. -MACHINE_CPUARCH?=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/:C/powerpc64/powerpc/} +MACHINE_CPUARCH?=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/} AWK?= awk KMODLOAD?= /sbin/kldload diff -x .svn -I '$FreeBSD.*$' -Naur head/usr.bin/xlint/Makefile.inc armv6/usr.bin/xlint/Makefile.inc --- head/usr.bin/xlint/Makefile.inc 2012-08-08 12:38:31.167723836 -0700 +++ armv6/usr.bin/xlint/Makefile.inc 2012-08-08 12:39:28.863724389 -0700 @@ -8,7 +8,7 @@ # These assignments duplicate much of the functionality of # MACHINE_CPUARCH, but there's no easy way to export make functions... .if defined(TARGET_ARCH) -TARGET_CPUARCH= ${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/} +TARGET_CPUARCH= ${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/} .else TARGET_CPUARCH= ${MACHINE_CPUARCH} TARGET_ARCH= ${MACHINE_ARCH}