Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 Nov 2014 23:08:52 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r274827 - in projects/sendfile: . contrib/binutils/binutils contrib/binutils/include/elf lib/libc/gen lib/libc/include lib/libc/mips/gen lib/libc/sys lib/libkiconv lib/libmd lib/libthr/...
Message-ID:  <201411212308.sALN8qSx042048@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: glebius
Date: Fri Nov 21 23:08:51 2014
New Revision: 274827
URL: https://svnweb.freebsd.org/changeset/base/274827

Log:
  Merge head r258543 through r274826.

Added:
  projects/sendfile/sys/dev/terasic/mtl/terasic_mtl_vt.c
     - copied unchanged from r274826, head/sys/dev/terasic/mtl/terasic_mtl_vt.c
Modified:
  projects/sendfile/Makefile.inc1
  projects/sendfile/contrib/binutils/binutils/readelf.c
  projects/sendfile/contrib/binutils/include/elf/common.h
  projects/sendfile/lib/libc/gen/errlst.c
  projects/sendfile/lib/libc/gen/isnan.c
  projects/sendfile/lib/libc/gen/tls.c
  projects/sendfile/lib/libc/include/errlst.h
  projects/sendfile/lib/libc/mips/gen/_setjmp.S
  projects/sendfile/lib/libc/mips/gen/setjmp.S
  projects/sendfile/lib/libc/sys/stack_protector.c
  projects/sendfile/lib/libc/sys/stack_protector_compat.c
  projects/sendfile/lib/libkiconv/quirks.c
  projects/sendfile/lib/libkiconv/xlat16_iconv.c
  projects/sendfile/lib/libkiconv/xlat16_sysctl.c
  projects/sendfile/lib/libmd/rmd160c.c
  projects/sendfile/lib/libmd/sha1c.c
  projects/sendfile/lib/libthr/thread/thr_exit.c
  projects/sendfile/lib/libthr/thread/thr_private.h
  projects/sendfile/lib/msun/src/s_isnan.c
  projects/sendfile/libexec/rtld-elf/rtld.c
  projects/sendfile/sbin/fsck/fsck.c
  projects/sendfile/share/man/man4/iicbus.4
  projects/sendfile/share/man/man9/Makefile
  projects/sendfile/share/mk/bsd.README
  projects/sendfile/sys/amd64/amd64/elf_machdep.c
  projects/sendfile/sys/amd64/amd64/fpu.c
  projects/sendfile/sys/amd64/amd64/ptrace_machdep.c
  projects/sendfile/sys/amd64/include/asm.h
  projects/sendfile/sys/arm/include/asm.h
  projects/sendfile/sys/boot/fdt/dts/mips/beri-sim.dts
  projects/sendfile/sys/boot/fdt/dts/mips/beripad-de4.dts
  projects/sendfile/sys/cam/cam_xpt.c
  projects/sendfile/sys/cam/ctl/ctl.c
  projects/sendfile/sys/cam/ctl/ctl_cmd_table.c
  projects/sendfile/sys/cam/ctl/ctl_frontend.c
  projects/sendfile/sys/cam/ctl/ctl_frontend.h
  projects/sendfile/sys/cam/ctl/ctl_frontend_cam_sim.c
  projects/sendfile/sys/cam/ctl/ctl_frontend_internal.c
  projects/sendfile/sys/cam/ctl/ctl_frontend_iscsi.c
  projects/sendfile/sys/cam/ctl/ctl_frontend_iscsi.h
  projects/sendfile/sys/cam/ctl/ctl_ha.h
  projects/sendfile/sys/cam/ctl/ctl_private.h
  projects/sendfile/sys/cam/ctl/ctl_tpc_local.c
  projects/sendfile/sys/cam/ctl/scsi_ctl.c
  projects/sendfile/sys/compat/ia32/ia32_sysvec.c
  projects/sendfile/sys/dev/advansys/advansys.c
  projects/sendfile/sys/dev/advansys/adwcam.c
  projects/sendfile/sys/dev/aha/aha.c
  projects/sendfile/sys/dev/ahb/ahb.c
  projects/sendfile/sys/dev/ahci/ahci.c
  projects/sendfile/sys/dev/aic/aic.c
  projects/sendfile/sys/dev/altera/avgen/altera_avgen.c
  projects/sendfile/sys/dev/altera/jtag_uart/altera_jtag_uart_cons.c
  projects/sendfile/sys/dev/altera/jtag_uart/altera_jtag_uart_tty.c
  projects/sendfile/sys/dev/arcmsr/arcmsr.c
  projects/sendfile/sys/dev/asr/asr.c
  projects/sendfile/sys/dev/buslogic/bt.c
  projects/sendfile/sys/dev/ciss/ciss.c
  projects/sendfile/sys/dev/dpt/dpt_scsi.c
  projects/sendfile/sys/dev/firewire/sbp.c
  projects/sendfile/sys/dev/glxiic/glxiic.c
  projects/sendfile/sys/dev/hpt27xx/hpt27xx_os_bsd.c
  projects/sendfile/sys/dev/hptnr/hptnr_os_bsd.c
  projects/sendfile/sys/dev/hptrr/hptrr_os_bsd.c
  projects/sendfile/sys/dev/hwpmc/hwpmc_mod.c
  projects/sendfile/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
  projects/sendfile/sys/dev/iir/iir.c
  projects/sendfile/sys/dev/isci/isci_io_request.c
  projects/sendfile/sys/dev/isci/isci_timer.c
  projects/sendfile/sys/dev/mpr/mpr_sas.c
  projects/sendfile/sys/dev/mps/mps_sas.c
  projects/sendfile/sys/dev/mpt/mpt.c
  projects/sendfile/sys/dev/mpt/mpt.h
  projects/sendfile/sys/dev/mpt/mpt_cam.c
  projects/sendfile/sys/dev/mrsas/mrsas_cam.c
  projects/sendfile/sys/dev/mvs/mvs.c
  projects/sendfile/sys/dev/siis/siis.c
  projects/sendfile/sys/dev/sym/sym_hipd.c
  projects/sendfile/sys/dev/terasic/mtl/terasic_mtl.c
  projects/sendfile/sys/dev/terasic/mtl/terasic_mtl.h
  projects/sendfile/sys/dev/terasic/mtl/terasic_mtl_fdt.c
  projects/sendfile/sys/dev/terasic/mtl/terasic_mtl_nexus.c
  projects/sendfile/sys/dev/terasic/mtl/terasic_mtl_reg.c
  projects/sendfile/sys/dev/terasic/mtl/terasic_mtl_text.c
  projects/sendfile/sys/dev/trm/trm.c
  projects/sendfile/sys/dev/tws/tws_cam.c
  projects/sendfile/sys/dev/virtio/scsi/virtio_scsi.c
  projects/sendfile/sys/fs/smbfs/smbfs_vfsops.c
  projects/sendfile/sys/i386/i386/elf_machdep.c
  projects/sendfile/sys/i386/i386/ptrace_machdep.c
  projects/sendfile/sys/i386/include/asm.h
  projects/sendfile/sys/i386/isa/npx.c
  projects/sendfile/sys/kern/imgact_elf.c
  projects/sendfile/sys/mips/beri/files.beri
  projects/sendfile/sys/mips/conf/BERI_DE4_BASE
  projects/sendfile/sys/mips/include/asm.h
  projects/sendfile/sys/mips/mips/cpu.c
  projects/sendfile/sys/powerpc/include/asm.h
  projects/sendfile/sys/powerpc/include/profile.h
  projects/sendfile/sys/powerpc/powerpc/db_trace.c
  projects/sendfile/sys/sparc64/include/asm.h
  projects/sendfile/sys/sys/elf_common.h
  projects/sendfile/sys/sys/imgact_elf.h
  projects/sendfile/sys/x86/include/fpu.h
  projects/sendfile/sys/x86/include/ptrace.h
  projects/sendfile/tools/tools/nanobsd/nanobsd.sh
  projects/sendfile/usr.bin/gcore/elfcore.c
  projects/sendfile/usr.sbin/autofs/auto_master.5
  projects/sendfile/usr.sbin/ctld/ctld.c
  projects/sendfile/usr.sbin/ctld/isns.c
Directory Properties:
  projects/sendfile/   (props changed)
  projects/sendfile/contrib/binutils/   (props changed)
  projects/sendfile/lib/libc/   (props changed)
  projects/sendfile/sbin/   (props changed)
  projects/sendfile/share/   (props changed)
  projects/sendfile/share/man/man4/   (props changed)
  projects/sendfile/sys/   (props changed)
  projects/sendfile/sys/boot/   (props changed)
  projects/sendfile/sys/dev/hyperv/   (props changed)

Modified: projects/sendfile/Makefile.inc1
==============================================================================
--- projects/sendfile/Makefile.inc1	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/Makefile.inc1	Fri Nov 21 23:08:51 2014	(r274827)
@@ -97,11 +97,22 @@ SUBDIR+=contrib/ofed
 #
 SUBDIR+=etc
 
-# These are last, since it is nice to at least get the base system
-# rebuilt before you do them.
-.for _DIR in ${LOCAL_LIB_DIRS} ${LOCAL_DIRS}
+# Local directories are last, since it is nice to at least get the base
+# system rebuilt before you do them.
+.for _DIR in ${LOCAL_DIRS}
 .if exists(${.CURDIR}/${_DIR}/Makefile)
-SUBDIR+= ${_DIR}
+SUBDIR+=	${_DIR}
+.endif
+.endfor
+# Add LOCAL_LIB_DIRS, but only if they will not be picked up as a SUBDIR
+# of a LOCAL_DIRS directory.  This allows LOCAL_DIRS=foo and
+# LOCAL_LIB_DIRS=foo/lib to behave as expected.
+.for _DIR in ${LOCAL_DIRS:M*/} ${LOCAL_DIRS:N*/:S|$|/|}
+_REDUNDENT_LIB_DIRS+=    ${LOCAL_LIB_DIRS:M${_DIR}*}
+.endfor
+.for _DIR in ${LOCAL_LIB_DIRS}
+.if empty(_REDUNDENT_LIB_DIRS:M${_DIR}) && exists(${.CURDIR}/${_DIR}/Makefile)
+SUBDIR+=	${_DIR}
 .endif
 .endfor
 .endif
@@ -691,6 +702,11 @@ buildworld_epilogue:
 buildenvvars:
 	@echo ${WMAKEENV:Q}
 
+.if ${.TARGETS:Mbuildenv}
+.if ${.MAKEFLAGS:M-j}
+.error The buildenv target is incompatible with -j
+.endif
+.endif
 buildenv:
 	@echo Entering world for ${TARGET_ARCH}:${TARGET}
 	@cd ${.CURDIR} && env ${WMAKEENV} ${BUILDENV_SHELL} || true

Modified: projects/sendfile/contrib/binutils/binutils/readelf.c
==============================================================================
--- projects/sendfile/contrib/binutils/binutils/readelf.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/contrib/binutils/binutils/readelf.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -9159,6 +9159,8 @@ get_freebsd_note_type (unsigned e_type)
 	return _("NT_PROCSTAT_PSSTRINGS (ps_strings data)");
       case NT_PROCSTAT_AUXV:
 	return _("NT_PROCSTAT_AUXV (auxv data)");
+      case NT_X86_XSTATE:
+	return _("NT_X86_XSTATE (x86 XSAVE extended state)");
       default:
 	return get_note_type(e_type);
       }

Modified: projects/sendfile/contrib/binutils/include/elf/common.h
==============================================================================
--- projects/sendfile/contrib/binutils/include/elf/common.h	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/contrib/binutils/include/elf/common.h	Fri Nov 21 23:08:51 2014	(r274827)
@@ -414,6 +414,7 @@
 #define NT_PROCSTAT_OSREL	14
 #define NT_PROCSTAT_PSSTRINGS	15
 #define NT_PROCSTAT_AUXV	16
+#define	NT_X86_XSTATE		0x202
 
 
 /* Note segments for core files on NetBSD systems.  Note name

Modified: projects/sendfile/lib/libc/gen/errlst.c
==============================================================================
--- projects/sendfile/lib/libc/gen/errlst.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/libc/gen/errlst.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -158,7 +158,7 @@ const char *const sys_errlist[] = {
 };
 const int sys_nerr = sizeof(sys_errlist) / sizeof(sys_errlist[0]);
 
-#ifdef PIC
+#ifdef __PIC__
 __strong_reference(sys_errlist, __hidden_sys_errlist);
 __strong_reference(sys_nerr, __hidden_sys_nerr);
 #endif

Modified: projects/sendfile/lib/libc/gen/isnan.c
==============================================================================
--- projects/sendfile/lib/libc/gen/isnan.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/libc/gen/isnan.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -40,7 +40,7 @@
  * time, when calling both functions.
  */
 
-#ifdef PIC
+#ifdef __PIC__
 __weak_reference(__isnan, isnan);
 __weak_reference(__isnanf, isnanf);
 
@@ -61,4 +61,4 @@ __isnanf(float f)
 	u.f = f;
 	return (u.bits.exp == 255 && u.bits.man != 0);
 }
-#endif /* PIC */
+#endif /* __PIC__ */

Modified: projects/sendfile/lib/libc/gen/tls.c
==============================================================================
--- projects/sendfile/lib/libc/gen/tls.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/libc/gen/tls.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -78,7 +78,7 @@ void __libc_free_tls(void *tls, size_t t
 #define TLS_VARIANT_II
 #endif
 
-#ifndef PIC
+#ifndef __PIC__
 
 #define round(size, align) \
 	(((size) + (align) - 1) & ~((align) - 1))
@@ -107,7 +107,7 @@ __libc_tls_get_addr(void *ti __unused)
 	return (0);
 }
 
-#ifndef PIC
+#ifndef __PIC__
 
 #ifdef TLS_VARIANT_I
 
@@ -264,14 +264,14 @@ __libc_free_tls(void *tcb __unused, size
 {
 }
 
-#endif /* PIC */
+#endif /* __PIC__ */
 
 extern char **environ;
 
 void
 _init_tls()
 {
-#ifndef PIC
+#ifndef __PIC__
 	Elf_Addr *sp;
 	Elf_Auxinfo *aux, *auxp;
 	Elf_Phdr *phdr;

Modified: projects/sendfile/lib/libc/include/errlst.h
==============================================================================
--- projects/sendfile/lib/libc/include/errlst.h	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/libc/include/errlst.h	Fri Nov 21 23:08:51 2014	(r274827)
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 
-#ifdef PIC
+#ifdef __PIC__
 /* If the main executable imports these, do not use its copy from libc.so. */
 extern const char *const __hidden_sys_errlist[] __hidden;
 extern const int __hidden_sys_nerr __hidden;

Modified: projects/sendfile/lib/libc/mips/gen/_setjmp.S
==============================================================================
--- projects/sendfile/lib/libc/mips/gen/_setjmp.S	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/libc/mips/gen/_setjmp.S	Fri Nov 21 23:08:51 2014	(r274827)
@@ -61,9 +61,16 @@ __FBSDID("$FreeBSD$");
 
 LEAF(_setjmp)
 	REG_PROLOGUE
-	REG_LI	v0, _JB_MAGIC__SETJMP
+	REG_LI	v0, _JB_MAGIC__SETJMP		# sigcontext magic number
 	REG_S	v0, (_JB_MAGIC  * SZREG)(a0)
 	REG_S	ra, (_JB_REG_RA * SZREG)(a0)
+	/*
+	 * From "MIPSpro N32 ABI Handbook", Table 2-1:
+	 * Registers s0..s7 are callee-saved.
+	 * The sp register is callee-saved.
+	 * The fp (or s8) register is callee-saved.
+	 * The gp register is callee-saved (for n32/n64).
+	 */
 	REG_S	s0, (_JB_REG_S0 * SZREG)(a0)
 	REG_S	s1, (_JB_REG_S1 * SZREG)(a0)
 	REG_S	s2, (_JB_REG_S2 * SZREG)(a0)
@@ -72,11 +79,41 @@ LEAF(_setjmp)
 	REG_S	s5, (_JB_REG_S5 * SZREG)(a0)
 	REG_S	s6, (_JB_REG_S6 * SZREG)(a0)
 	REG_S	s7, (_JB_REG_S7 * SZREG)(a0)
+	REG_S	sp, (_JB_REG_SP * SZREG)(a0)
 	REG_S	s8, (_JB_REG_S8 * SZREG)(a0)
 #if defined(__mips_n32) || defined(__mips_n64)
 	REG_S	gp, (_JB_REG_GP * SZREG)(a0)	# newabi gp is callee-saved
 #endif
-	REG_S	sp, (_JB_REG_SP * SZREG)(a0)
+	/*
+	 * From "MIPSpro N32 ABI Handbook", Table 2-1:
+	 * In N32, FP registers F20, F22, F24, F26, F28, F30 are callee-saved.
+	 * In N64, FP registers F24 .. F31 are callee-saved.
+	 * In O32, FP registers F20 .. F23 are callee-saved.
+	 */
+#ifndef SOFTFLOAT
+	cfc1	v0, $31				# too bad can't check if FP used
+#if defined(__mips_n64) || defined(__mips_n32)
+	FP_S	$f30, (_JB_FPREG_F30 * SZREG)(a0)
+	FP_S	$f28, (_JB_FPREG_F28 * SZREG)(a0)
+	FP_S	$f26, (_JB_FPREG_F26 * SZREG)(a0)
+	FP_S	$f24, (_JB_FPREG_F24 * SZREG)(a0)
+#endif
+#if defined(__mips_n32) || defined(__mips_o32) || defined(__mips_o64)
+	FP_S	$f22, (_JB_FPREG_F22 * SZREG)(a0)
+	FP_S	$f20, (_JB_FPREG_F20 * SZREG)(a0)
+#endif
+#if defined(__mips_o32) || defined(__mips_o64)
+	FP_S	$f21, (_JB_FPREG_F21 * SZREG)(a0)
+	FP_S	$f23, (_JB_FPREG_F23 * SZREG)(a0)
+#endif
+#if defined(__mips_n64)
+	FP_S	$f25, (_JB_FPREG_F25 * SZREG)(a0)
+	FP_S	$f27, (_JB_FPREG_F27 * SZREG)(a0)
+	FP_S	$f29, (_JB_FPREG_F29 * SZREG)(a0)
+	FP_S	$f31, (_JB_FPREG_F31 * SZREG)(a0)
+#endif
+	INT_S	v0, (_JB_FPREG_FCSR * SZREG)(a0)
+#endif /* ! SOFTFLOAT */
 	REG_EPILOGUE
 
 	j	ra
@@ -94,6 +131,13 @@ LEAF(_longjmp)
 	REG_LI		t0, _JB_MAGIC__SETJMP
 	bne		v0, t0, botch		# jump if error
 	PTR_ADDU	sp, sp, CALLFRAME_SIZ	# does not matter, sanity
+	/*
+	 * From "MIPSpro N32 ABI Handbook", Table 2-1:
+	 * Registers s0..s7 are callee-saved.
+	 * The sp register is callee-saved.
+	 * The fp (or s8) register is callee-saved.
+	 * The gp register is callee-saved (for n32/n64).
+	 */
 	REG_L		s0, (_JB_REG_S0 * SZREG)(a0)
 	REG_L		s1, (_JB_REG_S1 * SZREG)(a0)
 	REG_L		s2, (_JB_REG_S2 * SZREG)(a0)
@@ -102,11 +146,42 @@ LEAF(_longjmp)
 	REG_L		s5, (_JB_REG_S5 * SZREG)(a0)
 	REG_L		s6, (_JB_REG_S6 * SZREG)(a0)
 	REG_L		s7, (_JB_REG_S7 * SZREG)(a0)
+	REG_L		sp, (_JB_REG_SP * SZREG)(a0)
+	REG_L		s8, (_JB_REG_S8 * SZREG)(a0)
 #if defined(__mips_n32) || defined(__mips_n64)
 	REG_L		gp, (_JB_REG_GP * SZREG)(a0)
 #endif
-	REG_L		sp, (_JB_REG_SP * SZREG)(a0)
-	REG_L		s8, (_JB_REG_S8 * SZREG)(a0)
+#ifndef SOFTFLOAT
+	# get fpu status
+	INT_L		v0, (_JB_FPREG_FCSR * SZREG)(a0)
+	ctc1		v0, $31
+	/*
+	 * From "MIPSpro N32 ABI Handbook", Table 2-1:
+	 * In N32, FP registers F20, F22, F24, F26, F28, F30 are callee-saved.
+	 * In N64, FP registers F24 .. F31 are callee-saved.
+	 * In O32, FP registers F20 .. F23 are callee-saved.
+	 */
+#if defined(__mips_n64) || defined(__mips_n32)
+	FP_L	$f30, (_JB_FPREG_F30 * SZREG)(a0)
+	FP_L	$f28, (_JB_FPREG_F28 * SZREG)(a0)
+	FP_L	$f26, (_JB_FPREG_F26 * SZREG)(a0)
+	FP_L	$f24, (_JB_FPREG_F24 * SZREG)(a0)
+#endif
+#if defined(__mips_n32) || defined(__mips_o32) || defined(__mips_o64)
+	FP_L	$f22, (_JB_FPREG_F22 * SZREG)(a0)
+	FP_L	$f20, (_JB_FPREG_F20 * SZREG)(a0)
+#endif
+#if defined(__mips_o32) || defined(__mips_o64)
+	FP_L	$f21, (_JB_FPREG_F21 * SZREG)(a0)
+	FP_L	$f23, (_JB_FPREG_F23 * SZREG)(a0)
+#endif
+#if defined(__mips_n64)
+	FP_L	$f25, (_JB_FPREG_F25 * SZREG)(a0)
+	FP_L	$f27, (_JB_FPREG_F27 * SZREG)(a0)
+	FP_L	$f29, (_JB_FPREG_F29 * SZREG)(a0)
+	FP_L	$f31, (_JB_FPREG_F31 * SZREG)(a0)
+#endif
+#endif	/* ! SOFTFLOAT */
 
 	REG_EPILOGUE
 	move	v0, a1			# get return value in 1st arg

Modified: projects/sendfile/lib/libc/mips/gen/setjmp.S
==============================================================================
--- projects/sendfile/lib/libc/mips/gen/setjmp.S	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/libc/mips/gen/setjmp.S	Fri Nov 21 23:08:51 2014	(r274827)
@@ -86,6 +86,13 @@ NESTED(setjmp, SETJMP_FRAME_SIZE, ra)
 	REG_LI	v0, _JB_MAGIC_SETJMP
 	REG_S	v0, (_JB_MAGIC  * SZREG)(a0)
 	REG_S	ra, (_JB_REG_RA * SZREG)(a0)
+	/*
+	 * From "MIPSpro N32 ABI Handbook", Table 2-1:
+	 * Registers s0..s7 are callee-saved.
+	 * The sp register is callee-saved.
+	 * The fp (or s8) register is callee-saved.
+	 * The gp register is callee-saved (for n32/n64).
+	 */
 	REG_S	s0, (_JB_REG_S0 * SZREG)(a0)
 	REG_S	s1, (_JB_REG_S1 * SZREG)(a0)
 	REG_S	s2, (_JB_REG_S2 * SZREG)(a0)
@@ -99,6 +106,36 @@ NESTED(setjmp, SETJMP_FRAME_SIZE, ra)
 #if defined(__mips_n32) || defined(__mips_n64)
 	REG_S	gp, (_JB_REG_GP * SZREG)(a0)
 #endif
+#ifndef SOFTFLOAT
+	/*
+	 * From "MIPSpro N32 ABI Handbook", Table 2-1:
+	 * In N32, FP registers F20, F22, F24, F26, F28, F30 are callee-saved.
+	 * In N64, FP registers F24 .. F31 are callee-saved.
+	 * In O32, FP registers F20 .. F23 are callee-saved.
+	 */
+	cfc1	v0, $31
+	INT_S	v0, (_JB_FPREG_FCSR * SZREG)(a0)
+#if defined(__mips_o32) || defined(__mips_o64) || defined(__mips_n32)
+	FP_S	$f20, (_JB_FPREG_F20 * SZREG)(a0)
+	FP_S	$f22, (_JB_FPREG_F22 * SZREG)(a0)
+#endif
+#if defined(__mips_o32) || defined(__mips_o64)
+	FP_S	$f21, (_JB_FPREG_F21 * SZREG)(a0)
+	FP_S	$f23, (_JB_FPREG_F23 * SZREG)(a0)
+#endif
+#if defined(__mips_n32) || defined(__mips_n64)
+	FP_S	$f24, (_JB_FPREG_F24 * SZREG)(a0)
+	FP_S	$f26, (_JB_FPREG_F26 * SZREG)(a0)
+	FP_S	$f28, (_JB_FPREG_F28 * SZREG)(a0)
+	FP_S	$f30, (_JB_FPREG_F30 * SZREG)(a0)
+#endif
+#if defined(__mips_n64)
+	FP_S	$f25, (_JB_FPREG_F25 * SZREG)(a0)
+	FP_S	$f27, (_JB_FPREG_F27 * SZREG)(a0)
+	FP_S	$f29, (_JB_FPREG_F29 * SZREG)(a0)
+	FP_S	$f31, (_JB_FPREG_F31 * SZREG)(a0)
+#endif
+#endif	/* ! SOFTFLOAT */
 
 	move	v0, zero
 	jr	ra
@@ -133,6 +170,13 @@ NESTED(longjmp, LONGJMP_FRAME_SIZE, ra)
 	REG_L	a1, (CALLFRAME_SIZ + SZREG)(sp)	# restore return value
 
 	REG_L	ra, (_JB_REG_RA * SZREG)(a0)
+	/*
+	 * From "MIPSpro N32 ABI Handbook", Table 2-1:
+	 * Registers s0..s7 are callee-saved.
+	 * The sp register is callee-saved.
+	 * The fp (or s8) register is callee-saved.
+	 * The gp register is callee-saved (for n32/n64).
+	 */
 	REG_L	s0, (_JB_REG_S0 * SZREG)(a0)
 	REG_L	s1, (_JB_REG_S1 * SZREG)(a0)
 	REG_L	s2, (_JB_REG_S2 * SZREG)(a0)
@@ -146,6 +190,36 @@ NESTED(longjmp, LONGJMP_FRAME_SIZE, ra)
 #if defined(__mips_n32) || defined(__mips_n64)
 	REG_L	gp, (_JB_REG_GP * SZREG)(a0)
 #endif
+#ifndef SOFTFLOAT
+	/*
+	 * From "MIPSpro N32 ABI Handbook", Table 2-1:
+	 * In N32, FP registers F20, F22, F24, F26, F28, F30 are callee-saved.
+	 * In N64, FP registers F23 .. F31 are callee-saved.
+	 * In O32, FP registers F20 .. F23 are callee-saved.
+	 */
+        INT_L           v0, (_JB_FPREG_FCSR * SZREG)(a0)
+        ctc1            v0, $31
+#if defined(__mips_n64) || defined(__mips_n32)
+	FP_L	$f30, (_JB_FPREG_F30 * SZREG)(a0)
+	FP_L	$f28, (_JB_FPREG_F28 * SZREG)(a0)
+	FP_L	$f26, (_JB_FPREG_F26 * SZREG)(a0)
+	FP_L	$f24, (_JB_FPREG_F24 * SZREG)(a0)
+#endif
+#if defined(__mips_n32) || defined(__mips_o32) || defined(__mips_o64)
+	FP_L	$f22, (_JB_FPREG_F22 * SZREG)(a0)
+	FP_L	$f20, (_JB_FPREG_F20 * SZREG)(a0)
+#endif
+#if defined(__mips_o32) || defined(__mips_o64)
+	FP_L	$f21, (_JB_FPREG_F21 * SZREG)(a0)
+	FP_L	$f23, (_JB_FPREG_F23 * SZREG)(a0)
+#endif
+#if defined(__mips_n64)
+	FP_L	$f25, (_JB_FPREG_F25 * SZREG)(a0)
+	FP_L	$f27, (_JB_FPREG_F27 * SZREG)(a0)
+	FP_L	$f29, (_JB_FPREG_F29 * SZREG)(a0)
+	FP_L	$f31, (_JB_FPREG_F31 * SZREG)(a0)
+#endif
+#endif	/* ! SOFTFLOAT */
 
 	move	v0, a1
 	j	ra

Modified: projects/sendfile/lib/libc/sys/stack_protector.c
==============================================================================
--- projects/sendfile/lib/libc/sys/stack_protector.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/libc/sys/stack_protector.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -115,6 +115,6 @@ __chk_fail(void)
 	__fail("buffer overflow detected; terminated");
 }
 
-#ifndef PIC
+#ifndef __PIC__
 __weak_reference(__stack_chk_fail, __stack_chk_fail_local);
 #endif

Modified: projects/sendfile/lib/libc/sys/stack_protector_compat.c
==============================================================================
--- projects/sendfile/lib/libc/sys/stack_protector_compat.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/libc/sys/stack_protector_compat.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -8,7 +8,7 @@ __FBSDID("$FreeBSD$");
 
 void __stack_chk_fail(void);
 
-#ifdef PIC
+#ifdef __PIC__
 void
 __stack_chk_fail_local_hidden(void)
 {

Modified: projects/sendfile/lib/libkiconv/quirks.c
==============================================================================
--- projects/sendfile/lib/libkiconv/quirks.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/libkiconv/quirks.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -31,7 +31,7 @@
  * when statically linked.
  */
 
-#ifdef PIC
+#ifdef __PIC__
 
 /*
  * Why do we need quirks?
@@ -193,4 +193,4 @@ kiconv_quirkcs(const char* base __unused
 	return (base);
 }
 
-#endif /* PIC */
+#endif /* __PIC__ */

Modified: projects/sendfile/lib/libkiconv/xlat16_iconv.c
==============================================================================
--- projects/sendfile/lib/libkiconv/xlat16_iconv.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/libkiconv/xlat16_iconv.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -31,7 +31,7 @@
  * when statically linked.
  */
 
-#ifdef PIC
+#ifdef __PIC__
 
 #include <sys/types.h>
 #include <sys/iconv.h>
@@ -462,4 +462,4 @@ kiconv_add_xlat16_cspairs(const char *to
 	return (-1);
 }
 
-#endif /* PIC */
+#endif /* __PIC__ */

Modified: projects/sendfile/lib/libkiconv/xlat16_sysctl.c
==============================================================================
--- projects/sendfile/lib/libkiconv/xlat16_sysctl.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/libkiconv/xlat16_sysctl.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -37,7 +37,7 @@
  * when statically linked.
  */
 
-#ifdef PIC
+#ifdef __PIC__
 
 #include <sys/types.h>
 #include <sys/iconv.h>
@@ -82,4 +82,4 @@ kiconv_add_xlat16_table(const char *to _
 	return (EINVAL);
 }
 
-#endif /* PIC */
+#endif /* __PIC__ */

Modified: projects/sendfile/lib/libmd/rmd160c.c
==============================================================================
--- projects/sendfile/lib/libmd/rmd160c.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/libmd/rmd160c.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -75,7 +75,7 @@ __FBSDID("$FreeBSD$");
  * The assembly-language code is not position-independent, so don't
  * try to use it in a shared library.
  */
-#ifdef PIC
+#ifdef __PIC__
 #undef RMD160_ASM
 #endif
 

Modified: projects/sendfile/lib/libmd/sha1c.c
==============================================================================
--- projects/sendfile/lib/libmd/sha1c.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/libmd/sha1c.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -78,7 +78,7 @@ __FBSDID("$FreeBSD$");
  * The assembly-language code is not position-independent, so don't
  * try to use it in a shared library.
  */
-#ifdef PIC
+#ifdef __PIC__
 #undef SHA1_ASM
 #endif
 

Modified: projects/sendfile/lib/libthr/thread/thr_exit.c
==============================================================================
--- projects/sendfile/lib/libthr/thread/thr_exit.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/libthr/thread/thr_exit.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -54,7 +54,7 @@ __weak_reference(_pthread_exit, pthread_
 static int message_printed;
 
 static void thread_unwind(void) __dead2;
-#ifdef PIC
+#ifdef __PIC__
 static void thread_uw_init(void);
 static _Unwind_Reason_Code thread_unwind_stop(int version,
 	_Unwind_Action actions,
@@ -114,7 +114,7 @@ _Unwind_GetCFA(struct _Unwind_Context *c
 #else
 #pragma weak _Unwind_GetCFA
 #pragma weak _Unwind_ForcedUnwind
-#endif /* PIC */
+#endif /* __PIC__ */
 
 static void
 thread_unwind_cleanup(_Unwind_Reason_Code code, struct _Unwind_Exception *e)
@@ -222,11 +222,11 @@ _pthread_exit_mask(void *status, sigset_
 	curthread->ret = status;
 #ifdef _PTHREAD_FORCED_UNWIND
 
-#ifdef PIC
+#ifdef __PIC__
 	thread_uw_init();
-#endif /* PIC */
+#endif /* __PIC__ */
 
-#ifdef PIC
+#ifdef __PIC__
 	if (uwl_forcedunwind != NULL) {
 #else
 	if (_Unwind_ForcedUnwind != NULL) {

Modified: projects/sendfile/lib/libthr/thread/thr_private.h
==============================================================================
--- projects/sendfile/lib/libthr/thread/thr_private.h	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/libthr/thread/thr_private.h	Fri Nov 21 23:08:51 2014	(r274827)
@@ -100,7 +100,7 @@ TAILQ_HEAD(mutex_queue, pthread_mutex);
 #define THR_ASSERT(cond, msg)
 #endif
 
-#ifdef PIC
+#ifdef __PIC__
 # define STATIC_LIB_REQUIRE(name)
 #else
 # define STATIC_LIB_REQUIRE(name) __asm (".globl " #name)

Modified: projects/sendfile/lib/msun/src/s_isnan.c
==============================================================================
--- projects/sendfile/lib/msun/src/s_isnan.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/lib/msun/src/s_isnan.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -31,7 +31,7 @@
 #include "fpmath.h"
 
 /* Provided by libc.so */
-#ifndef PIC
+#ifndef __PIC__
 #undef isnan
 int
 isnan(double d)
@@ -41,7 +41,7 @@ isnan(double d)
 	u.d = d;
 	return (u.bits.exp == 2047 && (u.bits.manl != 0 || u.bits.manh != 0));
 }
-#endif /* !PIC */
+#endif /* !__PIC__ */
 
 int
 __isnanf(float f)

Modified: projects/sendfile/libexec/rtld-elf/rtld.c
==============================================================================
--- projects/sendfile/libexec/rtld-elf/rtld.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/libexec/rtld-elf/rtld.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -1817,7 +1817,7 @@ init_rtld(caddr_t mapbase, Elf_Auxinfo *
     objtmp.path = NULL;
     objtmp.rtld = true;
     objtmp.mapbase = mapbase;
-#ifdef PIC
+#ifdef __PIC__
     objtmp.relocbase = mapbase;
 #endif
     if (RTLD_IS_DYNAMIC()) {

Modified: projects/sendfile/sbin/fsck/fsck.c
==============================================================================
--- projects/sendfile/sbin/fsck/fsck.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/sbin/fsck/fsck.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -41,8 +41,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/mount.h>
 #include <sys/queue.h>
 #include <sys/wait.h>
-#define FSTYPENAMES
-#include <sys/disklabel.h>
+#include <sys/disk.h>
 #include <sys/ioctl.h>
 
 #include <ctype.h>
@@ -81,10 +80,21 @@ static void addentry(struct fstypelist *
 static void maketypelist(char *);
 static void catopt(char **, const char *);
 static void mangle(char *, int *, const char ** volatile *, int *);
-static const char *getfslab(const char *);
+static const char *getfstype(const char *);
 static void usage(void) __dead2;
 static int isok(struct fstab *);
 
+static struct {
+	const char *ptype;
+	const char *name;
+} ptype_map[] = {
+	{ "ufs",	"ffs" },
+	{ "ffs",	"ffs" },
+	{ "fat",	"msdosfs" },
+	{ "efi",	"msdosfs" },
+	{ NULL,		NULL },
+};
+
 int
 main(int argc, char *argv[])
 {
@@ -203,7 +213,7 @@ main(int argc, char *argv[])
 		if ((fs = getfsfile(spec)) == NULL &&
 		    (fs = getfsspec(spec)) == NULL) {
 			if (vfstype == NULL)
-				vfstype = getfslab(spec);
+				vfstype = getfstype(spec);
 			if (vfstype == NULL)
 				errx(1, "Could not determine filesystem type");
 			type = vfstype;
@@ -535,41 +545,27 @@ mangle(char *opts, int *argcp, const cha
 	*maxargcp = maxargc;
 }
 
-
 static const char *
-getfslab(const char *str)
+getfstype(const char *str)
 {
-	struct disklabel dl;
-	int fd;
-	char p;
-	const char *vfstype;
-	u_char t;
+	struct diocgattr_arg attr;
+	int fd, i;
 
-	/* deduce the file system type from the disk label */
 	if ((fd = open(str, O_RDONLY)) == -1)
 		err(1, "cannot open `%s'", str);
 
-	if (ioctl(fd, DIOCGDINFO, &dl) == -1) {
+	strncpy(attr.name, "PART::type", sizeof(attr.name));
+	memset(&attr.value, 0, sizeof(attr.value));
+	attr.len = sizeof(attr.value);
+	if (ioctl(fd, DIOCGATTR, &attr) == -1) {
 		(void) close(fd);
 		return(NULL);
 	}
-
 	(void) close(fd);
-
-	p = str[strlen(str) - 1];
-
-	if ((p - 'a') >= dl.d_npartitions)
-		errx(1, "partition `%s' is not defined on disk", str);
-
-	if ((t = dl.d_partitions[p - 'a'].p_fstype) >= FSMAXTYPES) 
-		errx(1, "partition `%s' is not of a legal vfstype",
-		    str);
-
-	if ((vfstype = fstypenames[t]) == NULL)
-		errx(1, "vfstype `%s' on partition `%s' is not supported",
-		    fstypenames[t], str);
-
-	return vfstype;
+	for (i = 0; ptype_map[i].ptype != NULL; i++)
+		if (strstr(attr.value.str, ptype_map[i].ptype) != NULL)
+			return (ptype_map[i].name);
+	return (NULL);
 }
 
 

Modified: projects/sendfile/share/man/man4/iicbus.4
==============================================================================
--- projects/sendfile/share/man/man4/iicbus.4	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/share/man/man4/iicbus.4	Fri Nov 21 23:08:51 2014	(r274827)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd June 24, 2014
+.Dd November 17, 2014
 .Dt IICBUS 4
 .Os
 .Sh NAME
@@ -103,12 +103,59 @@ Some I2C interfaces are available:
 .It Sy lpbb Ta "parallel port specific bit-banging interface"
 .It Sy bktr Ta "Brooktree848 video chipset, hardware and software master-only interface"
 .El
+.Sh BUS FREQUENCY CONFIGURATION
+The operating frequency of an I2C bus may be fixed or configurable.
+The bus may be used as part of some larger standard interface, and that
+interface specification may require a fixed frequency.  
+The driver for that hardware would not honor an attempt to configure a 
+different speed.
+A general purpose I2C bus, such as those found in many embedded systems,
+will often support multiple bus frequencies.  
+.Pp
+When a system supports multiple I2C busses, a different frequency can
+be configured for each bus by number, represented by the
+.Va %d
+in the variable names below.
+Busses can be configured using any combination of device hints,
+Flattened Device Tree (FDT) data, tunables set via
+.Xr loader 8 ,
+or at runtime using
+.Xr sysctl 8 .
+When configuration is supplied using more than one method, FDT and
+hint data will be overridden by a tunable, which can be overriden by
+.Xr sysctl 8 .
+.Ss Device Hints
+Set
+.Va hint.iicbus.%d.frequency
+to the frequency in Hz, on systems that use device hints to configure
+I2C devices.
+The hint is also honored by systems that use FDT data if
+no frequency is configured using FDT.
+.Ss Flattened Device Tree Data
+Configure the I2C bus speed using the FDT standard
+.Va clock-frequency
+property of the node describing the I2C controller hardware.
+.Ss Sysctl and Tunable
+Set
+.Va dev.iicbus.%d.frequency
+in
+.Xr loader.conf 5 .
+The same variable can be changed at any time with
+.Xr sysctl 8 .
+Reset the bus using
+.Xr i2c 8
+or the
+.Xr iic 4 
+.Va I2CRSTCARD
+ioctl to make the change take effect.
 .Sh SEE ALSO
 .Xr bktr 4 ,
+.Xr fdt 4 ,
 .Xr iic 4 ,
 .Xr iicbb 4 ,
 .Xr lpbb 4 ,
-.Xr pcf 4
+.Xr pcf 4 ,
+.Xr i2c 8
 .Sh HISTORY
 The
 .Nm

Modified: projects/sendfile/share/man/man9/Makefile
==============================================================================
--- projects/sendfile/share/man/man9/Makefile	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/share/man/man9/Makefile	Fri Nov 21 23:08:51 2014	(r274827)
@@ -1733,6 +1733,7 @@ MLINKS+=VOP_OPENCLOSE.9 VOP_CLOSE.9 \
 MLINKS+=VOP_RDWR.9 VOP_READ.9 \
 	VOP_RDWR.9 VOP_WRITE.9
 MLINKS+=VOP_REMOVE.9 VOP_RMDIR.9
+MLINKS+=vnet.9 vimage.9
 MLINKS+=vref.9 VREF.9
 MLINKS+=vrele.9 vput.9 \
 	vrele.9 vunref.9

Modified: projects/sendfile/share/mk/bsd.README
==============================================================================
--- projects/sendfile/share/mk/bsd.README	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/share/mk/bsd.README	Fri Nov 21 23:08:51 2014	(r274827)
@@ -146,7 +146,7 @@ MAN		The manual pages to be installed (u
 
 MLINKS		List of manual page links (using a .1 - .9 suffix).  The
 		linked-to file must come first, the linked file second,
-		and there may be multiple pairs.  The files are soft-linked.
+		and there may be multiple pairs.  The files are hard-linked.
 
 The include file <bsd.man.mk> includes a file named "../Makefile.inc" if
 it exists.

Modified: projects/sendfile/sys/amd64/amd64/elf_machdep.c
==============================================================================
--- projects/sendfile/sys/amd64/amd64/elf_machdep.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/sys/amd64/amd64/elf_machdep.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$");
 #include <vm/vm_param.h>
 
 #include <machine/elf.h>
+#include <machine/fpu.h>
 #include <machine/md_var.h>
 
 struct sysentvec elf64_freebsd_sysvec = {
@@ -133,11 +134,26 @@ SYSINIT(kelf64, SI_SUB_EXEC, SI_ORDER_AN
 	&kfreebsd_brand_info);
 
 void
-elf64_dump_thread(struct thread *td __unused, void *dst __unused,
-    size_t *off __unused)
+elf64_dump_thread(struct thread *td, void *dst, size_t *off)
 {
-}
+	void *buf;
+	size_t len;
 
+	len = 0;
+	if (use_xsave) {
+		if (dst != NULL) {
+			fpugetregs(td);
+			len += elf64_populate_note(NT_X86_XSTATE,
+			    get_pcb_user_save_td(td), dst,
+			    cpu_max_ext_state_size, &buf);
+			*(uint64_t *)((char *)buf + X86_XSTATE_XCR0_OFFSET) =
+			    xsave_mask;
+		} else
+			len += elf64_populate_note(NT_X86_XSTATE, NULL, NULL,
+			    cpu_max_ext_state_size, NULL);
+	}
+	*off = len;
+}
 
 /* Process one elf relocation with addend. */
 static int

Modified: projects/sendfile/sys/amd64/amd64/fpu.c
==============================================================================
--- projects/sendfile/sys/amd64/amd64/fpu.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/sys/amd64/amd64/fpu.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -127,6 +127,13 @@ CTASSERT(sizeof(struct savefpu_ymm) == 8
  */
 CTASSERT(sizeof(struct pcb) % XSAVE_AREA_ALIGN == 0);
 
+/*
+ * Ensure the copy of XCR0 saved in a core is contained in the padding
+ * area.
+ */
+CTASSERT(X86_XSTATE_XCR0_OFFSET >= offsetof(struct savefpu, sv_pad) &&
+    X86_XSTATE_XCR0_OFFSET + sizeof(uint64_t) <= sizeof(struct savefpu));
+
 static	void	fpu_clean_state(void);
 
 SYSCTL_INT(_hw, HW_FLOATINGPT, floatingpoint, CTLFLAG_RD,

Modified: projects/sendfile/sys/amd64/amd64/ptrace_machdep.c
==============================================================================
--- projects/sendfile/sys/amd64/amd64/ptrace_machdep.c	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/sys/amd64/amd64/ptrace_machdep.c	Fri Nov 21 23:08:51 2014	(r274827)
@@ -42,6 +42,7 @@ __FBSDID("$FreeBSD$");
 static int
 cpu_ptrace_xstate(struct thread *td, int req, void *addr, int data)
 {
+	struct ptrace_xstate_info info;
 	char *savefpu;
 	int error;
 
@@ -49,14 +50,14 @@ cpu_ptrace_xstate(struct thread *td, int
 		return (EOPNOTSUPP);
 
 	switch (req) {
-	case PT_GETXSTATE:
+	case PT_GETXSTATE_OLD:
 		fpugetregs(td);
 		savefpu = (char *)(get_pcb_user_save_td(td) + 1);
 		error = copyout(savefpu, addr,
 		    cpu_max_ext_state_size - sizeof(struct savefpu));
 		break;
 
-	case PT_SETXSTATE:
+	case PT_SETXSTATE_OLD:
 		if (data > cpu_max_ext_state_size - sizeof(struct savefpu)) {
 			error = EINVAL;
 			break;
@@ -70,6 +71,36 @@ cpu_ptrace_xstate(struct thread *td, int
 		free(savefpu, M_TEMP);
 		break;
 
+	case PT_GETXSTATE_INFO:
+		if (data != sizeof(info)) {
+			error  = EINVAL;
+			break;
+		}
+		info.xsave_len = cpu_max_ext_state_size;
+		info.xsave_mask = xsave_mask;
+		error = copyout(&info, addr, data);
+		break;
+
+	case PT_GETXSTATE:
+		fpugetregs(td);
+		savefpu = (char *)(get_pcb_user_save_td(td));
+		error = copyout(savefpu, addr, cpu_max_ext_state_size);
+		break;
+
+	case PT_SETXSTATE:
+		if (data > cpu_max_ext_state_size) {
+			error = EINVAL;
+			break;
+		}
+		savefpu = malloc(data, M_TEMP, M_WAITOK);
+		error = copyin(addr, savefpu, data);
+		if (error == 0)
+			error = fpusetregs(td, (struct savefpu *)savefpu,
+			    savefpu + sizeof(struct savefpu), data -
+			    sizeof(struct savefpu));
+		free(savefpu, M_TEMP);
+		break;
+
 	default:
 		error = EINVAL;
 		break;
@@ -81,8 +112,6 @@ cpu_ptrace_xstate(struct thread *td, int
 #ifdef COMPAT_FREEBSD32
 #define PT_I386_GETXMMREGS	(PT_FIRSTMACH + 0)
 #define PT_I386_SETXMMREGS	(PT_FIRSTMACH + 1)
-#define PT_I386_GETXSTATE	(PT_FIRSTMACH + 2)
-#define PT_I386_SETXSTATE	(PT_FIRSTMACH + 3)
 
 static int
 cpu32_ptrace(struct thread *td, int req, void *addr, int data)
@@ -104,12 +133,12 @@ cpu32_ptrace(struct thread *td, int req,
 		fpstate->sv_env.en_mxcsr &= cpu_mxcsr_mask;
 		break;
 
-	case PT_I386_GETXSTATE:
-		error = cpu_ptrace_xstate(td, PT_GETXSTATE, addr, data);
-		break;
-
-	case PT_I386_SETXSTATE:
-		error = cpu_ptrace_xstate(td, PT_SETXSTATE, addr, data);
+	case PT_GETXSTATE_OLD:
+	case PT_SETXSTATE_OLD:
+	case PT_GETXSTATE_INFO:
+	case PT_GETXSTATE:
+	case PT_SETXSTATE:
+		error = cpu_ptrace_xstate(td, req, addr, data);
 		break;
 
 	default:
@@ -131,13 +160,16 @@ cpu_ptrace(struct thread *td, int req, v
 		return (cpu32_ptrace(td, req, addr, data));
 #endif
 
-	/* Support old values of PT_GETXSTATE and PT_SETXSTATE. */
+	/* Support old values of PT_GETXSTATE_OLD and PT_SETXSTATE_OLD. */
 	if (req == PT_FIRSTMACH + 0)
-		req = PT_GETXSTATE;
+		req = PT_GETXSTATE_OLD;
 	if (req == PT_FIRSTMACH + 1)
-		req = PT_SETXSTATE;
+		req = PT_SETXSTATE_OLD;
 
 	switch (req) {
+	case PT_GETXSTATE_OLD:
+	case PT_SETXSTATE_OLD:
+	case PT_GETXSTATE_INFO:
 	case PT_GETXSTATE:
 	case PT_SETXSTATE:
 		error = cpu_ptrace_xstate(td, req, addr, data);

Modified: projects/sendfile/sys/amd64/include/asm.h
==============================================================================
--- projects/sendfile/sys/amd64/include/asm.h	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/sys/amd64/include/asm.h	Fri Nov 21 23:08:51 2014	(r274827)
@@ -38,7 +38,7 @@
 
 #include <sys/cdefs.h>
 
-#ifdef PIC
+#ifdef __PIC__
 #define	PIC_PLT(x)	x@PLT
 #define	PIC_GOT(x)	x@GOTPCREL(%rip)
 #else

Modified: projects/sendfile/sys/arm/include/asm.h
==============================================================================
--- projects/sendfile/sys/arm/include/asm.h	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/sys/arm/include/asm.h	Fri Nov 21 23:08:51 2014	(r274827)
@@ -104,7 +104,7 @@
 
 #define	ASMSTR		.asciz
 
-#if defined(PIC)
+#if defined(__PIC__)
 #define	PLT_SYM(x)	PIC_SYM(x, PLT)
 #define	GOT_SYM(x)	PIC_SYM(x, GOT)
 #define	GOT_GET(x,got,sym)	\
@@ -131,7 +131,7 @@
 #define	GOT_INIT(got,gotsym,pclabel)
 #define	GOT_INITSYM(gotsym,pclabel)
 #define	PIC_SYM(x,y)	x
-#endif	/* PIC */
+#endif	/* __PIC__ */
 
 #undef __FBSDID
 #if !defined(lint) && !defined(STRIP_FBSDID)

Modified: projects/sendfile/sys/boot/fdt/dts/mips/beri-sim.dts
==============================================================================
--- projects/sendfile/sys/boot/fdt/dts/mips/beri-sim.dts	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/sys/boot/fdt/dts/mips/beri-sim.dts	Fri Nov 21 23:08:51 2014	(r274827)
@@ -97,7 +97,7 @@
 			reg = <0x0 0x4000000>;		// 64M at 0x0
 		};
 
-		beripic: beripic@7f804000 {
+		beripic0: beripic@7f804000 {
 			compatible = "sri-cambridge,beri-pic";
 			interrupt-controller;
 			#address-cells = <0>;
@@ -115,7 +115,7 @@
 			compatible = "altera,jtag_uart-11_0";
 			reg = <0x7f000000 0x40>;
 			interrupts = <0>;
-			interrupt-parent = <&beripic>;
+			interrupt-parent = <&beripic0>;
 		};
 
 		serial@7f001000 {

Modified: projects/sendfile/sys/boot/fdt/dts/mips/beripad-de4.dts
==============================================================================
--- projects/sendfile/sys/boot/fdt/dts/mips/beripad-de4.dts	Fri Nov 21 23:05:08 2014	(r274826)
+++ projects/sendfile/sys/boot/fdt/dts/mips/beripad-de4.dts	Fri Nov 21 23:08:51 2014	(r274827)
@@ -97,7 +97,7 @@
 			reg = <0x0 0x40000000>;		// 1G at 0x0
 		};
 
-		beripic: beripic@7f804000 {
+		beripic0: beripic@7f804000 {
 			compatible = "sri-cambridge,beri-pic";
 			interrupt-controller;
 			#address-cells = <0>;
@@ -117,14 +117,14 @@
 			reg-shift = <2>;
 			clock-frequency = <50000000>;
 			interrupts = <6>;
-			interrupt-parent = <&beripic>;
+			interrupt-parent = <&beripic0>;
 		};
 
 		serial@7f000000 {
 			compatible = "altera,jtag_uart-11_0";
 			reg = <0x7f000000 0x40>;
 			interrupts = <0>;
-			interrupt-parent = <&beripic>;
+			interrupt-parent = <&beripic0>;
 		};
 
 		serial@7f001000 {
@@ -198,7 +198,7 @@
 			       0x7f007420 0x20>;
 			// RX, TX
 			interrupts = <1 2>;
-			interrupt-parent = <&beripic>;
+			interrupt-parent = <&beripic0>;
 		};
 
 		ethernet@7f005000 {
@@ -211,11 +211,12 @@
 			       0x7f005420 0x20>;
 			// RX, TX
 			interrupts = <11 12>;
-			interrupt-parent = <&beripic>;
+			interrupt-parent = <&beripic0>;
 		};
 
 		touchscreen@70400000 {
 			compatible = "sri-cambridge,mtl";
+			panel-size = < 800 480 >;
 			reg = <0x70400000 0x1000
 			       0x70000000 0x177000
 			       0x70177000 0x2000>;
@@ -227,7 +228,7 @@
 			       0x7f140000 0x4>;
 			// IRQ 4 is DC, IRQ 5 is HC.
 			interrupts = <4 5>;
-			interrupt-parent = <&beripic>;

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201411212308.sALN8qSx042048>