svn commit: r211788 - in projects/sv: . cddl/contrib/dtracetoolkit contrib/top lib lib/libc lib/libc/compat-43 lib/libc/gen lib/libc/locale lib/libc/quad lib/libc/softfloat lib/libc/stdlib lib/libc...

Attilio Rao attilio at FreeBSD.org
Wed Aug 25 00:05:15 UTC 2010


Author: attilio
Date: Wed Aug 25 00:05:14 2010
New Revision: 211788
URL: http://svn.freebsd.org/changeset/base/211788

Log:
  MFC @ 211787

Replaced:
  projects/sv/cddl/contrib/dtracetoolkit/
     - copied from r211787, head/cddl/contrib/dtracetoolkit/
Deleted:
  projects/sv/lib/libthr/arch/powerpc64/
Modified:
  projects/sv/Makefile.inc1
  projects/sv/lib/Makefile
  projects/sv/lib/libc/Makefile
  projects/sv/lib/libc/compat-43/Makefile.inc
  projects/sv/lib/libc/gen/Makefile.inc
  projects/sv/lib/libc/locale/Makefile.inc
  projects/sv/lib/libc/quad/Makefile.inc
  projects/sv/lib/libc/softfloat/Makefile.inc
  projects/sv/lib/libc/stdlib/Makefile.inc
  projects/sv/lib/libc/string/Makefile.inc
  projects/sv/lib/libc/sys/Makefile.inc
  projects/sv/lib/libthr/Makefile
  projects/sv/lib/libthr/arch/powerpc/Makefile.inc
  projects/sv/lib/libthr/arch/powerpc/include/pthread_md.h
  projects/sv/libexec/rtld-elf/Makefile
  projects/sv/share/man/man9/locking.9
  projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
  projects/sv/sys/dev/age/if_age.c
  projects/sv/sys/dev/ed/if_ed_isa.c
  projects/sv/sys/dev/vr/if_vr.c
  projects/sv/sys/pci/if_rl.c
  projects/sv/sys/x86/x86/local_apic.c
  projects/sv/usr.sbin/acpi/acpiconf/acpiconf.c
Directory Properties:
  projects/sv/   (props changed)
  projects/sv/cddl/contrib/opensolaris/   (props changed)
  projects/sv/contrib/bind9/   (props changed)
  projects/sv/contrib/ee/   (props changed)
  projects/sv/contrib/expat/   (props changed)
  projects/sv/contrib/file/   (props changed)
  projects/sv/contrib/gdb/   (props changed)
  projects/sv/contrib/gdtoa/   (props changed)
  projects/sv/contrib/gnu-sort/   (props changed)
  projects/sv/contrib/groff/   (props changed)
  projects/sv/contrib/less/   (props changed)
  projects/sv/contrib/libpcap/   (props changed)
  projects/sv/contrib/llvm/   (props changed)
  projects/sv/contrib/llvm/tools/clang/   (props changed)
  projects/sv/contrib/ncurses/   (props changed)
  projects/sv/contrib/netcat/   (props changed)
  projects/sv/contrib/ntp/   (props changed)
  projects/sv/contrib/one-true-awk/   (props changed)
  projects/sv/contrib/openbsm/   (props changed)
  projects/sv/contrib/openpam/   (props changed)
  projects/sv/contrib/pf/   (props changed)
  projects/sv/contrib/sendmail/   (props changed)
  projects/sv/contrib/tcpdump/   (props changed)
  projects/sv/contrib/tcsh/   (props changed)
  projects/sv/contrib/top/   (props changed)
  projects/sv/contrib/top/install-sh   (props changed)
  projects/sv/contrib/tzcode/stdtime/   (props changed)
  projects/sv/contrib/tzcode/zic/   (props changed)
  projects/sv/contrib/tzdata/   (props changed)
  projects/sv/contrib/wpa/   (props changed)
  projects/sv/crypto/openssh/   (props changed)
  projects/sv/crypto/openssl/   (props changed)
  projects/sv/lib/libc/   (props changed)
  projects/sv/lib/libc/stdtime/   (props changed)
  projects/sv/lib/libutil/   (props changed)
  projects/sv/lib/libz/   (props changed)
  projects/sv/sbin/   (props changed)
  projects/sv/sbin/ipfw/   (props changed)
  projects/sv/share/mk/bsd.arch.inc.mk   (props changed)
  projects/sv/share/zoneinfo/   (props changed)
  projects/sv/sys/   (props changed)
  projects/sv/sys/amd64/include/xen/   (props changed)
  projects/sv/sys/cddl/contrib/opensolaris/   (props changed)
  projects/sv/sys/contrib/dev/acpica/   (props changed)
  projects/sv/sys/contrib/pf/   (props changed)
  projects/sv/sys/contrib/x86emu/   (props changed)
  projects/sv/sys/dev/xen/xenpci/   (props changed)
  projects/sv/usr.bin/csup/   (props changed)
  projects/sv/usr.bin/procstat/   (props changed)
  projects/sv/usr.sbin/zic/   (props changed)

Modified: projects/sv/Makefile.inc1
==============================================================================
--- projects/sv/Makefile.inc1	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/Makefile.inc1	Wed Aug 25 00:05:14 2010	(r211788)
@@ -1131,12 +1131,10 @@ _prereq_libs= gnu/lib/libssp/libssp_nons
 # all shared libraries for ELF.
 #
 _startup_libs=	gnu/lib/csu
-.if exists(${.CURDIR}/lib/csu/${MACHINE_CPUARCH}-elf)
-_startup_libs+=	lib/csu/${MACHINE_CPUARCH}-elf
+.if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}-elf)
+_startup_libs+=	lib/csu/${MACHINE_ARCH}-elf
 .elif exists(${.CURDIR}/lib/csu/${MACHINE_CPUARCH}-elf)
 _startup_libs+=	lib/csu/${MACHINE_CPUARCH}-elf
-.elif exists(${.CURDIR}/lib/csu/${MACHINE_ARCH})
-_startup_libs+=	lib/csu/${MACHINE_ARCH}
 .else
 _startup_libs+=	lib/csu/${MACHINE_CPUARCH}
 .endif

Modified: projects/sv/lib/Makefile
==============================================================================
--- projects/sv/lib/Makefile	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/lib/Makefile	Wed Aug 25 00:05:14 2010	(r211788)
@@ -112,7 +112,9 @@ SUBDIR=	${SUBDIR_ORDERED} \
 	${_bind} \
 	${_clang}
 
-.if exists(${.CURDIR}/csu/${MACHINE_CPUARCH}-elf)
+.if exists(${.CURDIR}/csu/${MACHINE_ARCH}-elf)
+_csu=csu/${MACHINE_ARCH}-elf
+.elif exists(${.CURDIR}/csu/${MACHINE_CPUARCH}-elf)
 _csu=csu/${MACHINE_CPUARCH}-elf
 .elif exists(${.CURDIR}/csu/${MACHINE_CPUARCH}/Makefile)
 _csu=csu/${MACHINE_CPUARCH}

Modified: projects/sv/lib/libc/Makefile
==============================================================================
--- projects/sv/lib/libc/Makefile	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/lib/libc/Makefile	Wed Aug 25 00:05:14 2010	(r211788)
@@ -5,6 +5,15 @@ SHLIBDIR?= /lib
 
 .include <bsd.own.mk>
 
+# We have to special case powerpc and powerpc64, since they mostly have
+# the same source implementation.  libc is very different due to large
+# ABI differences.
+.if ${MACHINE_ARCH} == "powerpc"
+LIBC_ARCH=${MACHINE_ARCH}
+.else
+LIBC_ARCH=${MACHINE_CPUARCH}
+.endif
+
 # All library objects contain FreeBSD revision strings by default; they may be
 # excluded as a space-saving measure.  To produce a library that does
 # not contain these strings, add -DSTRIP_FBSDID (see <sys/cdefs.h>) to CFLAGS
@@ -15,7 +24,7 @@ LIB=c
 SHLIB_MAJOR= 7
 WARNS?=	2
 CFLAGS+=-I${.CURDIR}/include -I${.CURDIR}/../../include
-CFLAGS+=-I${.CURDIR}/${MACHINE_CPUARCH}
+CFLAGS+=-I${.CURDIR}/${LIBC_ARCH}
 CFLAGS+=-DNLS
 CLEANFILES+=tags
 INSTALL_PIC_ARCHIVE=
@@ -36,7 +45,7 @@ MDASM=
 MIASM=
 NOASM=
 
-.include "${.CURDIR}/${MACHINE_CPUARCH}/Makefile.inc"
+.include "${.CURDIR}/${LIBC_ARCH}/Makefile.inc"
 .include "${.CURDIR}/db/Makefile.inc"
 .include "${.CURDIR}/compat-43/Makefile.inc"
 .include "${.CURDIR}/gdtoa/Makefile.inc"
@@ -49,14 +58,14 @@ NOASM=
 .include "${.CURDIR}/net/Makefile.inc"
 .include "${.CURDIR}/nls/Makefile.inc"
 .include "${.CURDIR}/posix1e/Makefile.inc"
-.if ${MACHINE_CPUARCH} != "amd64" && \
-    ${MACHINE_CPUARCH} != "ia64" && \
-    ${MACHINE_ARCH} != "powerpc64" && \
-    ${MACHINE_CPUARCH} != "sparc64" && \
-    ${MACHINE_CPUARCH} != "mips"
+.if ${LIBC_ARCH} != "amd64" && \
+    ${LIBC_ARCH} != "ia64" && \
+    ${LIBC_ARCH} != "powerpc64" && \
+    ${LIBC_ARCH} != "sparc64" && \
+    ${LIBC_ARCH} != "mips"
 .include "${.CURDIR}/quad/Makefile.inc"
 .endif
-.if ${MACHINE_ARCH} == "mips" && \
+.if ${LIBC_ARCH} == "mips" && \
     (!defined(TARGET_ABI) || ${TARGET_ABI} == "o32")
 .include "${.CURDIR}/quad/Makefile.inc"
 .endif
@@ -70,7 +79,7 @@ NOASM=
 .include "${.CURDIR}/rpc/Makefile.inc"
 .include "${.CURDIR}/uuid/Makefile.inc"
 .include "${.CURDIR}/xdr/Makefile.inc"
-.if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "mips"
+.if ${LIBC_ARCH} == "arm" || ${LIBC_ARCH} == "mips"
 .include "${.CURDIR}/softfloat/Makefile.inc"
 .endif
 .if ${MK_NIS} != "no"
@@ -115,14 +124,14 @@ KQSRCS=	adddi3.c anddi3.c ashldi3.c ashr
 KSRCS=	bcmp.c ffs.c ffsl.c fls.c flsl.c index.c mcount.c rindex.c \
 	strcat.c strcmp.c strcpy.c strlen.c strncpy.c
 
-libkern: libkern.gen libkern.${MACHINE_CPUARCH}
+libkern: libkern.gen libkern.${LIBC_ARCH}
 
 libkern.gen: ${KQSRCS} ${KSRCS}
 	cp -p ${.CURDIR}/quad/quad.h ${.ALLSRC} ${DESTDIR}/sys/libkern
 
-libkern.${MACHINE_CPUARCH}:: ${KMSRCS}
+libkern.${LIBC_ARCH}:: ${KMSRCS}
 .if defined(KMSRCS) && !empty(KMSRCS)
-	cp -p ${.ALLSRC} ${DESTDIR}/sys/libkern/${MACHINE_CPUARCH}
+	cp -p ${.ALLSRC} ${DESTDIR}/sys/libkern/${LIBC_ARCH}
 .endif
 
 .include <bsd.lib.mk>

Modified: projects/sv/lib/libc/compat-43/Makefile.inc
==============================================================================
--- projects/sv/lib/libc/compat-43/Makefile.inc	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/lib/libc/compat-43/Makefile.inc	Wed Aug 25 00:05:14 2010	(r211788)
@@ -2,7 +2,7 @@
 # $FreeBSD$
 
 # compat-43 sources
-.PATH: ${.CURDIR}/${MACHINE_CPUARCH}/compat-43 ${.CURDIR}/compat-43
+.PATH: ${.CURDIR}/${LIBC_ARCH}/compat-43 ${.CURDIR}/compat-43
 
 SRCS+=	creat.c gethostid.c getwd.c killpg.c sethostid.c setpgrp.c \
 	setrgid.c setruid.c sigcompat.c

Modified: projects/sv/lib/libc/gen/Makefile.inc
==============================================================================
--- projects/sv/lib/libc/gen/Makefile.inc	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/lib/libc/gen/Makefile.inc	Wed Aug 25 00:05:14 2010	(r211788)
@@ -2,7 +2,7 @@
 # $FreeBSD$
 
 # machine-independent gen sources
-.PATH: ${.CURDIR}/${MACHINE_CPUARCH}/gen ${.CURDIR}/gen
+.PATH: ${.CURDIR}/${LIBC_ARCH}/gen ${.CURDIR}/gen
 
 SRCS+=  __getosreldate.c __xuname.c \
 	_once_stub.c _pthread_stubs.c _rand48.c _spinlock_stub.c \
@@ -38,9 +38,7 @@ SRCS+=  __getosreldate.c __xuname.c \
 SYM_MAPS+=${.CURDIR}/gen/Symbol.map
 
 # machine-dependent gen sources
-.if exists(${.CURDIR}/${MACHINE_CPUARCH}/gen/Makefile.inc)
-.include "${.CURDIR}/${MACHINE_CPUARCH}/gen/Makefile.inc"
-.endif
+.sinclude "${.CURDIR}/${LIBC_ARCH}/gen/Makefile.inc"
 
 MAN+=	alarm.3 arc4random.3 \
 	basename.3 check_utility_compat.3 clock.3 \

Modified: projects/sv/lib/libc/locale/Makefile.inc
==============================================================================
--- projects/sv/lib/libc/locale/Makefile.inc	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/lib/libc/locale/Makefile.inc	Wed Aug 25 00:05:14 2010	(r211788)
@@ -2,7 +2,7 @@
 # $FreeBSD$
 
 # locale sources
-.PATH: ${.CURDIR}/${MACHINE_CPUARCH}/locale ${.CURDIR}/locale
+.PATH: ${.CURDIR}/${LIBC_ARCH}/locale ${.CURDIR}/locale
 
 SRCS+=	ascii.c big5.c btowc.c collate.c collcmp.c euc.c fix_grouping.c \
 	gb18030.c gb2312.c gbk.c isctype.c iswctype.c \

Modified: projects/sv/lib/libc/quad/Makefile.inc
==============================================================================
--- projects/sv/lib/libc/quad/Makefile.inc	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/lib/libc/quad/Makefile.inc	Wed Aug 25 00:05:14 2010	(r211788)
@@ -2,9 +2,9 @@
 # $FreeBSD$
 
 # Quad support, if needed
-.PATH: ${.CURDIR}/${MACHINE_CPUARCH}/quad ${.CURDIR}/quad
+.PATH: ${.CURDIR}/${LIBC_ARCH}/quad ${.CURDIR}/quad
 
-.if ${MACHINE_CPUARCH} == "i386"
+.if ${LIBC_ARCH} == "i386"
 
 SRCS+=	cmpdi2.c divdi3.c moddi3.c qdivrem.c ucmpdi2.c udivdi3.c umoddi3.c
 

Modified: projects/sv/lib/libc/softfloat/Makefile.inc
==============================================================================
--- projects/sv/lib/libc/softfloat/Makefile.inc	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/lib/libc/softfloat/Makefile.inc	Wed Aug 25 00:05:14 2010	(r211788)
@@ -2,10 +2,10 @@
 # $FreeBSD$
 
 SOFTFLOAT_BITS?=64
-.PATH:		${MACHINE_CPUARCH}/softfloat \
+.PATH:		${LIBC_ARCH}/softfloat \
 		${.CURDIR}/softfloat/bits${SOFTFLOAT_BITS} ${.CURDIR}/softfloat
 
-CFLAGS+=	-I${.CURDIR}/${MACHINE_CPUARCH}/softfloat -I${.CURDIR}/softfloat
+CFLAGS+=	-I${.CURDIR}/${LIBC_ARCH}/softfloat -I${.CURDIR}/softfloat
 CFLAGS+=	-DSOFTFLOAT_FOR_GCC
 
 SRCS+=		softfloat.c

Modified: projects/sv/lib/libc/stdlib/Makefile.inc
==============================================================================
--- projects/sv/lib/libc/stdlib/Makefile.inc	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/lib/libc/stdlib/Makefile.inc	Wed Aug 25 00:05:14 2010	(r211788)
@@ -2,7 +2,7 @@
 # $FreeBSD$
 
 # machine-independent stdlib sources
-.PATH: ${.CURDIR}/${MACHINE_CPUARCH}/stdlib ${.CURDIR}/stdlib
+.PATH: ${.CURDIR}/${LIBC_ARCH}/stdlib ${.CURDIR}/stdlib
 
 MISRCS+=_Exit.c a64l.c abort.c abs.c atexit.c atof.c atoi.c atol.c atoll.c \
 	bsearch.c div.c exit.c getenv.c getopt.c getopt_long.c \
@@ -16,7 +16,7 @@ MISRCS+=_Exit.c a64l.c abort.c abs.c ate
 SYM_MAPS+= ${.CURDIR}/stdlib/Symbol.map
 
 # machine-dependent stdlib sources
-.sinclude "${.CURDIR}/${MACHINE_CPUARCH}/stdlib/Makefile.inc"
+.sinclude "${.CURDIR}/${LIBC_ARCH}/stdlib/Makefile.inc"
 
 MAN+=	a64l.3 abort.3 abs.3 alloca.3 atexit.3 atof.3 atoi.3 atol.3 bsearch.3 \
 	div.3 exit.3 getenv.3 getopt.3 getopt_long.3 getsubopt.3 \

Modified: projects/sv/lib/libc/string/Makefile.inc
==============================================================================
--- projects/sv/lib/libc/string/Makefile.inc	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/lib/libc/string/Makefile.inc	Wed Aug 25 00:05:14 2010	(r211788)
@@ -1,7 +1,7 @@
 #	@(#)Makefile.inc	8.1 (Berkeley) 6/4/93
 # $FreeBSD$
 
-.PATH: ${.CURDIR}/${MACHINE_CPUARCH}/string ${.CURDIR}/string
+.PATH: ${.CURDIR}/${LIBC_ARCH}/string ${.CURDIR}/string
 
 CFLAGS+= -I${.CURDIR}/locale
 
@@ -26,9 +26,7 @@ SYM_MAPS+=	${.CURDIR}/string/Symbol.map
 
 
 # machine-dependent string sources
-.if exists(${.CURDIR}/${MACHINE_CPUARCH}/string/Makefile.inc)
-.include "${.CURDIR}/${MACHINE_CPUARCH}/string/Makefile.inc"
-.endif
+.sinclude "${.CURDIR}/${LIBC_ARCH}/string/Makefile.inc"
 
 MAN+=	bcmp.3 bcopy.3 bstring.3 bzero.3 ffs.3 index.3 memccpy.3 memchr.3 \
 	memcmp.3 memcpy.3 memmem.3 memmove.3 memset.3 strcasecmp.3 strcat.3 \

Modified: projects/sv/lib/libc/sys/Makefile.inc
==============================================================================
--- projects/sv/lib/libc/sys/Makefile.inc	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/lib/libc/sys/Makefile.inc	Wed Aug 25 00:05:14 2010	(r211788)
@@ -2,7 +2,7 @@
 # $FreeBSD$
 
 # sys sources
-.PATH: ${.CURDIR}/${MACHINE_CPUARCH}/sys ${.CURDIR}/sys
+.PATH: ${.CURDIR}/${LIBC_ARCH}/sys ${.CURDIR}/sys
 
 # Include the generated makefile containing the *complete* list
 # of syscall names in MIASM.
@@ -13,9 +13,7 @@
 # MDASM names override the default syscall names in MIASM.
 # NOASM will prevent the default syscall code from being generated.
 #
-.if exists(${.CURDIR}/${MACHINE_CPUARCH}/sys/Makefile.inc)
-.include "${.CURDIR}/${MACHINE_CPUARCH}/sys/Makefile.inc"
-.endif
+.sinclude "${.CURDIR}/${LIBC_ARCH}/sys/Makefile.inc"
 
 # Sources common to both syscall interfaces:
 SRCS+=	stack_protector.c stack_protector_compat.c __error.c

Modified: projects/sv/lib/libthr/Makefile
==============================================================================
--- projects/sv/lib/libthr/Makefile	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/lib/libthr/Makefile	Wed Aug 25 00:05:14 2010	(r211788)
@@ -19,7 +19,7 @@ WARNS?=	3
 CFLAGS+=-DPTHREAD_KERNEL
 CFLAGS+=-I${.CURDIR}/../libc/include -I${.CURDIR}/thread \
 	-I${.CURDIR}/../../include
-CFLAGS+=-I${.CURDIR}/arch/${MACHINE_ARCH}/include
+CFLAGS+=-I${.CURDIR}/arch/${MACHINE_CPUARCH}/include
 CFLAGS+=-I${.CURDIR}/sys
 CFLAGS+=-I${.CURDIR}/../../libexec/rtld-elf
 CFLAGS+=-I${.CURDIR}/../../libexec/rtld-elf/${MACHINE_ARCH}
@@ -38,7 +38,7 @@ CFLAGS+=-D_PTHREADS_INVARIANTS
 
 PRECIOUSLIB=
 
-.include "${.CURDIR}/arch/${MACHINE_ARCH}/Makefile.inc"
+.include "${.CURDIR}/arch/${MACHINE_CPUARCH}/Makefile.inc"
 .include "${.CURDIR}/sys/Makefile.inc"
 .include "${.CURDIR}/thread/Makefile.inc"
 

Modified: projects/sv/lib/libthr/arch/powerpc/Makefile.inc
==============================================================================
--- projects/sv/lib/libthr/arch/powerpc/Makefile.inc	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/lib/libthr/arch/powerpc/Makefile.inc	Wed Aug 25 00:05:14 2010	(r211788)
@@ -1,5 +1,5 @@
 # $FreeBSD$
 
-.PATH: ${.CURDIR}/arch/${MACHINE_ARCH}/${MACHINE_ARCH}
+.PATH: ${.CURDIR}/arch/${MACHINE_CPUARCH}/${MACHINE_CPUARCH}
 
 SRCS+=	pthread_md.c

Modified: projects/sv/lib/libthr/arch/powerpc/include/pthread_md.h
==============================================================================
--- projects/sv/lib/libthr/arch/powerpc/include/pthread_md.h	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/lib/libthr/arch/powerpc/include/pthread_md.h	Wed Aug 25 00:05:14 2010	(r211788)
@@ -39,12 +39,16 @@
 #define	CPU_SPINWAIT
 
 #define	DTV_OFFSET		offsetof(struct tcb, tcb_dtv)
+#ifdef __powerpc64__
+#define	TP_OFFSET		0x7010
+#else
 #define	TP_OFFSET		0x7008
+#endif
 
 /*
  * Variant I tcb. The structure layout is fixed, don't blindly
  * change it.
- * %r2 points to end of the structure.
+ * %r2 (32-bit) or %r13 (64-bit) points to end of the structure.
  */
 struct tcb {
 	void			*tcb_dtv;
@@ -57,7 +61,11 @@ void		_tcb_dtor(struct tcb *);
 static __inline void
 _tcb_set(struct tcb *tcb)
 {
+#ifdef __powerpc64__
+	register uint8_t *_tp __asm__("%r13");
+#else
 	register uint8_t *_tp __asm__("%r2");
+#endif
 
 	__asm __volatile("mr %0,%1" : "=r"(_tp) :
 	    "r"((uint8_t *)tcb + TP_OFFSET));
@@ -66,7 +74,11 @@ _tcb_set(struct tcb *tcb)
 static __inline struct tcb *
 _tcb_get(void)
 {
+#ifdef __powerpc64__
+	register uint8_t *_tp __asm__("%r13");
+#else
 	register uint8_t *_tp __asm__("%r2");
+#endif
 
 	return ((struct tcb *)(_tp - TP_OFFSET));
 }

Modified: projects/sv/libexec/rtld-elf/Makefile
==============================================================================
--- projects/sv/libexec/rtld-elf/Makefile	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/libexec/rtld-elf/Makefile	Wed Aug 25 00:05:14 2010	(r211788)
@@ -10,7 +10,12 @@ SRCS=		rtld_start.S \
 MAN=		rtld.1
 CSTD?=		gnu99
 CFLAGS+=	-Wall -DFREEBSD_ELF -DIN_RTLD
-CFLAGS+=	-I${.CURDIR}/${MACHINE_CPUARCH} -I${.CURDIR}
+.if exists(${.CURDIR}/${MACHINE_ARCH})
+RTLD_ARCH=	${MACHINE_ARCH}
+.else
+RTLD_ARCH=	${MACHINE_CPUARCH}
+.endif
+CFLAGS+=	-I${.CURDIR}/${RTLD_ARCH} -I${.CURDIR}
 .if ${MACHINE_ARCH} == "powerpc64"
 LDFLAGS+=	-nostdlib -e _rtld_start
 .else
@@ -39,15 +44,13 @@ LDFLAGS+=	-Wl,--version-script=${VERSION
 
 ${PROG}:	${VERSION_MAP}
 
-.if exists(${.CURDIR}/${MACHINE_CPUARCH}/Symbol.map)
-SYMBOL_MAPS+=	${.CURDIR}/${MACHINE_CPUARCH}/Symbol.map
+.if exists(${.CURDIR}/${RTLD_ARCH}/Symbol.map)
+SYMBOL_MAPS+=	${.CURDIR}/${RTLD_ARCH}/Symbol.map
 .endif
 .endif
 .endif
 
-.if exists(${.CURDIR}/${MACHINE_CPUARCH}/Makefile.inc)
-.include "${.CURDIR}/${MACHINE_CPUARCH}/Makefile.inc"
-.endif
+.sinclude "${.CURDIR}/${RTLD_ARCH}/Makefile.inc"
 
 # Since moving rtld-elf to /libexec, we need to create a symlink.
 # Fixup the existing binary that's there so we can symlink over it.
@@ -56,7 +59,7 @@ beforeinstall:
 	-chflags noschg ${DESTDIR}/usr/libexec/${PROG}
 .endif
 
-.PATH: ${.CURDIR}/${MACHINE_CPUARCH}
+.PATH: ${.CURDIR}/${RTLD_ARCH}
 
 .include <bsd.symver.mk>
 .include <bsd.prog.mk>

Modified: projects/sv/share/man/man9/locking.9
==============================================================================
--- projects/sv/share/man/man9/locking.9	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/share/man/man9/locking.9	Wed Aug 25 00:05:14 2010	(r211788)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 15, 2010
+.Dd August 24, 2010
 .Dt LOCKING 9
 .Os
 .Sh NAME
@@ -334,7 +334,7 @@ At this time this is a rather easy to re
 .Em "Context:"  Ta spin mtx Ta mutex Ta sx Ta rwlock Ta rmlock Ta sleep
 .Xc
 .It interrupt filter:  Ta \&ok Ta \&no Ta \&no Ta \&no Ta \&no Ta \&no 
-.It ithread:    Ta \&ok Ta \&ok Ta \&no Ta \&ok Ta \&ok Ta \&no 
+.It interrupt thread:  Ta \&ok Ta \&ok Ta \&no Ta \&ok Ta \&ok Ta \&no 
 .It callout:    Ta \&ok Ta \&ok Ta \&no Ta \&ok Ta \&no Ta \&no 
 .It syscall:    Ta \&ok Ta \&ok Ta \&ok Ta \&ok Ta \&ok Ta \&ok 
 .El

Modified: projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
==============================================================================
--- projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Wed Aug 25 00:05:14 2010	(r211788)
@@ -2317,12 +2317,12 @@ arc_reclaim_thread(void *dummy __unused)
 		if (arc_eviction_list != NULL)
 			arc_do_user_evicts();
 
-		if (arc_reclaim_needed()) {
-			needfree = 0;
 #ifdef _KERNEL
+		if (needfree) {
+			needfree = 0;
 			wakeup(&needfree);
-#endif
 		}
+#endif
 
 		/* block until needed, or one second, whichever is shorter */
 		CALLB_CPR_SAFE_BEGIN(&cpr);

Modified: projects/sv/sys/dev/age/if_age.c
==============================================================================
--- projects/sv/sys/dev/age/if_age.c	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/sys/dev/age/if_age.c	Wed Aug 25 00:05:14 2010	(r211788)
@@ -1781,6 +1781,7 @@ age_watchdog(struct age_softc *sc)
 	if ((sc->age_flags & AGE_FLAG_LINK) == 0) {
 		if_printf(sc->age_ifp, "watchdog timeout (missed link)\n");
 		ifp->if_oerrors++;
+		ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
 		age_init_locked(sc);
 		return;
 	}
@@ -1793,6 +1794,7 @@ age_watchdog(struct age_softc *sc)
 	}
 	if_printf(sc->age_ifp, "watchdog timeout\n");
 	ifp->if_oerrors++;
+	ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
 	age_init_locked(sc);
 	if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
 		taskqueue_enqueue(sc->age_tq, &sc->age_tx_task);
@@ -1817,8 +1819,10 @@ age_ioctl(struct ifnet *ifp, u_long cmd,
 		else if (ifp->if_mtu != ifr->ifr_mtu) {
 			AGE_LOCK(sc);
 			ifp->if_mtu = ifr->ifr_mtu;
-			if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+			if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) {
+				ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
 				age_init_locked(sc);
+			}
 			AGE_UNLOCK(sc);
 		}
 		break;
@@ -2165,6 +2169,7 @@ age_int_task(void *arg, int pending)
 			if ((status & INTR_DMA_WR_TO_RST) != 0)
 				device_printf(sc->age_dev,
 				    "DMA write error! -- resetting\n");
+			ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
 			age_init_locked(sc);
 		}
 		if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
@@ -2529,6 +2534,9 @@ age_init_locked(struct age_softc *sc)
 	ifp = sc->age_ifp;
 	mii = device_get_softc(sc->age_miibus);
 
+	if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+		return;
+
 	/*
 	 * Cancel any pending I/O.
 	 */

Modified: projects/sv/sys/dev/ed/if_ed_isa.c
==============================================================================
--- projects/sv/sys/dev/ed/if_ed_isa.c	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/sys/dev/ed/if_ed_isa.c	Wed Aug 25 00:05:14 2010	(r211788)
@@ -58,6 +58,7 @@ static struct isa_pnp_id ed_ids[] = {
 	{ 0x0131d805,	NULL },		/* ANX3101 */
 	{ 0x4cf48906,	NULL },		/* ATIf44c */
 	{ 0x01200507,	NULL },		/* AXE2001 */
+	{ 0x0115180e,	NULL },		/* CPX1501 */
 	{ 0x0090252a,	NULL },		/* JQE9000 */
 	{ 0x0020832e,	NULL },		/* KTC2000 */
 	{ 0xd680d041,	NULL },		/* PNP80d6 */

Modified: projects/sv/sys/dev/vr/if_vr.c
==============================================================================
--- projects/sv/sys/dev/vr/if_vr.c	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/sys/dev/vr/if_vr.c	Wed Aug 25 00:05:14 2010	(r211788)
@@ -1558,8 +1558,7 @@ vr_tick(void *xsc)
 	if ((sc->vr_flags & VR_F_RESTART) != 0) {
 		device_printf(sc->vr_dev, "restarting\n");
 		sc->vr_stat.num_restart++;
-		vr_stop(sc);
-		vr_reset(sc);
+		sc->vr_ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
 		vr_init_locked(sc);
 		sc->vr_flags &= ~VR_F_RESTART;
 	}
@@ -2016,6 +2015,9 @@ vr_init_locked(struct vr_softc *sc)
 	ifp = sc->vr_ifp;
 	mii = device_get_softc(sc->vr_miibus);
 
+	if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+		return;
+
 	/* Cancel pending I/O and free all RX/TX buffers. */
 	vr_stop(sc);
 	vr_reset(sc);
@@ -2287,6 +2289,7 @@ vr_watchdog(struct vr_softc *sc)
 			if_printf(sc->vr_ifp, "watchdog timeout "
 			   "(missed link)\n");
 		ifp->if_oerrors++;
+		ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
 		vr_init_locked(sc);
 		return;
 	}
@@ -2294,8 +2297,7 @@ vr_watchdog(struct vr_softc *sc)
 	ifp->if_oerrors++;
 	if_printf(ifp, "watchdog timeout\n");
 
-	vr_stop(sc);
-	vr_reset(sc);
+	ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
 	vr_init_locked(sc);
 
 	if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))

Modified: projects/sv/sys/pci/if_rl.c
==============================================================================
--- projects/sv/sys/pci/if_rl.c	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/sys/pci/if_rl.c	Wed Aug 25 00:05:14 2010	(r211788)
@@ -1302,6 +1302,7 @@ rl_rxeof(struct rl_softc *sc)
 		    total_len < ETHER_MIN_LEN ||
 		    total_len > ETHER_MAX_LEN + ETHER_VLAN_ENCAP_LEN) {
 			ifp->if_ierrors++;
+			ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
 			rl_init_locked(sc);
 			return (rx_npkts);
 		}
@@ -1413,6 +1414,7 @@ rl_txeof(struct rl_softc *sc)
 				CSR_WRITE_4(sc, RL_TXCFG, RL_TXCFG_CONFIG);
 			oldthresh = sc->rl_txthresh;
 			/* error recovery */
+			ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
 			rl_init_locked(sc);
 			/* restore original threshold */
 			sc->rl_txthresh = oldthresh;
@@ -1606,8 +1608,10 @@ rl_poll_locked(struct ifnet *ifp, enum p
 
 		/* XXX We should check behaviour on receiver stalls. */
 
-		if (status & RL_ISR_SYSTEM_ERR)
+		if (status & RL_ISR_SYSTEM_ERR) {
+			ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
 			rl_init_locked(sc);
+		}
 	}
 	return (rx_npkts);
 }
@@ -1645,8 +1649,10 @@ rl_intr(void *arg)
 			rl_rxeof(sc);
 		if ((status & RL_ISR_TX_OK) || (status & RL_ISR_TX_ERR))
 			rl_txeof(sc);
-		if (status & RL_ISR_SYSTEM_ERR)
+		if (status & RL_ISR_SYSTEM_ERR) {
+			ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
 			rl_init_locked(sc);
+		}
 	}
 
 	if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
@@ -1808,6 +1814,9 @@ rl_init_locked(struct rl_softc *sc)
 
 	mii = device_get_softc(sc->rl_miibus);
 
+	if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+		return;
+
 	/*
 	 * Cancel pending I/O and free all RX/TX buffers.
 	 */
@@ -2036,6 +2045,7 @@ rl_watchdog(struct rl_softc *sc)
 
 	rl_txeof(sc);
 	rl_rxeof(sc);
+	sc->rl_ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
 	rl_init_locked(sc);
 }
 

Modified: projects/sv/sys/x86/x86/local_apic.c
==============================================================================
--- projects/sv/sys/x86/x86/local_apic.c	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/sys/x86/x86/local_apic.c	Wed Aug 25 00:05:14 2010	(r211788)
@@ -369,12 +369,13 @@ lapic_setup(int boot)
 	if (la->la_timer_mode != 0) {
 		KASSERT(la->la_timer_period != 0, ("lapic%u: zero divisor",
 		    lapic_id()));
+		lapic_timer_stop();
 		lapic_timer_set_divisor(lapic_timer_divisor);
+		lapic_timer_enable_intr();
 		if (la->la_timer_mode == 1)
 			lapic_timer_periodic(la->la_timer_period);
 		else
 			lapic_timer_oneshot(la->la_timer_period);
-		lapic_timer_enable_intr();
 	}
 
 	/* Program error LVT and clear any existing errors. */
@@ -505,12 +506,10 @@ lapic_et_start(struct eventtimer *et,
 		et->et_max_period.frac =
 		    ((0xfffffffeLLU << 32) / et->et_frequency) << 32;
 	}
-	la = &lapics[lapic_id()];
-	/*
-	 * Start up the timer on the BSP.  The APs will kick off their
-	 * timer during lapic_setup().
-	 */
+	lapic_timer_stop();
 	lapic_timer_set_divisor(lapic_timer_divisor);
+	lapic_timer_enable_intr();
+	la = &lapics[lapic_id()];
 	if (period != NULL) {
 		la->la_timer_mode = 1;
 		la->la_timer_period =
@@ -526,7 +525,6 @@ lapic_et_start(struct eventtimer *et,
 			la->la_timer_period += et->et_frequency * first->sec;
 		lapic_timer_oneshot(la->la_timer_period);
 	}
-	lapic_timer_enable_intr();
 	return (0);
 }
 
@@ -862,8 +860,9 @@ lapic_timer_stop(void)
 
 	value = lapic->lvt_timer;
 	value &= ~APIC_LVTT_TM;
-	value &= ~APIC_LVT_M;
+	value |= APIC_LVT_M;
 	lapic->lvt_timer = value;
+	lapic->icr_timer = 0;
 }
 
 static void

Modified: projects/sv/usr.sbin/acpi/acpiconf/acpiconf.c
==============================================================================
--- projects/sv/usr.sbin/acpi/acpiconf/acpiconf.c	Tue Aug 24 23:34:13 2010	(r211787)
+++ projects/sv/usr.sbin/acpi/acpiconf/acpiconf.c	Wed Aug 25 00:05:14 2010	(r211788)
@@ -86,7 +86,8 @@ acpi_battinfo(int num)
 {
 	union acpi_battery_ioctl_arg battio;
 	const char *pwr_units;
-	int hours, min;
+	int hours, min, amp;
+	uint32_t volt;
 
 	if (num < 0 || num > 64)
 		err(EX_USAGE, "invalid battery %d", num);
@@ -95,11 +96,8 @@ acpi_battinfo(int num)
 	battio.unit = num;
 	if (ioctl(acpifd, ACPIIO_BATT_GET_BIF, &battio) == -1)
 		err(EX_IOERR, "get battery info (%d) failed", num);
-	if (battio.bif.units == 0)
-		pwr_units = "mW";
-	else
-		pwr_units = "mA";
-
+	amp = battio.bif.units;
+	pwr_units = amp ? "mA" : "mW";
 	if (battio.bif.dcap == UNKNOWN_CAP)
 		printf("Design capacity:\tunknown\n");
 	else
@@ -125,6 +123,14 @@ acpi_battinfo(int num)
 	printf("Type:\t\t\t%s\n", battio.bif.type);
 	printf("OEM info:\t\t%s\n", battio.bif.oeminfo);
 
+	/* Fetch battery voltage information. */
+	volt = UNKNOWN_VOLTAGE;
+	battio.unit = num;
+	if (ioctl(acpifd, ACPIIO_BATT_GET_BST, &battio) == -1)
+		err(EX_IOERR, "get battery status (%d) failed", num);
+	if (battio.bst.state != ACPI_BATT_STAT_NOT_PRESENT)
+		volt = battio.bst.volt;
+
 	/* Print current battery state information. */
 	battio.unit = num;
 	if (ioctl(acpifd, ACPIIO_BATT_GET_BATTINFO, &battio) == -1)
@@ -154,22 +160,21 @@ acpi_battinfo(int num)
 		}
 		if (battio.battinfo.rate == -1)
 			printf("Present rate:\t\tunknown\n");
-		else
+		else if (amp && volt != UNKNOWN_VOLTAGE) {
+			printf("Present rate:\t\t%d mA (%d mW)\n",
+			    battio.battinfo.rate,
+			    battio.battinfo.rate * volt / 1000);
+		} else
 			printf("Present rate:\t\t%d %s\n",
 			    battio.battinfo.rate, pwr_units);
 	} else
 		printf("State:\t\t\tnot present\n");
 
 	/* Print battery voltage information. */
-	battio.unit = num;
-	if (ioctl(acpifd, ACPIIO_BATT_GET_BST, &battio) == -1)
-		err(EX_IOERR, "get battery status (%d) failed", num);
-	if (battio.bst.state != ACPI_BATT_STAT_NOT_PRESENT) {
-		if (battio.bst.volt == UNKNOWN_VOLTAGE)
-			printf("Voltage:\t\tunknown\n");
-		else
-			printf("Voltage:\t\t%d mV\n", battio.bst.volt);
-	}
+	if (volt == UNKNOWN_VOLTAGE)
+		printf("Present voltage:\tunknown\n");
+	else
+		printf("Present voltage:\t%d mV\n", volt);
 
 	return (0);
 }


More information about the svn-src-projects mailing list