svn commit: r307981 - in user/alc/PQ_LAUNDRY: contrib/elftoolchain/strings crypto/openssl/crypto crypto/openssl/crypto/aes/asm crypto/openssl/crypto/modes/asm lib/libproc lib/libsysdecode secure/li...

Mark Johnston markj at FreeBSD.org
Thu Oct 27 00:33:18 UTC 2016


Author: markj
Date: Thu Oct 27 00:33:14 2016
New Revision: 307981
URL: https://svnweb.freebsd.org/changeset/base/307981

Log:
  MFH r307980

Added:
  user/alc/PQ_LAUNDRY/secure/lib/libcrypto/aarch64/
     - copied from r307980, head/secure/lib/libcrypto/aarch64/
  user/alc/PQ_LAUNDRY/sys/arm64/arm64/memcpy.S
     - copied unchanged from r307980, head/sys/arm64/arm64/memcpy.S
  user/alc/PQ_LAUNDRY/sys/arm64/arm64/memmove.S
     - copied unchanged from r307980, head/sys/arm64/arm64/memmove.S
  user/alc/PQ_LAUNDRY/sys/boot/Makefile.ficl
     - copied unchanged from r307980, head/sys/boot/Makefile.ficl
  user/alc/PQ_LAUNDRY/sys/dev/fdt/fdt_intr.h
     - copied unchanged from r307980, head/sys/dev/fdt/fdt_intr.h
Deleted:
  user/alc/PQ_LAUNDRY/sys/arm64/arm64/bcopy.c
Modified:
  user/alc/PQ_LAUNDRY/contrib/elftoolchain/strings/strings.c
  user/alc/PQ_LAUNDRY/crypto/openssl/crypto/aes/asm/aesv8-armx.pl
  user/alc/PQ_LAUNDRY/crypto/openssl/crypto/arm64cpuid.S
  user/alc/PQ_LAUNDRY/crypto/openssl/crypto/modes/asm/ghashv8-armx.pl
  user/alc/PQ_LAUNDRY/lib/libproc/proc_bkpt.c
  user/alc/PQ_LAUNDRY/lib/libsysdecode/flags.c
  user/alc/PQ_LAUNDRY/secure/lib/libcrypto/Makefile
  user/alc/PQ_LAUNDRY/secure/lib/libcrypto/Makefile.asm
  user/alc/PQ_LAUNDRY/secure/lib/libcrypto/Makefile.inc
  user/alc/PQ_LAUNDRY/sys/amd64/amd64/sys_machdep.c
  user/alc/PQ_LAUNDRY/sys/amd64/vmm/amd/svm.c
  user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_nmi.c
  user/alc/PQ_LAUNDRY/sys/arm/allwinner/clk/aw_pll.c
  user/alc/PQ_LAUNDRY/sys/arm/arm/cpufunc_asm_arm11x6.S
  user/alc/PQ_LAUNDRY/sys/arm/arm/cpufunc_asm_armv7.S
  user/alc/PQ_LAUNDRY/sys/arm/arm/gic.c
  user/alc/PQ_LAUNDRY/sys/arm/include/cpu-v6.h
  user/alc/PQ_LAUNDRY/sys/arm/include/cpufunc.h
  user/alc/PQ_LAUNDRY/sys/arm/include/platformvar.h
  user/alc/PQ_LAUNDRY/sys/arm/ti/am335x/am335x_dmtimer.c
  user/alc/PQ_LAUNDRY/sys/arm/ti/ti_machdep.c
  user/alc/PQ_LAUNDRY/sys/arm64/arm64/gic_v3.c
  user/alc/PQ_LAUNDRY/sys/arm64/arm64/mp_machdep.c
  user/alc/PQ_LAUNDRY/sys/arm64/arm64/trap.c
  user/alc/PQ_LAUNDRY/sys/boot/common/Makefile.inc
  user/alc/PQ_LAUNDRY/sys/boot/common/pnp.c
  user/alc/PQ_LAUNDRY/sys/boot/efi/libefi/Makefile
  user/alc/PQ_LAUNDRY/sys/boot/efi/libefi/env.c
  user/alc/PQ_LAUNDRY/sys/boot/efi/loader/main.c
  user/alc/PQ_LAUNDRY/sys/boot/ficl/Makefile
  user/alc/PQ_LAUNDRY/sys/boot/ficl32/Makefile
  user/alc/PQ_LAUNDRY/sys/boot/i386/Makefile.inc
  user/alc/PQ_LAUNDRY/sys/boot/i386/gptboot/Makefile
  user/alc/PQ_LAUNDRY/sys/boot/i386/gptzfsboot/Makefile
  user/alc/PQ_LAUNDRY/sys/boot/i386/libi386/biospci.c
  user/alc/PQ_LAUNDRY/sys/boot/i386/loader/Makefile
  user/alc/PQ_LAUNDRY/sys/conf/files.arm64
  user/alc/PQ_LAUNDRY/sys/dev/bfe/if_bfe.c
  user/alc/PQ_LAUNDRY/sys/dev/bxe/bxe.c
  user/alc/PQ_LAUNDRY/sys/dev/gpio/gpiobusvar.h
  user/alc/PQ_LAUNDRY/sys/dev/gpio/ofw_gpiobus.c
  user/alc/PQ_LAUNDRY/sys/dev/hyperv/vmbus/vmbus.c
  user/alc/PQ_LAUNDRY/sys/dev/hyperv/vmbus/vmbus_chan.c
  user/alc/PQ_LAUNDRY/sys/dev/psci/psci.c
  user/alc/PQ_LAUNDRY/sys/dev/psci/psci.h
  user/alc/PQ_LAUNDRY/sys/dev/usb/net/uhso.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/usb_device.c
  user/alc/PQ_LAUNDRY/sys/i386/i386/initcpu.c
  user/alc/PQ_LAUNDRY/sys/mips/include/signal.h
  user/alc/PQ_LAUNDRY/sys/net/if_bridge.c
  user/alc/PQ_LAUNDRY/sys/netinet/cc/cc_cdg.c
  user/alc/PQ_LAUNDRY/sys/netinet/cc/cc_chd.c
  user/alc/PQ_LAUNDRY/sys/netinet/cc/cc_cubic.c
  user/alc/PQ_LAUNDRY/sys/netinet/cc/cc_dctcp.c
  user/alc/PQ_LAUNDRY/sys/netinet/cc/cc_htcp.c
  user/alc/PQ_LAUNDRY/sys/netinet/cc/cc_newreno.c
  user/alc/PQ_LAUNDRY/sys/netinet/tcp_input.c
  user/alc/PQ_LAUNDRY/sys/netinet/tcp_stacks/fastpath.c
  user/alc/PQ_LAUNDRY/sys/netinet/tcp_syncache.c
  user/alc/PQ_LAUNDRY/sys/ufs/ufs/ufs_vnops.c
  user/alc/PQ_LAUNDRY/tests/sys/geom/class/uzip/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/bhyve/dbgport.c
  user/alc/PQ_LAUNDRY/usr.sbin/bhyve/vga.c   (contents, props changed)
  user/alc/PQ_LAUNDRY/usr.sbin/config/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/makefs/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/makefs/cd9660.c
  user/alc/PQ_LAUNDRY/usr.sbin/makefs/cd9660/Makefile.inc
  user/alc/PQ_LAUNDRY/usr.sbin/makefs/cd9660/cd9660_archimedes.c
  user/alc/PQ_LAUNDRY/usr.sbin/makefs/cd9660/iso9660_rrip.c
  user/alc/PQ_LAUNDRY/usr.sbin/makefs/ffs/Makefile.inc
  user/alc/PQ_LAUNDRY/usr.sbin/makefs/ffs/ffs_bswap.c
  user/alc/PQ_LAUNDRY/usr.sbin/makefs/ffs/ffs_subr.c
  user/alc/PQ_LAUNDRY/usr.sbin/makefs/mtree.c
  user/alc/PQ_LAUNDRY/usr.sbin/makefs/walk.c
Directory Properties:
  user/alc/PQ_LAUNDRY/   (props changed)
  user/alc/PQ_LAUNDRY/contrib/elftoolchain/   (props changed)
  user/alc/PQ_LAUNDRY/crypto/openssl/   (props changed)

Modified: user/alc/PQ_LAUNDRY/contrib/elftoolchain/strings/strings.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/elftoolchain/strings/strings.c	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/contrib/elftoolchain/strings/strings.c	Thu Oct 27 00:33:14 2016	(r307981)
@@ -48,12 +48,6 @@
 
 ELFTC_VCSID("$Id: strings.c 3446 2016-05-03 01:31:17Z emaste $");
 
-enum return_code {
-	RETURN_OK,
-	RETURN_NOINPUT,
-	RETURN_SOFTWARE
-};
-
 enum radix_style {
 	RADIX_DECIMAL,
 	RADIX_HEX,
@@ -107,7 +101,7 @@ main(int argc, char **argv)
 {
 	int ch, rc;
 
-	rc = RETURN_OK;
+	rc = 0;
 	min_len = 0;
 	encoding_size = 1;
 	if (elf_version(EV_CURRENT) == EV_NONE)
@@ -197,7 +191,8 @@ main(int argc, char **argv)
 	if (!*argv)
 		rc = handle_file("{standard input}");
 	else while (*argv) {
-		rc = handle_file(*argv);
+		if (handle_file(*argv) != 0)
+			rc = 1;
 		argv++;
 	}
 	return (rc);
@@ -209,11 +204,11 @@ handle_file(const char *name)
 	int fd, rt;
 
 	if (name == NULL)
-		return (RETURN_NOINPUT);
+		return (1);
 	if (strcmp("{standard input}", name) != 0) {
 		if (freopen(name, "rb", stdin) == NULL) {
 			warnx("'%s': %s", name, strerror(errno));
-			return (RETURN_NOINPUT);
+			return (1);
 		}
 	} else {
 		return (find_strings(name, (off_t)0, (off_t)0));
@@ -221,7 +216,7 @@ handle_file(const char *name)
 
 	fd = fileno(stdin);
 	if (fd < 0)
-		return (RETURN_NOINPUT);
+		return (1);
 	rt = handle_elf(name, fd);
 	return (rt);
 }
@@ -239,7 +234,7 @@ handle_binary(const char *name, int fd)
 	(void) lseek(fd, (off_t)0, SEEK_SET);
 	if (!fstat(fd, &buf))
 		return (find_strings(name, (off_t)0, buf.st_size));
-	return (RETURN_SOFTWARE);
+	return (1);
 }
 
 /*
@@ -257,7 +252,7 @@ handle_elf(const char *name, int fd)
 	Elf_Scn *scn;
 	int rc;
 
-	rc = RETURN_OK;
+	rc = 0;
 	/* If entire file is chosen, treat it as a binary file */
 	if (entire_file)
 		return (handle_binary(name, fd));
@@ -272,7 +267,7 @@ handle_elf(const char *name, int fd)
 	if (gelf_getehdr(elf, &elfhdr) == NULL) {
 		(void) elf_end(elf);
 		warnx("%s: ELF file could not be processed", name);
-		return (RETURN_SOFTWARE);
+		return (1);
 	}
 
 	if (elfhdr.e_shnum == 0 && elfhdr.e_type == ET_CORE) {
@@ -352,7 +347,7 @@ find_strings(const char *name, off_t off
 	if ((obuf = (char*)calloc(1, min_len + 1)) == NULL) {
 		(void) fprintf(stderr, "Unable to allocate memory: %s\n",
 		     strerror(errno));
-		return (RETURN_SOFTWARE);
+		return (1);
 	}
 
 	(void) fseeko(stdin, offset, SEEK_SET);
@@ -426,7 +421,7 @@ find_strings(const char *name, off_t off
 	}
 _exit1:
 	free(obuf);
-	return (RETURN_OK);
+	return (0);
 }
 
 #define	USAGE_MESSAGE	"\

Modified: user/alc/PQ_LAUNDRY/crypto/openssl/crypto/aes/asm/aesv8-armx.pl
==============================================================================
--- user/alc/PQ_LAUNDRY/crypto/openssl/crypto/aes/asm/aesv8-armx.pl	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/crypto/openssl/crypto/aes/asm/aesv8-armx.pl	Thu Oct 27 00:33:14 2016	(r307981)
@@ -42,7 +42,7 @@ $code=<<___;
 #if __ARM_MAX_ARCH__>=7
 .text
 ___
-$code.=".arch	armv8-a+crypto\n"			if ($flavour =~ /64/);
+# $code.=".arch	armv8-a+crypto\n"			if ($flavour =~ /64/);
 $code.=".arch	armv7-a\n.fpu	neon\n.code	32\n"	if ($flavour !~ /64/);
 		#^^^^^^ this is done to simplify adoption by not depending
 		#	on latest binutils.

Modified: user/alc/PQ_LAUNDRY/crypto/openssl/crypto/arm64cpuid.S
==============================================================================
--- user/alc/PQ_LAUNDRY/crypto/openssl/crypto/arm64cpuid.S	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/crypto/openssl/crypto/arm64cpuid.S	Thu Oct 27 00:33:14 2016	(r307981)
@@ -1,7 +1,6 @@
 #include "arm_arch.h"
 
 .text
-.arch	armv8-a+crypto
 
 .align	5
 .global	_armv7_neon_probe

Modified: user/alc/PQ_LAUNDRY/crypto/openssl/crypto/modes/asm/ghashv8-armx.pl
==============================================================================
--- user/alc/PQ_LAUNDRY/crypto/openssl/crypto/modes/asm/ghashv8-armx.pl	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/crypto/openssl/crypto/modes/asm/ghashv8-armx.pl	Thu Oct 27 00:33:14 2016	(r307981)
@@ -49,7 +49,7 @@ $code=<<___;
 
 .text
 ___
-$code.=".arch	armv8-a+crypto\n"	if ($flavour =~ /64/);
+# $code.=".arch	armv8-a+crypto\n"	if ($flavour =~ /64/);
 $code.=".fpu	neon\n.code	32\n"	if ($flavour !~ /64/);
 
 ################################################################################

Modified: user/alc/PQ_LAUNDRY/lib/libproc/proc_bkpt.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libproc/proc_bkpt.c	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/lib/libproc/proc_bkpt.c	Thu Oct 27 00:33:14 2016	(r307981)
@@ -68,6 +68,14 @@ __FBSDID("$FreeBSD$");
 #error "Add support for your architecture"
 #endif
 
+/*
+ * Use 4-bytes holder for breakpoint instruction on all the platforms.
+ * Works for x86 as well until it is endian-little platform.
+ * (We are coping one byte only on x86 from this 4-bytes piece of
+ * memory).
+ */
+typedef uint32_t instr_t;
+
 static int
 proc_stop(struct proc_handle *phdl)
 {
@@ -92,8 +100,9 @@ proc_bkptset(struct proc_handle *phdl, u
     unsigned long *saved)
 {
 	struct ptrace_io_desc piod;
-	unsigned long paddr, caddr;
+	unsigned long caddr;
 	int ret = 0, stopped;
+	instr_t instr;
 
 	*saved = 0;
 	if (phdl->status == PS_DEAD || phdl->status == PS_UNDEAD ||
@@ -115,10 +124,10 @@ proc_bkptset(struct proc_handle *phdl, u
 	 * Read the original instruction.
 	 */
 	caddr = address;
-	paddr = 0;
+	instr = 0;
 	piod.piod_op = PIOD_READ_I;
 	piod.piod_offs = (void *)caddr;
-	piod.piod_addr = &paddr;
+	piod.piod_addr = &instr;
 	piod.piod_len  = BREAKPOINT_INSTR_SZ;
 	if (ptrace(PT_IO, proc_getpid(phdl), (caddr_t)&piod, 0) < 0) {
 		DPRINTF("ERROR: couldn't read instruction at address 0x%"
@@ -126,15 +135,15 @@ proc_bkptset(struct proc_handle *phdl, u
 		ret = -1;
 		goto done;
 	}
-	*saved = paddr;
+	*saved = instr;
 	/*
 	 * Write a breakpoint instruction to that address.
 	 */
 	caddr = address;
-	paddr = BREAKPOINT_INSTR;
+	instr = BREAKPOINT_INSTR;
 	piod.piod_op = PIOD_WRITE_I;
 	piod.piod_offs = (void *)caddr;
-	piod.piod_addr = &paddr;
+	piod.piod_addr = &instr;
 	piod.piod_len  = BREAKPOINT_INSTR_SZ;
 	if (ptrace(PT_IO, proc_getpid(phdl), (caddr_t)&piod, 0) < 0) {
 		DPRINTF("ERROR: couldn't write instruction at address 0x%"
@@ -156,8 +165,9 @@ proc_bkptdel(struct proc_handle *phdl, u
     unsigned long saved)
 {
 	struct ptrace_io_desc piod;
-	unsigned long paddr, caddr;
+	unsigned long caddr;
 	int ret = 0, stopped;
+	instr_t instr;
 
 	if (phdl->status == PS_DEAD || phdl->status == PS_UNDEAD ||
 	    phdl->status == PS_IDLE) {
@@ -178,10 +188,10 @@ proc_bkptdel(struct proc_handle *phdl, u
 	 * Overwrite the breakpoint instruction that we setup previously.
 	 */
 	caddr = address;
-	paddr = saved;
+	instr = saved;
 	piod.piod_op = PIOD_WRITE_I;
 	piod.piod_offs = (void *)caddr;
-	piod.piod_addr = &paddr;
+	piod.piod_addr = &instr;
 	piod.piod_len  = BREAKPOINT_INSTR_SZ;
 	if (ptrace(PT_IO, proc_getpid(phdl), (caddr_t)&piod, 0) < 0) {
 		DPRINTF("ERROR: couldn't write instruction at address 0x%"

Modified: user/alc/PQ_LAUNDRY/lib/libsysdecode/flags.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libsysdecode/flags.c	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/lib/libsysdecode/flags.c	Thu Oct 27 00:33:14 2016	(r307981)
@@ -959,7 +959,7 @@ sysdecode_umtx_rwlock_flags(FILE *fp, u_
 }
 
 /* XXX: This should be in <sys/capsicum.h> */
-#define	CAPMASK(right)	((right) && (((uint64_t)1 << 57) - 1))
+#define	CAPMASK(right)	((right) & (((uint64_t)1 << 57) - 1))
 
 void
 sysdecode_cap_rights(FILE *fp, cap_rights_t *rightsp)

Modified: user/alc/PQ_LAUNDRY/secure/lib/libcrypto/Makefile
==============================================================================
--- user/alc/PQ_LAUNDRY/secure/lib/libcrypto/Makefile	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/secure/lib/libcrypto/Makefile	Thu Oct 27 00:33:14 2016	(r307981)
@@ -22,7 +22,10 @@ MAN+=	config.5 des_modes.7
 # base sources
 SRCS=	cpt_err.c cryptlib.c cversion.c ex_data.c mem.c mem_dbg.c o_dir.c \
 	o_fips.c o_init.c o_str.c o_time.c uid.c
-.if defined(ASM_amd64)
+.if defined(ASM_aarch64)
+SRCS+=	arm64cpuid.S armcap.c mem_clr.c
+ACFLAGS.arm64cpuid.S=	-march=armv8-a+crypto
+.elif defined(ASM_amd64)
 SRCS+=	x86_64cpuid.S
 .elif defined(ASM_arm)
 SRCS+=	armcap.c armv4cpuid.S
@@ -35,7 +38,10 @@ INCS+=	crypto.h ebcdic.h opensslv.h ossl
 
 # aes
 SRCS+=	aes_cfb.c aes_ctr.c aes_ecb.c aes_ige.c aes_misc.c aes_ofb.c aes_wrap.c
-.if defined(ASM_amd64)
+.if defined(ASM_aarch64)
+SRCS+=	aes_cbc.c aes_core.c aesv8-armx.S
+ACFLAGS.aesv8-armx.S=	-march=armv8-a+crypto
+.elif defined(ASM_amd64)
 SRCS+=	aes-x86_64.S aesni-mb-x86_64.S aesni-sha1-x86_64.S \
 	aesni-sha256-x86_64.S aesni-x86_64.S bsaes-x86_64.S vpaes-x86_64.S
 .elif defined(ASM_arm)
@@ -238,7 +244,10 @@ INCS+=	mdc2.h
 # modes
 SRCS+=	cbc128.c ccm128.c cfb128.c ctr128.c cts128.c gcm128.c ofb128.c \
 	wrap128.c xts128.c
-.if defined(ASM_amd64)
+.if defined(ASM_aarch64)
+SRCS+=	ghashv8-armx.S
+ACFLAGS.ghashv8-armx.S=	-march=armv8-a+crypto
+.elif defined(ASM_amd64)
 SRCS+=	aesni-gcm-x86_64.S ghash-x86_64.S
 .elif defined(ASM_arm)
 SRCS+=	ghash-armv4.S ghashv8-armx.S
@@ -324,7 +333,9 @@ INCS+=	seed.h
 
 # sha
 SRCS+=	sha1_one.c sha1dgst.c sha256.c sha512.c sha_dgst.c sha_one.c
-.if defined(ASM_amd64)
+.if defined(ASM_aarch64)
+SRCS+=	sha1-armv8.S sha256-armv8.S sha512-armv8.S
+.elif defined(ASM_amd64)
 SRCS+=	sha1-mb-x86_64.S sha1-x86_64.S sha256-mb-x86_64.S sha256-x86_64.S \
 	sha512-x86_64.S
 .elif defined(ASM_arm)

Modified: user/alc/PQ_LAUNDRY/secure/lib/libcrypto/Makefile.asm
==============================================================================
--- user/alc/PQ_LAUNDRY/secure/lib/libcrypto/Makefile.asm	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/secure/lib/libcrypto/Makefile.asm	Thu Oct 27 00:33:14 2016	(r307981)
@@ -6,7 +6,44 @@
 
 .include "Makefile.inc"
 
-.if defined(ASM_amd64)
+.if defined(ASM_aarch64)
+
+.PATH:	${LCRYPTO_SRC}/crypto \
+	${LCRYPTO_SRC}/crypto/aes/asm \
+	${LCRYPTO_SRC}/crypto/modes/asm \
+	${LCRYPTO_SRC}/crypto/sha/asm
+
+PERLPATH=	-I${LCRYPTO_SRC}/crypto/perlasm
+
+# aes
+SRCS=	aesv8-armx.pl
+
+# modes
+SRCS+=	ghashv8-armx.pl
+
+# sha
+SRCS+=	sha1-armv8.pl sha512-armv8.pl
+
+ASM=	${SRCS:R:S/$/.S/} sha256-armv8.S
+
+all:	${ASM}
+
+CLEANFILES=	${ASM} ${SRCS:R:S/$/.s/} sha256-armv8.s
+.SUFFIXES:	.pl
+
+sha256-armv8.S:	sha512-armv8.pl
+	env CC=cc perl ${.ALLSRC} 64 ${.TARGET:R:S/$/.s/}
+	( echo '/* $$'FreeBSD'$$ */' ;\
+	echo '/* Do not modify. This file is auto-generated from ${.ALLSRC:T:R:S/$/.pl/}. */' ;\
+	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
+
+.pl.S:
+	env CC=cc perl ${.IMPSRC} 64 ${.TARGET:R:S/$/.s/}
+	( echo '/* $$'FreeBSD'$$ */' ;\
+	echo '/* Do not modify. This file is auto-generated from ${.IMPSRC:T:R:S/$/.pl/}. */' ;\
+	cat ${.TARGET:R:S/$/.s/}) > ${.TARGET}
+
+.elif defined(ASM_amd64)
 
 .PATH:	${LCRYPTO_SRC}/crypto \
 	${LCRYPTO_SRC}/crypto/aes/asm \

Modified: user/alc/PQ_LAUNDRY/secure/lib/libcrypto/Makefile.inc
==============================================================================
--- user/alc/PQ_LAUNDRY/secure/lib/libcrypto/Makefile.inc	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/secure/lib/libcrypto/Makefile.inc	Thu Oct 27 00:33:14 2016	(r307981)
@@ -21,7 +21,9 @@ CFLAGS+=-DL_ENDIAN
 CFLAGS+=-DB_ENDIAN
 .endif
 
-.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
+.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "arm"
+ASM_${MACHINE_CPUARCH}=
+.elif ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
 _ASM_AVX!=	{ \
 		    echo vzeroall | \
 		    ${CC} -x assembler -o /dev/null -c - 2> /dev/null; \
@@ -29,11 +31,11 @@ _ASM_AVX!=	{ \
 .if ${_ASM_AVX} == yes
 ASM_${MACHINE_CPUARCH}=
 .endif
-.elif ${MACHINE_CPUARCH} == "arm"
-ASM_arm=
 .endif
 
-.if defined(ASM_amd64)
+.if defined(ASM_aarch64)
+CFLAGS+=-DSHA1_ASM -DSHA256_ASM -DSHA512_ASM
+.elif defined(ASM_amd64)
 CFLAGS+=-DOPENSSL_IA32_SSE2
 CFLAGS+=-DAES_ASM -DBSAES_ASM -DVPAES_ASM
 CFLAGS+=-DECP_NISTZ256_ASM

Modified: user/alc/PQ_LAUNDRY/sys/amd64/amd64/sys_machdep.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/amd64/amd64/sys_machdep.c	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/sys/amd64/amd64/sys_machdep.c	Thu Oct 27 00:33:14 2016	(r307981)
@@ -608,6 +608,8 @@ amd64_set_ldt(td, uap, descs)
 		largest_ld = uap->start + uap->num;
 		if (largest_ld > max_ldt_segment)
 			largest_ld = max_ldt_segment;
+		if (largest_ld < uap->start)
+			return (EINVAL);
 		i = largest_ld - uap->start;
 		mtx_lock(&dt_lock);
 		bzero(&((struct user_segment_descriptor *)(pldt->ldt_base))
@@ -620,7 +622,8 @@ amd64_set_ldt(td, uap, descs)
 		/* verify range of descriptors to modify */
 		largest_ld = uap->start + uap->num;
 		if (uap->start >= max_ldt_segment ||
-		    largest_ld > max_ldt_segment)
+		    largest_ld > max_ldt_segment ||
+		    largest_ld < uap->start)
 			return (EINVAL);
 	}
 

Modified: user/alc/PQ_LAUNDRY/sys/amd64/vmm/amd/svm.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/amd64/vmm/amd/svm.c	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/sys/amd64/vmm/amd/svm.c	Thu Oct 27 00:33:14 2016	(r307981)
@@ -47,6 +47,7 @@ __FBSDID("$FreeBSD$");
 #include <machine/vmm.h>
 #include <machine/vmm_dev.h>
 #include <machine/vmm_instruction_emul.h>
+#include <machine/vmparam.h>
 
 #include "vmm_lapic.h"
 #include "vmm_stat.h"
@@ -517,7 +518,8 @@ svm_vminit(struct vm *vm, pmap_t pmap)
 	vm_paddr_t msrpm_pa, iopm_pa, pml4_pa;	
 	int i;
 
-	svm_sc = malloc(sizeof (struct svm_softc), M_SVM, M_WAITOK | M_ZERO);
+	svm_sc = contigmalloc(sizeof (*svm_sc), M_SVM, M_WAITOK | M_ZERO,
+	    0, VM_MAX_ADDRESS, PAGE_SIZE, 0);
 	svm_sc->vm = vm;
 	svm_sc->nptp = (vm_offset_t)vtophys(pmap->pm_pml4);
 
@@ -2042,7 +2044,7 @@ svm_vmcleanup(void *arg)
 {
 	struct svm_softc *sc = arg;
 
-	free(sc, M_SVM);
+	contigfree(sc, sizeof (*sc), M_SVM);
 }
 
 static register_t *

Modified: user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_nmi.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_nmi.c	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_nmi.c	Thu Oct 27 00:33:14 2016	(r307981)
@@ -40,12 +40,11 @@ __FBSDID("$FreeBSD$");
 #include <machine/intr.h>
 
 #include <dev/fdt/fdt_common.h>
+#include <dev/fdt/fdt_intr.h>
 #include <dev/ofw/openfirm.h>
 #include <dev/ofw/ofw_bus.h>
 #include <dev/ofw/ofw_bus_subr.h>
 
-#include <dt-bindings/interrupt-controller/irq.h>
-
 #include "pic_if.h"
 
 #define	NMI_IRQ_CTRL_REG	0x0
@@ -155,19 +154,19 @@ aw_nmi_map_fdt(device_t dev, u_int ncell
 	tripol = cells[1];
 
 	switch (tripol) {
-	case IRQ_TYPE_EDGE_RISING:
+	case FDT_INTR_EDGE_RISING:
 		trig = INTR_TRIGGER_EDGE;
 		pol  = INTR_POLARITY_HIGH;
 		break;
-	case IRQ_TYPE_EDGE_FALLING:
+	case FDT_INTR_EDGE_FALLING:
 		trig = INTR_TRIGGER_EDGE;
 		pol  = INTR_POLARITY_LOW;
 		break;
-	case IRQ_TYPE_LEVEL_HIGH:
+	case FDT_INTR_LEVEL_HIGH:
 		trig = INTR_TRIGGER_LEVEL;
 		pol  = INTR_POLARITY_HIGH;
 		break;
-	case IRQ_TYPE_LEVEL_LOW:
+	case FDT_INTR_LEVEL_LOW:
 		trig = INTR_TRIGGER_LEVEL;
 		pol  = INTR_POLARITY_LOW;
 		break;

Modified: user/alc/PQ_LAUNDRY/sys/arm/allwinner/clk/aw_pll.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/arm/allwinner/clk/aw_pll.c	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/sys/arm/allwinner/clk/aw_pll.c	Thu Oct 27 00:33:14 2016	(r307981)
@@ -47,12 +47,15 @@ __FBSDID("$FreeBSD$");
 
 #include <dev/extres/clk/clk.h>
 
-#include <dt-bindings/clock/sun4i-a10-pll2.h>
-
 #include <arm/allwinner/aw_machdep.h>
 
 #include "clkdev_if.h"
 
+#define	SUN4I_A10_PLL2_1X		0
+#define	SUN4I_A10_PLL2_2X		1
+#define	SUN4I_A10_PLL2_4X		2
+#define	SUN4I_A10_PLL2_8X		3
+
 #define	AW_PLL_ENABLE			(1 << 31)
 
 #define	A10_PLL1_OUT_EXT_DIVP		(0x3 << 16)
@@ -192,6 +195,16 @@ struct aw_pll_factor {
 #define	PLLFACTOR(_n, _k, _m, _p, _freq)	\
 	{ .n = (_n), .k = (_k), .m = (_m), .p = (_p), .freq = (_freq) }
 
+static struct aw_pll_factor aw_a10_pll1_factors[] = {
+	PLLFACTOR(6, 0, 0, 0, 144000000),
+	PLLFACTOR(12, 0, 0, 0, 312000000),
+	PLLFACTOR(21, 0, 0, 0, 528000000),
+	PLLFACTOR(29, 0, 0, 0, 720000000),
+	PLLFACTOR(18, 1, 0, 0, 864000000),
+	PLLFACTOR(19, 1, 0, 0, 912000000),
+	PLLFACTOR(20, 1, 0, 0, 960000000),
+};
+
 static struct aw_pll_factor aw_a23_pll1_factors[] = {
 	PLLFACTOR(9, 0, 0, 2, 60000000),
 	PLLFACTOR(10, 0, 0, 2, 66000000),
@@ -300,6 +313,38 @@ struct aw_pll_funcs {
 #define	DEVICE_UNLOCK(sc)	CLKDEV_DEVICE_UNLOCK((sc)->clkdev)
 
 static int
+a10_pll1_set_freq(struct aw_pll_sc *sc, uint64_t fin, uint64_t *fout,
+    int flags)
+{
+	struct aw_pll_factor *f;
+	uint32_t val;
+	int n;
+
+	f = NULL;
+	for (n = 0; n < nitems(aw_a10_pll1_factors); n++) {
+		if (aw_a10_pll1_factors[n].freq == *fout) {
+			f = &aw_a10_pll1_factors[n];
+			break;
+		}
+	}
+	if (f == NULL)
+		return (EINVAL);
+
+	DEVICE_LOCK(sc);
+	PLL_READ(sc, &val);
+	val &= ~(A10_PLL1_FACTOR_N|A10_PLL1_FACTOR_K|A10_PLL1_FACTOR_M|
+		A10_PLL1_OUT_EXT_DIVP);
+	val |= (f->p << A10_PLL1_OUT_EXT_DIVP_SHIFT);
+	val |= (f->n << A10_PLL1_FACTOR_N_SHIFT);
+	val |= (f->k << A10_PLL1_FACTOR_K_SHIFT);
+	val |= (f->m << A10_PLL1_FACTOR_M_SHIFT);
+	PLL_WRITE(sc, val);
+	DEVICE_UNLOCK(sc);
+
+	return (0);
+}
+
+static int
 a10_pll1_recalc(struct aw_pll_sc *sc, uint64_t *freq)
 {
 	uint32_t val, m, n, k, p;
@@ -948,7 +993,7 @@ a83t_pllcpux_set_freq(struct aw_pll_sc *
 	}
 
 static struct aw_pll_funcs aw_pll_func[] = {
-	PLL(AWPLL_A10_PLL1, a10_pll1_recalc, NULL, NULL),
+	PLL(AWPLL_A10_PLL1, a10_pll1_recalc, a10_pll1_set_freq, NULL),
 	PLL(AWPLL_A10_PLL2, a10_pll2_recalc, a10_pll2_set_freq, NULL),
 	PLL(AWPLL_A10_PLL3, a10_pll3_recalc, a10_pll3_set_freq, a10_pll3_init),
 	PLL(AWPLL_A10_PLL5, a10_pll5_recalc, NULL, NULL),

Modified: user/alc/PQ_LAUNDRY/sys/arm/arm/cpufunc_asm_arm11x6.S
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/arm/arm/cpufunc_asm_arm11x6.S	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/sys/arm/arm/cpufunc_asm_arm11x6.S	Thu Oct 27 00:33:14 2016	(r307981)
@@ -64,14 +64,6 @@ __FBSDID("$FreeBSD$");
 
 	.cpu arm1176jz-s
 
-ENTRY(arm11x6_setttb)
-	mov	r1, #0
-	mcr	p15, 0, r0, c2, c0, 0	/* load new TTB */
-	mcr	p15, 0, r1, c8, c7, 0	/* invalidate I+D TLBs */
-	mcr	p15, 0, r1, c7, c10, 4	/* drain write buffer */
-	RET
-END(arm11x6_setttb)
-
 /*
  * Preload the cache before issuing the WFI by conditionally disabling the
  * mcr intstructions the first time around the loop. Ensure the function is

Modified: user/alc/PQ_LAUNDRY/sys/arm/arm/cpufunc_asm_armv7.S
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/arm/arm/cpufunc_asm_armv7.S	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/sys/arm/arm/cpufunc_asm_armv7.S	Thu Oct 27 00:33:14 2016	(r307981)
@@ -37,56 +37,16 @@ __FBSDID("$FreeBSD$");
 
 	.cpu cortex-a8
 
+#ifdef ELF_TRAMPOLINE
 .Lcoherency_level:
 	.word	_C_LABEL(arm_cache_loc)
 .Lcache_type:
 	.word	_C_LABEL(arm_cache_type)
-.Larmv7_dcache_line_size:
-	.word	_C_LABEL(arm_dcache_min_line_size)
-.Larmv7_icache_line_size:
-	.word	_C_LABEL(arm_icache_min_line_size)
-.Larmv7_idcache_line_size:
-	.word	_C_LABEL(arm_idcache_min_line_size)
 .Lway_mask:
 	.word	0x3ff
 .Lmax_index:
 	.word	0x7fff
-.Lpage_mask:
-	.word	0xfff
-
-#define PT_NOS          (1 << 5)
-#define PT_S 	        (1 << 1)
-#define PT_INNER_NC	0
-#define PT_INNER_WT	(1 << 0)
-#define PT_INNER_WB	((1 << 0) | (1 << 6))
-#define PT_INNER_WBWA	(1 << 6)
-#define PT_OUTER_NC	0
-#define PT_OUTER_WT	(2 << 3)
-#define PT_OUTER_WB	(3 << 3)
-#define PT_OUTER_WBWA	(1 << 3)
 
-#ifdef SMP
-#define PT_ATTR	(PT_S|PT_INNER_WBWA|PT_OUTER_WBWA|PT_NOS)
-#else
-#define PT_ATTR	(PT_INNER_WBWA|PT_OUTER_WBWA)
-#endif
-
-ENTRY(armv7_setttb)
- 	dsb
-	orr 	r0, r0, #PT_ATTR
- 	mcr	CP15_TTBR0(r0)
-	isb
-#ifdef SMP
- 	mcr	CP15_TLBIALLIS
-#else
- 	mcr     CP15_TLBIALL
-#endif
- 	dsb
- 	isb
-	RET
-END(armv7_setttb)
-
-#ifdef ELF_TRAMPOLINE
 /* Based on algorithm from ARM Architecture Reference Manual */
 ENTRY(armv7_dcache_wbinv_all)
 	stmdb	sp!, {r4, r5, r6, r7, r8, r9}

Modified: user/alc/PQ_LAUNDRY/sys/arm/arm/gic.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/arm/arm/gic.c	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/sys/arm/arm/gic.c	Thu Oct 27 00:33:14 2016	(r307981)
@@ -62,6 +62,7 @@ __FBSDID("$FreeBSD$");
 #include <machine/smp.h>
 
 #include <dev/fdt/fdt_common.h>
+#include <dev/fdt/fdt_intr.h>
 #include <dev/ofw/ofw_bus_subr.h>
 
 #include <arm/arm/gic.h>
@@ -821,13 +822,15 @@ gic_map_fdt(device_t dev, u_int ncells, 
 		}
 
 		tripol = cells[2] & 0xff;
-		if (tripol & 0xf0 || (tripol & 0x0a && cells[0] == 0))
+		if (tripol & 0xf0 || (tripol & FDT_INTR_LOW_MASK &&
+		    cells[0] == 0))
 			device_printf(dev, "unsupported trigger/polarity "
 			    "configuration 0x%02x\n", tripol);
 
 		*irqp = irq;
 		*polp = INTR_POLARITY_CONFORM;
-		*trigp = tripol & 0x03 ? INTR_TRIGGER_EDGE : INTR_TRIGGER_LEVEL;
+		*trigp = tripol & FDT_INTR_EDGE_MASK ?
+		    INTR_TRIGGER_EDGE : INTR_TRIGGER_LEVEL;
 		return (0);
 	}
 	return (EINVAL);

Modified: user/alc/PQ_LAUNDRY/sys/arm/include/cpu-v6.h
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/arm/include/cpu-v6.h	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/sys/arm/include/cpu-v6.h	Thu Oct 27 00:33:14 2016	(r307981)
@@ -347,12 +347,21 @@ tlb_flush_range_local(vm_offset_t va, vm
 /* Broadcasting operations. */
 #if __ARM_ARCH >= 7 && defined SMP
 
+#if defined(CPU_CORTEXA8)
+#define	ARM_HAVE_MP_EXTENSIONS	(cpuinfo.mp_ext != 0)
+#else
+#define	ARM_HAVE_MP_EXTENSIONS	1
+#endif
+
 static __inline void
 tlb_flush_all(void)
 {
 
 	dsb();
-	_CP15_TLBIALLIS();
+	if (ARM_HAVE_MP_EXTENSIONS)
+		_CP15_TLBIALLIS();
+	else
+		_CP15_TLBIALL();
 	dsb();
 }
 
@@ -361,7 +370,10 @@ tlb_flush_all_ng(void)
 {
 
 	dsb();
-	_CP15_TLBIASIDIS(CPU_ASID_KERNEL);
+	if (ARM_HAVE_MP_EXTENSIONS)
+		_CP15_TLBIASIDIS(CPU_ASID_KERNEL);
+	else
+		_CP15_TLBIASID(CPU_ASID_KERNEL);
 	dsb();
 }
 
@@ -372,7 +384,10 @@ tlb_flush(vm_offset_t va)
 	KASSERT((va & PAGE_MASK) == 0, ("%s: va %#x not aligned", __func__, va));
 
 	dsb();
-	_CP15_TLBIMVAAIS(va);
+	if (ARM_HAVE_MP_EXTENSIONS)
+		_CP15_TLBIMVAAIS(va);
+	else
+		_CP15_TLBIMVA(va | CPU_ASID_KERNEL);
 	dsb();
 }
 
@@ -386,8 +401,13 @@ tlb_flush_range(vm_offset_t va,  vm_size
 	    size));
 
 	dsb();
-	for (; va < eva; va += PAGE_SIZE)
-		_CP15_TLBIMVAAIS(va);
+	if (ARM_HAVE_MP_EXTENSIONS) {
+		for (; va < eva; va += PAGE_SIZE)
+			_CP15_TLBIMVAAIS(va);
+	} else {
+		for (; va < eva; va += PAGE_SIZE)
+			_CP15_TLBIMVA(va | CPU_ASID_KERNEL);
+	}
 	dsb();
 }
 #else /* SMP */
@@ -411,19 +431,23 @@ icache_sync(vm_offset_t va, vm_size_t si
 
 	dsb();
 	va &= ~cpuinfo.dcache_line_mask;
-	for ( ; va < eva; va += cpuinfo.dcache_line_size) {
 #if __ARM_ARCH >= 7 && defined SMP
-		_CP15_DCCMVAU(va);
-#else
-		_CP15_DCCMVAC(va);
+	if (ARM_HAVE_MP_EXTENSIONS) {
+		for ( ; va < eva; va += cpuinfo.dcache_line_size)
+			_CP15_DCCMVAU(va);
+	} else
 #endif
+	{
+		for ( ; va < eva; va += cpuinfo.dcache_line_size)
+			_CP15_DCCMVAC(va);
 	}
 	dsb();
 #if __ARM_ARCH >= 7 && defined SMP
-	_CP15_ICIALLUIS();
-#else
-	_CP15_ICIALLU();
+	if (ARM_HAVE_MP_EXTENSIONS)
+		_CP15_ICIALLUIS();
+	else
 #endif
+		_CP15_ICIALLU();
 	dsb();
 	isb();
 }
@@ -433,10 +457,11 @@ static __inline void
 icache_inv_all(void)
 {
 #if __ARM_ARCH >= 7 && defined SMP
-	_CP15_ICIALLUIS();
-#else
-	_CP15_ICIALLU();
+	if (ARM_HAVE_MP_EXTENSIONS)
+		_CP15_ICIALLUIS();
+	else
 #endif
+		_CP15_ICIALLU();
 	dsb();
 	isb();
 }
@@ -446,10 +471,11 @@ static __inline void
 bpb_inv_all(void)
 {
 #if __ARM_ARCH >= 7 && defined SMP
-	_CP15_BPIALLIS();
-#else
-	_CP15_BPIALL();
+	if (ARM_HAVE_MP_EXTENSIONS)
+		_CP15_BPIALLIS();
+	else
 #endif
+		_CP15_BPIALL();
 	dsb();
 	isb();
 }
@@ -462,12 +488,15 @@ dcache_wb_pou(vm_offset_t va, vm_size_t 
 
 	dsb();
 	va &= ~cpuinfo.dcache_line_mask;
-	for ( ; va < eva; va += cpuinfo.dcache_line_size) {
 #if __ARM_ARCH >= 7 && defined SMP
-		_CP15_DCCMVAU(va);
-#else
-		_CP15_DCCMVAC(va);
+	if (ARM_HAVE_MP_EXTENSIONS) {
+		for ( ; va < eva; va += cpuinfo.dcache_line_size)
+			_CP15_DCCMVAU(va);
+	} else
 #endif
+	{
+		for ( ; va < eva; va += cpuinfo.dcache_line_size)
+			_CP15_DCCMVAC(va);
 	}
 	dsb();
 }

Modified: user/alc/PQ_LAUNDRY/sys/arm/include/cpufunc.h
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/arm/include/cpufunc.h	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/sys/arm/include/cpufunc.h	Thu Oct 27 00:33:14 2016	(r307981)
@@ -279,14 +279,11 @@ void	armv6_idcache_wbinv_all		(void);
 #endif
 #if defined(CPU_CORTEXA8) || defined(CPU_CORTEXA_MP) || \
     defined(CPU_MV_PJ4B) || defined(CPU_KRAIT)
-void	armv7_setttb			(u_int);
 void	armv7_idcache_wbinv_all		(void);
 void	armv7_cpu_sleep			(int);
 void	armv7_setup			(void);
 void	armv7_drain_writebuf		(void);
 
-void	armadaxp_idcache_wbinv_all	(void);
-
 void 	cortexa_setup			(void);
 #endif
 #if defined(CPU_MV_PJ4B)
@@ -297,7 +294,6 @@ void	pj4bv7_setup			(void);
 #if defined(CPU_ARM1176)
 void	arm11_drain_writebuf	(void);
 
-void    arm11x6_setttb                  (u_int);
 void    arm11x6_setup                   (void);
 void    arm11x6_sleep                   (int);  /* no ref. for errata */
 #endif

Modified: user/alc/PQ_LAUNDRY/sys/arm/include/platformvar.h
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/arm/include/platformvar.h	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/sys/arm/include/platformvar.h	Thu Oct 27 00:33:14 2016	(r307981)
@@ -93,7 +93,7 @@ extern platform_method_t fdt_platform_me
 #ifdef MULTIDELAY
 #define	FDT_PLATFORM_CTASSERT(delay)	CTASSERT(delay > 0)
 #else
-#define	FDT_PLATFORM_CTASSERT(delay)	CTASSERT(delay == 0)
+#define	FDT_PLATFORM_CTASSERT(delay)
 #endif
 
 #define FDT_PLATFORM_DEF2(NAME, VAR_NAME, NAME_STR, size, compatible,	\

Modified: user/alc/PQ_LAUNDRY/sys/arm/ti/am335x/am335x_dmtimer.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/arm/ti/am335x/am335x_dmtimer.c	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/sys/arm/ti/am335x/am335x_dmtimer.c	Thu Oct 27 00:33:14 2016	(r307981)
@@ -38,6 +38,10 @@ __FBSDID("$FreeBSD$");
 #include <sys/timetc.h>
 #include <machine/bus.h>
 
+#ifdef MULTIDELAY
+#include <machine/machdep.h> /* For arm_set_delay */
+#endif
+
 #include <dev/ofw/openfirm.h>
 #include <dev/ofw/ofw_bus.h>
 #include <dev/ofw/ofw_bus_subr.h>
@@ -67,6 +71,8 @@ struct am335x_dmtimer_softc {
 static struct am335x_dmtimer_softc *am335x_dmtimer_et_sc = NULL;
 static struct am335x_dmtimer_softc *am335x_dmtimer_tc_sc = NULL;
 
+static void am335x_dmtimer_delay(int, void *);
+
 /*
  * We use dmtimer2 for eventtimer and dmtimer3 for timecounter.
  */
@@ -235,6 +241,10 @@ am335x_dmtimer_tc_init(struct am335x_dmt
 	am335x_dmtimer_tc_sc = sc;
 	tc_init(&sc->func.tc);
 
+#ifdef MULTIDELAY
+	arm_set_delay(am335x_dmtimer_delay, sc);
+#endif
+
 	return (0);
 }
 
@@ -328,23 +338,13 @@ static devclass_t am335x_dmtimer_devclas
 DRIVER_MODULE(am335x_dmtimer, simplebus, am335x_dmtimer_driver, am335x_dmtimer_devclass, 0, 0);
 MODULE_DEPEND(am335x_dmtimer, am335x_prcm, 1, 1, 1);
 
-void
-DELAY(int usec)
+static void
+am335x_dmtimer_delay(int usec, void *arg)
 {
-	struct am335x_dmtimer_softc *sc;
+	struct am335x_dmtimer_softc *sc = arg;
 	int32_t counts;
 	uint32_t first, last;
 
-	sc = am335x_dmtimer_tc_sc;
-
-	if (sc == NULL) {
-		for (; usec > 0; usec--)
-			for (counts = 200; counts > 0; counts--)
-				/* Prevent gcc from optimizing  out the loop */
-				cpufunc_nullop();
-		return;
-	}
-
 	/* Get the number of times to count */
 	counts = (usec + 1) * (sc->sysclk_freq / 1000000);
 
@@ -361,3 +361,19 @@ DELAY(int usec)
 	}
 }
 
+#ifndef MULTIDELAY
+void
+DELAY(int usec)
+{
+	int32_t counts;
+
+	if (am335x_dmtimer_tc_sc == NULL) {
+		for (; usec > 0; usec--)
+			for (counts = 200; counts > 0; counts--)
+				/* Prevent gcc from optimizing  out the loop */
+				cpufunc_nullop();
+		return;
+	} else
+		am335x_dmtimer_delay(usec, am335x_dmtimer_tc_sc);
+}
+#endif

Modified: user/alc/PQ_LAUNDRY/sys/arm/ti/ti_machdep.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/arm/ti/ti_machdep.c	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/sys/arm/ti/ti_machdep.c	Thu Oct 27 00:33:14 2016	(r307981)
@@ -124,5 +124,5 @@ static platform_method_t am335x_methods[
 	PLATFORMMETHOD_END,
 };
 
-FDT_PLATFORM_DEF(am335x, "am335x", 0, "ti,am335x", 0);
+FDT_PLATFORM_DEF(am335x, "am335x", 0, "ti,am335x", 200);
 #endif

Modified: user/alc/PQ_LAUNDRY/sys/arm64/arm64/gic_v3.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/arm64/arm64/gic_v3.c	Thu Oct 27 00:08:02 2016	(r307980)
+++ user/alc/PQ_LAUNDRY/sys/arm64/arm64/gic_v3.c	Thu Oct 27 00:33:14 2016	(r307981)
@@ -59,6 +59,7 @@ __FBSDID("$FreeBSD$");
 #include <machine/intr.h>
 
 #ifdef FDT
+#include <dev/fdt/fdt_intr.h>
 #include <dev/ofw/ofw_bus_subr.h>
 #endif
 
@@ -470,20 +471,20 @@ gic_map_fdt(device_t dev, u_int ncells, 
 		return (EINVAL);
 	}
 
-	switch (cells[2] & 0xf) {
-	case 1:
+	switch (cells[2] & FDT_INTR_MASK) {
+	case FDT_INTR_EDGE_RISING:
 		*trigp = INTR_TRIGGER_EDGE;
 		*polp = INTR_POLARITY_HIGH;
 		break;
-	case 2:
+	case FDT_INTR_EDGE_FALLING:
 		*trigp = INTR_TRIGGER_EDGE;
 		*polp = INTR_POLARITY_LOW;
 		break;
-	case 4:
+	case FDT_INTR_LEVEL_HIGH:
 		*trigp = INTR_TRIGGER_LEVEL;
 		*polp = INTR_POLARITY_HIGH;
 		break;
-	case 8:
+	case FDT_INTR_LEVEL_LOW:
 		*trigp = INTR_TRIGGER_LEVEL;
 		*polp = INTR_POLARITY_LOW;
 		break;

Copied: user/alc/PQ_LAUNDRY/sys/arm64/arm64/memcpy.S (from r307980, head/sys/arm64/arm64/memcpy.S)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/alc/PQ_LAUNDRY/sys/arm64/arm64/memcpy.S	Thu Oct 27 00:33:14 2016	(r307981, copy of r307980, head/sys/arm64/arm64/memcpy.S)
@@ -0,0 +1,219 @@
+/* Copyright (c) 2012, Linaro Limited
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above copyright
+         notice, this list of conditions and the following disclaimer in the
+         documentation and/or other materials provided with the distribution.
+       * Neither the name of the Linaro nor the
+         names of its contributors may be used to endorse or promote products
+         derived from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/*
+ * Copyright (c) 2015 ARM Ltd
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the company may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <machine/asm.h>
+__FBSDID("$FreeBSD$");

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-user mailing list