PERFORCE change 170042 for review
Alexander Motin
mav at FreeBSD.org
Sun Nov 1 17:06:15 UTC 2009
http://p4web.freebsd.org/chv.cgi?CH=170042
Change 170042 by mav at mav_mavbook on 2009/11/01 17:05:43
IFC
Affected files ...
.. //depot/projects/scottl-camlock/src/Makefile.inc1#10 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#48 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#115 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_internal.h#11 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_xpt.c#22 integrate
.. //depot/projects/scottl-camlock/src/sys/conf/files.ia64#16 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/ata/chipsets/ata-marvell.c#13 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/ata/chipsets/ata-siliconimage.c#10 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sym/sym_hipd.c#15 integrate
.. //depot/projects/scottl-camlock/src/sys/ia64/ia64/highfp.c#1 branch
.. //depot/projects/scottl-camlock/src/sys/ia64/ia64/interrupt.c#14 integrate
.. //depot/projects/scottl-camlock/src/sys/ia64/ia64/machdep.c#19 integrate
.. //depot/projects/scottl-camlock/src/sys/ia64/ia64/trap.c#14 integrate
.. //depot/projects/scottl-camlock/src/sys/ia64/ia64/vm_machdep.c#10 integrate
.. //depot/projects/scottl-camlock/src/sys/ia64/include/md_var.h#8 integrate
.. //depot/projects/scottl-camlock/src/sys/ia64/include/proc.h#4 integrate
.. //depot/projects/scottl-camlock/src/sys/powerpc/aim/copyinout.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/powerpc/aim/swtch.S#5 integrate
.. //depot/projects/scottl-camlock/src/sys/powerpc/aim/trap.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/vm/vm_fault.c#25 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/usbconfig/usbconfig.8#3 integrate
Differences ...
==== //depot/projects/scottl-camlock/src/Makefile.inc1#10 (text+ko) ====
@@ -1,5 +1,5 @@
#
-# $FreeBSD: src/Makefile.inc1,v 1.632 2009/10/28 07:05:32 edwin Exp $
+# $FreeBSD: src/Makefile.inc1,v 1.633 2009/11/01 08:20:30 rdivacky Exp $
#
# Make command line options:
# -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir
@@ -272,7 +272,7 @@
LIB32CPUFLAGS= -march=${TARGET_CPUTYPE}
.endif
LIB32FLAGS= -m32 ${LIB32CPUFLAGS} -mfancy-math-387 -DCOMPAT_32BIT \
- -iprefix ${LIB32TMP}/usr/ \
+ -isystem ${LIB32TMP}/usr/include/ \
-L${LIB32TMP}/usr/lib32 \
-B${LIB32TMP}/usr/lib32
==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#48 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/ata/ata_xpt.c,v 1.10 2009/10/31 10:43:38 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/ata/ata_xpt.c,v 1.11 2009/11/01 11:31:06 mav Exp $");
#include <sys/param.h>
#include <sys/bus.h>
==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#115 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.230 2009/10/31 10:43:38 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.231 2009/11/01 11:31:06 mav Exp $");
#include <sys/param.h>
#include <sys/bus.h>
==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_internal.h#11 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/cam/cam_xpt_internal.h,v 1.3 2009/10/21 15:27:48 mav Exp $
+ * $FreeBSD: src/sys/cam/cam_xpt_internal.h,v 1.4 2009/11/01 11:31:06 mav Exp $
*/
#ifndef _CAM_CAM_XPT_INTERNAL_H
==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_xpt.c#22 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_xpt.c,v 1.5 2009/10/31 10:43:38 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_xpt.c,v 1.6 2009/11/01 11:31:06 mav Exp $");
#include <sys/param.h>
#include <sys/bus.h>
==== //depot/projects/scottl-camlock/src/sys/conf/files.ia64#16 (text+ko) ====
@@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
-# $FreeBSD: src/sys/conf/files.ia64,v 1.100 2009/09/03 09:33:57 ed Exp $
+# $FreeBSD: src/sys/conf/files.ia64,v 1.101 2009/10/31 22:27:31 marcel Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -84,6 +84,7 @@
ia64/ia64/emulate.c standard
ia64/ia64/exception.S standard
ia64/ia64/gdb_machdep.c optional gdb
+ia64/ia64/highfp.c standard
ia64/ia64/in_cksum.c optional inet
ia64/ia64/interrupt.c standard
ia64/ia64/locore.S standard no-obj
==== //depot/projects/scottl-camlock/src/sys/dev/ata/chipsets/ata-marvell.c#13 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/chipsets/ata-marvell.c,v 1.14 2009/10/31 13:24:14 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/chipsets/ata-marvell.c,v 1.15 2009/10/31 14:19:50 mav Exp $");
#include "opt_ata.h"
#include <sys/param.h>
@@ -591,7 +591,9 @@
/* chip does not reliably do 64K DMA transfers */
if (ctlr->chip->cfg2 == MV_50XX || ctlr->chip->cfg2 == MV_60XX)
- ch->dma.max_iosize = 64 * DEV_BSIZE;
+ ch->dma.max_iosize = 64 * DEV_BSIZE;
+ else
+ ch->dma.max_iosize = (ATA_DMA_ENTRIES - 1) * PAGE_SIZE;
}
ATA_DECLARE_DRIVER(ata_marvell);
==== //depot/projects/scottl-camlock/src/sys/dev/ata/chipsets/ata-siliconimage.c#10 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/chipsets/ata-siliconimage.c,v 1.9 2009/10/31 13:24:14 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/chipsets/ata-siliconimage.c,v 1.10 2009/11/01 13:06:15 mav Exp $");
#include "opt_ata.h"
#include <sys/param.h>
==== //depot/projects/scottl-camlock/src/sys/dev/sym/sym_hipd.c#15 (text+ko) ====
@@ -56,7 +56,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/sym/sym_hipd.c,v 1.72 2008/10/14 20:18:57 marius Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/sym/sym_hipd.c,v 1.73 2009/10/31 17:06:36 se Exp $");
#define SYM_DRIVER_NAME "sym-1.6.5-20000902"
@@ -8582,7 +8582,7 @@
* Allocate a tag for the DMA of user data.
*/
if (bus_dma_tag_create(np->bus_dmat, 1, (1<<24),
- BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR,
+ BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR,
NULL, NULL,
BUS_SPACE_MAXSIZE, SYM_CONF_MAX_SG,
(1<<24), 0, busdma_lock_mutex, &np->mtx,
==== //depot/projects/scottl-camlock/src/sys/ia64/ia64/interrupt.c#14 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/ia64/ia64/interrupt.c,v 1.71 2009/08/13 17:09:45 attilio Exp $ */
+/* $FreeBSD: src/sys/ia64/ia64/interrupt.c,v 1.72 2009/10/31 22:27:31 marcel Exp $ */
/* $NetBSD: interrupt.c,v 1.23 1998/02/24 07:38:01 thorpej Exp $ */
/*-
@@ -216,14 +216,7 @@
asts[PCPU_GET(cpuid)]++;
CTR1(KTR_SMP, "IPI_AST, cpuid=%d", PCPU_GET(cpuid));
} else if (vector == ipi_vector[IPI_HIGH_FP]) {
- struct thread *thr = PCPU_GET(fpcurthread);
- if (thr != NULL) {
- mtx_lock_spin(&thr->td_md.md_highfp_mtx);
- save_high_fp(&thr->td_pcb->pcb_high_fp);
- thr->td_pcb->pcb_fpcpu = NULL;
- PCPU_SET(fpcurthread, NULL);
- mtx_unlock_spin(&thr->td_md.md_highfp_mtx);
- }
+ ia64_highfp_save_ipi();
} else if (vector == ipi_vector[IPI_RENDEZVOUS]) {
rdvs[PCPU_GET(cpuid)]++;
CTR1(KTR_SMP, "IPI_RENDEZVOUS, cpuid=%d", PCPU_GET(cpuid));
==== //depot/projects/scottl-camlock/src/sys/ia64/ia64/machdep.c#19 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ia64/ia64/machdep.c,v 1.247 2009/10/27 10:47:58 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/ia64/ia64/machdep.c,v 1.248 2009/10/31 22:27:31 marcel Exp $");
#include "opt_compat.h"
#include "opt_ddb.h"
@@ -1461,81 +1461,6 @@
return (0);
}
-/*
- * High FP register functions.
- */
-
-int
-ia64_highfp_drop(struct thread *td)
-{
- struct pcb *pcb;
- struct pcpu *cpu;
- struct thread *thr;
-
- mtx_lock_spin(&td->td_md.md_highfp_mtx);
- pcb = td->td_pcb;
- cpu = pcb->pcb_fpcpu;
- if (cpu == NULL) {
- mtx_unlock_spin(&td->td_md.md_highfp_mtx);
- return (0);
- }
- pcb->pcb_fpcpu = NULL;
- thr = cpu->pc_fpcurthread;
- cpu->pc_fpcurthread = NULL;
- mtx_unlock_spin(&td->td_md.md_highfp_mtx);
-
- /* Post-mortem sanity checking. */
- KASSERT(thr == td, ("Inconsistent high FP state"));
- return (1);
-}
-
-int
-ia64_highfp_save(struct thread *td)
-{
- struct pcb *pcb;
- struct pcpu *cpu;
- struct thread *thr;
-
- /* Don't save if the high FP registers weren't modified. */
- if ((td->td_frame->tf_special.psr & IA64_PSR_MFH) == 0)
- return (ia64_highfp_drop(td));
-
- mtx_lock_spin(&td->td_md.md_highfp_mtx);
- pcb = td->td_pcb;
- cpu = pcb->pcb_fpcpu;
- if (cpu == NULL) {
- mtx_unlock_spin(&td->td_md.md_highfp_mtx);
- return (0);
- }
-#ifdef SMP
- if (td == curthread)
- sched_pin();
- if (cpu != pcpup) {
- mtx_unlock_spin(&td->td_md.md_highfp_mtx);
- ipi_send(cpu, IPI_HIGH_FP);
- if (td == curthread)
- sched_unpin();
- while (pcb->pcb_fpcpu == cpu)
- DELAY(100);
- return (1);
- } else {
- save_high_fp(&pcb->pcb_high_fp);
- if (td == curthread)
- sched_unpin();
- }
-#else
- save_high_fp(&pcb->pcb_high_fp);
-#endif
- pcb->pcb_fpcpu = NULL;
- thr = cpu->pc_fpcurthread;
- cpu->pc_fpcurthread = NULL;
- mtx_unlock_spin(&td->td_md.md_highfp_mtx);
-
- /* Post-mortem sanity cxhecking. */
- KASSERT(thr == td, ("Inconsistent high FP state"));
- return (1);
-}
-
void
ia64_sync_icache(vm_offset_t va, vm_offset_t sz)
{
==== //depot/projects/scottl-camlock/src/sys/ia64/ia64/trap.c#14 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ia64/ia64/trap.c,v 1.130 2008/03/12 10:11:58 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/ia64/ia64/trap.c,v 1.131 2009/10/31 22:27:31 marcel Exp $");
#include "opt_ddb.h"
#include "opt_ktrace.h"
@@ -652,66 +652,10 @@
break;
case IA64_VEC_DISABLED_FP: {
- struct pcpu *pcpu;
- struct pcb *pcb;
- struct thread *thr;
-
- /* Always fatal in kernel. Should never happen. */
- if (!user)
+ if (user)
+ ia64_highfp_enable(td, tf);
+ else
trap_panic(vector, tf);
-
- sched_pin();
- thr = PCPU_GET(fpcurthread);
- if (thr == td) {
- /*
- * Short-circuit handling the trap when this CPU
- * already holds the high FP registers for this
- * thread. We really shouldn't get the trap in the
- * first place, but since it's only a performance
- * issue and not a correctness issue, we emit a
- * message for now, enable the high FP registers and
- * return.
- */
- printf("XXX: bogusly disabled high FP regs\n");
- tf->tf_special.psr &= ~IA64_PSR_DFH;
- sched_unpin();
- goto out;
- } else if (thr != NULL) {
- mtx_lock_spin(&thr->td_md.md_highfp_mtx);
- pcb = thr->td_pcb;
- save_high_fp(&pcb->pcb_high_fp);
- pcb->pcb_fpcpu = NULL;
- PCPU_SET(fpcurthread, NULL);
- mtx_unlock_spin(&thr->td_md.md_highfp_mtx);
- thr = NULL;
- }
-
- mtx_lock_spin(&td->td_md.md_highfp_mtx);
- pcb = td->td_pcb;
- pcpu = pcb->pcb_fpcpu;
-
-#ifdef SMP
- if (pcpu != NULL) {
- mtx_unlock_spin(&td->td_md.md_highfp_mtx);
- ipi_send(pcpu, IPI_HIGH_FP);
- while (pcb->pcb_fpcpu == pcpu)
- DELAY(100);
- mtx_lock_spin(&td->td_md.md_highfp_mtx);
- pcpu = pcb->pcb_fpcpu;
- thr = PCPU_GET(fpcurthread);
- }
-#endif
-
- if (thr == NULL && pcpu == NULL) {
- restore_high_fp(&pcb->pcb_high_fp);
- PCPU_SET(fpcurthread, td);
- pcb->pcb_fpcpu = pcpup;
- tf->tf_special.psr &= ~IA64_PSR_MFH;
- tf->tf_special.psr &= ~IA64_PSR_DFH;
- }
-
- mtx_unlock_spin(&td->td_md.md_highfp_mtx);
- sched_unpin();
goto out;
}
==== //depot/projects/scottl-camlock/src/sys/ia64/ia64/vm_machdep.c#10 (text+ko) ====
@@ -38,7 +38,7 @@
*
* from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91
* Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$
- * $FreeBSD: src/sys/ia64/ia64/vm_machdep.c,v 1.96 2009/06/20 05:36:53 marcel Exp $
+ * $FreeBSD: src/sys/ia64/ia64/vm_machdep.c,v 1.97 2009/10/31 22:27:31 marcel Exp $
*/
/*-
* Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
@@ -120,14 +120,11 @@
sp -= sizeof(struct trapframe);
td->td_frame = (struct trapframe *)sp;
td->td_frame->tf_length = sizeof(struct trapframe);
- mtx_init(&td->td_md.md_highfp_mtx, "High FP lock", NULL, MTX_SPIN);
}
void
cpu_thread_free(struct thread *td)
{
-
- mtx_destroy(&td->td_md.md_highfp_mtx);
}
void
@@ -148,6 +145,8 @@
struct pcb *pcb;
struct trapframe *tf;
+ ia64_highfp_save(td0);
+
tf = td->td_frame;
KASSERT(tf != NULL, ("foo"));
bcopy(td0->td_frame, tf, sizeof(*tf));
==== //depot/projects/scottl-camlock/src/sys/ia64/include/md_var.h#8 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/ia64/include/md_var.h,v 1.29 2009/05/18 18:44:54 marcel Exp $
+ * $FreeBSD: src/sys/ia64/include/md_var.h,v 1.30 2009/10/31 22:27:31 marcel Exp $
*/
#ifndef _MACHINE_MD_VAR_H_
@@ -86,7 +86,9 @@
int ia64_flush_dirty(struct thread *, struct _special *);
uint64_t ia64_get_hcdp(void);
int ia64_highfp_drop(struct thread *);
+int ia64_highfp_enable(struct thread *, struct trapframe *);
int ia64_highfp_save(struct thread *);
+int ia64_highfp_save_ipi(void);
struct ia64_init_return ia64_init(void);
void ia64_probe_sapics(void);
void ia64_sync_icache(vm_offset_t, vm_size_t);
==== //depot/projects/scottl-camlock/src/sys/ia64/include/proc.h#4 (text+ko) ====
@@ -23,14 +23,13 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/ia64/include/proc.h,v 1.15 2005/08/06 20:28:19 marcel Exp $
+ * $FreeBSD: src/sys/ia64/include/proc.h,v 1.16 2009/10/31 22:27:31 marcel Exp $
*/
#ifndef _MACHINE_PROC_H_
#define _MACHINE_PROC_H_
struct mdthread {
- struct mtx md_highfp_mtx;
int md_spinlock_count; /* (k) */
int md_saved_intr; /* (k) */
};
==== //depot/projects/scottl-camlock/src/sys/powerpc/aim/copyinout.c#2 (text+ko) ====
@@ -54,7 +54,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/powerpc/aim/copyinout.c,v 1.16 2007/12/14 22:39:34 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/powerpc/aim/copyinout.c,v 1.17 2009/10/31 17:59:24 nwhitehorn Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -347,8 +347,19 @@
return (-1);
}
- val = *p;
- (void) atomic_cmpset_32((volatile uint32_t *)p, old, new);
+ __asm __volatile (
+ "1:\tlwarx %0, 0, %2\n\t" /* load old value */
+ "cmplw %3, %0\n\t" /* compare */
+ "bne 2f\n\t" /* exit if not equal */
+ "stwcx. %4, 0, %2\n\t" /* attempt to store */
+ "bne- 1b\n\t" /* spin if failed */
+ "b 3f\n\t" /* we've succeeded */
+ "2:\n\t"
+ "stwcx. %0, 0, %2\n\t" /* clear reservation (74xx) */
+ "3:\n\t"
+ : "=&r" (val), "=m" (*p)
+ : "r" (p), "r" (old), "r" (new), "m" (*p)
+ : "cc", "memory");
td->td_pcb->pcb_onfault = NULL;
==== //depot/projects/scottl-camlock/src/sys/powerpc/aim/swtch.S#5 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/powerpc/aim/swtch.S,v 1.29 2009/10/11 16:44:58 nwhitehorn Exp $ */
+/* $FreeBSD: src/sys/powerpc/aim/swtch.S,v 1.32 2009/10/31 20:59:13 nwhitehorn Exp $ */
/* $NetBSD: locore.S,v 1.24 2000/05/31 05:09:17 thorpej Exp $ */
/*-
@@ -57,6 +57,7 @@
*/
#include "assym.s"
+#include "opt_sched.h"
#include <sys/syscall.h>
@@ -81,36 +82,36 @@
* Switch to a new thread saving the current state in the old thread.
*/
ENTRY(cpu_switch)
- stw %r5,TD_LOCK(%r3) /* ULE: update old thread's lock */
- /* XXX needs to change for MP */
-
- lwz %r5,TD_PCB(%r3) /* Get the old thread's PCB ptr */
+ lwz %r6,TD_PCB(%r3) /* Get the old thread's PCB ptr */
mr %r12,%r2
- stmw %r12,PCB_CONTEXT(%r5) /* Save the non-volatile GP regs.
+ stmw %r12,PCB_CONTEXT(%r6) /* Save the non-volatile GP regs.
These can now be used for scratch */
mfcr %r16 /* Save the condition register */
- stw %r16,PCB_CR(%r5)
+ stw %r16,PCB_CR(%r6)
mflr %r16 /* Save the link register */
- stw %r16,PCB_LR(%r5)
+ stw %r16,PCB_LR(%r6)
mfsr %r16,USER_SR /* Save USER_SR for copyin/out */
isync
- stw %r16,PCB_AIM_USR(%r5)
- stw %r1,PCB_SP(%r5) /* Save the stack pointer */
+ stw %r16,PCB_AIM_USR(%r6)
+ stw %r1,PCB_SP(%r6) /* Save the stack pointer */
mr %r14,%r3 /* Copy the old thread ptr... */
mr %r15,%r4 /* and the new thread ptr in scratch */
+ mr %r16,%r5 /* and the new lock */
+ mr %r17,%r6 /* and the PCB */
- lwz %r6,PCB_FLAGS(%r5)
+ lwz %r7,PCB_FLAGS(%r17)
/* Save FPU context if needed */
- andi. %r6, %r6, PCB_FPU
+ andi. %r7, %r7, PCB_FPU
beq .L1
bl save_fpu
.L1:
- lwz %r6,PCB_FLAGS(%r5)
+ mr %r3,%r14 /* restore old thread ptr */
+ lwz %r7,PCB_FLAGS(%r17)
/* Save Altivec context if needed */
- andi. %r6, %r6, PCB_VEC
+ andi. %r7, %r7, PCB_VEC
beq .L2
bl save_vec
@@ -118,7 +119,19 @@
mr %r3,%r14 /* restore old thread ptr */
bl pmap_deactivate /* Deactivate the current pmap */
+ stw %r16,TD_LOCK(%r14) /* ULE: update old thread's lock */
+
cpu_switchin:
+#if defined(SMP) && defined(SCHED_ULE)
+ /* Wait for the new thread to become unblocked */
+ lis %r6,blocked_lock at ha
+ addi %r6,%r6,blocked_lock at l
+blocked_loop:
+ lwz %r7,TD_LOCK(%r15)
+ cmpw %r6,%r7
+ beq blocked_loop
+#endif
+
mfsprg %r7,0 /* Get the pcpu pointer */
stw %r15,PC_CURTHREAD(%r7) /* Store new current thread */
lwz %r17,TD_PCB(%r15) /* Store new current PCB */
==== //depot/projects/scottl-camlock/src/sys/powerpc/aim/trap.c#4 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/powerpc/aim/trap.c,v 1.75 2009/04/19 06:30:00 nwhitehorn Exp $");
+__FBSDID("$FreeBSD: src/sys/powerpc/aim/trap.c,v 1.76 2009/10/31 17:46:50 nwhitehorn Exp $");
#include "opt_ktrace.h"
@@ -85,8 +85,6 @@
static int handle_onfault(struct trapframe *frame);
static void syscall(struct trapframe *frame);
-static __inline void setusr(u_int);
-
int setfault(faultbuf); /* defined in locore.S */
/* Why are these not defined in a header? */
@@ -558,13 +556,6 @@
return (SIGSEGV);
}
-static __inline void
-setusr(u_int content)
-{
- __asm __volatile ("isync; mtsr %0,%1; isync"
- :: "n"(USER_SR), "r"(content));
-}
-
int
badaddr(void *addr, size_t size)
{
==== //depot/projects/scottl-camlock/src/sys/vm/vm_fault.c#25 (text+ko) ====
@@ -72,7 +72,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/vm/vm_fault.c,v 1.257 2009/10/27 10:15:58 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/vm/vm_fault.c,v 1.258 2009/10/31 17:39:56 alc Exp $");
#include "opt_vm.h"
@@ -1179,7 +1179,7 @@
dst_object->uip = dst_entry->uip;
dst_entry->uip = NULL;
}
- access = prot = dst_entry->max_protection;
+ access = prot = dst_entry->protection;
/*
* If not an upgrade, then enter the mappings in the pmap as
* read and/or execute accesses. Otherwise, enter them as
==== //depot/projects/scottl-camlock/src/usr.sbin/usbconfig/usbconfig.8#3 (text+ko) ====
@@ -1,4 +1,4 @@
-.\" $FreeBSD: src/usr.sbin/usbconfig/usbconfig.8,v 1.2 2009/05/27 19:21:29 thompsa Exp $
+.\" $FreeBSD: src/usr.sbin/usbconfig/usbconfig.8,v 1.3 2009/11/01 11:39:07 brueffer Exp $
.\"
.\" Copyright (c) 2008 Hans Petter Selasky. All rights reserved.
.\"
@@ -23,7 +23,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd Sep 28, 2008
+.Dd November 1, 2009
.Dt USBCONFIG 8
.Os
.Sh NAME
@@ -49,5 +49,13 @@
.It Fl h
Show help and available commands.
.El
+.Pp
+When called without options,
+.Nm
+prints a list of all available USB devices.
+.Sh EXAMPLES
+Show information about the device on USB bus 1 at address 2:
+.Pp
+.Dl usbconfig -u 1 -a 2 dump_info
.Sh SEE ALSO
.Xr usb 4
More information about the p4-projects
mailing list