svn commit: r211656 - in user/imp/tbemd/sys: amd64/acpica
amd64/amd64 amd64/conf amd64/ia32 amd64/include amd64/linux32
arm/arm arm/at91 arm/conf arm/include arm/mv arm/mv/discovery
arm/mv/kirkwood...
Warner Losh
imp at FreeBSD.org
Sun Aug 22 21:52:39 UTC 2010
Author: imp
Date: Sun Aug 22 21:52:38 2010
New Revision: 211656
URL: http://svn.freebsd.org/changeset/base/211656
Log:
Merge to head @211636 -- with hand tweaks [given up] hoping for the best
Added:
user/imp/tbemd/sys/arm/at91/at91_aicreg.h
- copied unchanged from r211636, head/sys/arm/at91/at91_aicreg.h
user/imp/tbemd/sys/arm/at91/at91_pio_sam9.h
- copied unchanged from r211636, head/sys/arm/at91/at91_pio_sam9.h
user/imp/tbemd/sys/arm/at91/at91_pit.c
- copied unchanged from r211636, head/sys/arm/at91/at91_pit.c
user/imp/tbemd/sys/arm/at91/at91_pitreg.h
- copied unchanged from r211636, head/sys/arm/at91/at91_pitreg.h
user/imp/tbemd/sys/arm/at91/at91sam9.c
- copied unchanged from r211636, head/sys/arm/at91/at91sam9.c
user/imp/tbemd/sys/arm/at91/at91sam9_machdep.c
- copied unchanged from r211636, head/sys/arm/at91/at91sam9_machdep.c
user/imp/tbemd/sys/arm/at91/at91sam9g20reg.h
- copied unchanged from r211636, head/sys/arm/at91/at91sam9g20reg.h
user/imp/tbemd/sys/arm/at91/board_hl201.c
- copied unchanged from r211636, head/sys/arm/at91/board_hl201.c
user/imp/tbemd/sys/arm/at91/files.at91sam9
- copied unchanged from r211636, head/sys/arm/at91/files.at91sam9
user/imp/tbemd/sys/arm/at91/if_macb.c
- copied unchanged from r211636, head/sys/arm/at91/if_macb.c
user/imp/tbemd/sys/arm/at91/if_macbreg.h
- copied unchanged from r211636, head/sys/arm/at91/if_macbreg.h
user/imp/tbemd/sys/arm/at91/if_macbvar.h
- copied unchanged from r211636, head/sys/arm/at91/if_macbvar.h
user/imp/tbemd/sys/arm/at91/std.at91sam9
- copied unchanged from r211636, head/sys/arm/at91/std.at91sam9
user/imp/tbemd/sys/arm/at91/std.hl201
- copied unchanged from r211636, head/sys/arm/at91/std.hl201
user/imp/tbemd/sys/arm/conf/HL201
- copied unchanged from r211636, head/sys/arm/conf/HL201
user/imp/tbemd/sys/arm/conf/HL201.hints
- copied unchanged from r211636, head/sys/arm/conf/HL201.hints
user/imp/tbemd/sys/arm/include/fdt.h
- copied unchanged from r211636, head/sys/arm/include/fdt.h
user/imp/tbemd/sys/arm/include/ofw_machdep.h
- copied unchanged from r211636, head/sys/arm/include/ofw_machdep.h
user/imp/tbemd/sys/arm/s3c2xx0/s3c24x0_rtc.c
- copied unchanged from r211636, head/sys/arm/s3c2xx0/s3c24x0_rtc.c
user/imp/tbemd/sys/boot/ofw/libofw/ppc64_elf_freebsd.c
- copied unchanged from r211636, head/sys/boot/ofw/libofw/ppc64_elf_freebsd.c
user/imp/tbemd/sys/boot/zfs/zfstest.c
- copied unchanged from r211636, head/sys/boot/zfs/zfstest.c
user/imp/tbemd/sys/cddl/compat/opensolaris/kern/opensolaris_uio.c
- copied unchanged from r211636, head/sys/cddl/compat/opensolaris/kern/opensolaris_uio.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/common/atomic/powerpc64/
- copied from r211636, head/sys/cddl/contrib/opensolaris/common/atomic/powerpc64/
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/sys/fasttrap_impl.h
- copied unchanged from r211636, head/sys/cddl/contrib/opensolaris/uts/common/sys/fasttrap_impl.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/intel/dtrace/
- copied from r211636, head/sys/cddl/contrib/opensolaris/uts/intel/dtrace/
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/sparc/dtrace/
- copied from r211636, head/sys/cddl/contrib/opensolaris/uts/sparc/dtrace/
user/imp/tbemd/sys/cddl/dev/dtrace/amd64/regset.h
- copied unchanged from r211636, head/sys/cddl/dev/dtrace/amd64/regset.h
user/imp/tbemd/sys/cddl/dev/dtrace/i386/regset.h
- copied unchanged from r211636, head/sys/cddl/dev/dtrace/i386/regset.h
user/imp/tbemd/sys/conf/ldscript.mips.64
- copied unchanged from r211636, head/sys/conf/ldscript.mips.64
user/imp/tbemd/sys/conf/ldscript.mips.n32
- copied unchanged from r211636, head/sys/conf/ldscript.mips.n32
user/imp/tbemd/sys/conf/ldscript.powerpc64
- copied unchanged from r211636, head/sys/conf/ldscript.powerpc64
user/imp/tbemd/sys/crypto/aesni/
- copied from r211636, head/sys/crypto/aesni/
Deleted:
user/imp/tbemd/sys/amd64/acpica/Makefile
user/imp/tbemd/sys/amd64/acpica/genwakecode.sh
user/imp/tbemd/sys/amd64/acpica/genwakedata.sh
user/imp/tbemd/sys/arm/include/bootinfo.h
user/imp/tbemd/sys/arm/mv/discovery/db78xxx.c
user/imp/tbemd/sys/arm/mv/kirkwood/db88f6xxx.c
user/imp/tbemd/sys/arm/mv/kirkwood/files.db88f6xxx
user/imp/tbemd/sys/arm/mv/obio.c
Modified:
user/imp/tbemd/sys/amd64/acpica/acpi_switch.S
user/imp/tbemd/sys/amd64/acpica/acpi_wakecode.S
user/imp/tbemd/sys/amd64/acpica/acpi_wakeup.c
user/imp/tbemd/sys/amd64/acpica/madt.c
user/imp/tbemd/sys/amd64/amd64/apic_vector.S
user/imp/tbemd/sys/amd64/amd64/cpu_switch.S
user/imp/tbemd/sys/amd64/amd64/exception.S
user/imp/tbemd/sys/amd64/amd64/fpu.c
user/imp/tbemd/sys/amd64/amd64/genassym.c
user/imp/tbemd/sys/amd64/amd64/identcpu.c
user/imp/tbemd/sys/amd64/amd64/initcpu.c
user/imp/tbemd/sys/amd64/amd64/intr_machdep.c
user/imp/tbemd/sys/amd64/amd64/legacy.c
user/imp/tbemd/sys/amd64/amd64/machdep.c
user/imp/tbemd/sys/amd64/amd64/mp_machdep.c
user/imp/tbemd/sys/amd64/amd64/mptable_pci.c
user/imp/tbemd/sys/amd64/amd64/pmap.c
user/imp/tbemd/sys/amd64/amd64/support.S
user/imp/tbemd/sys/amd64/amd64/trap.c
user/imp/tbemd/sys/amd64/amd64/tsc.c
user/imp/tbemd/sys/amd64/amd64/vm_machdep.c
user/imp/tbemd/sys/amd64/conf/GENERIC
user/imp/tbemd/sys/amd64/conf/GENERIC.hints
user/imp/tbemd/sys/amd64/conf/NOTES
user/imp/tbemd/sys/amd64/ia32/ia32_exception.S
user/imp/tbemd/sys/amd64/ia32/ia32_signal.c
user/imp/tbemd/sys/amd64/ia32/ia32_syscall.c
user/imp/tbemd/sys/amd64/include/apicvar.h
user/imp/tbemd/sys/amd64/include/asmacros.h
user/imp/tbemd/sys/amd64/include/clock.h
user/imp/tbemd/sys/amd64/include/cpu.h
user/imp/tbemd/sys/amd64/include/elf.h
user/imp/tbemd/sys/amd64/include/mca.h
user/imp/tbemd/sys/amd64/include/param.h
user/imp/tbemd/sys/amd64/include/pcb.h
user/imp/tbemd/sys/amd64/include/pcpu.h
user/imp/tbemd/sys/amd64/include/pmap.h
user/imp/tbemd/sys/amd64/include/segments.h
user/imp/tbemd/sys/amd64/include/smp.h
user/imp/tbemd/sys/amd64/include/specialreg.h
user/imp/tbemd/sys/amd64/include/vmparam.h
user/imp/tbemd/sys/amd64/linux32/linux32_machdep.c
user/imp/tbemd/sys/amd64/linux32/linux32_proto.h
user/imp/tbemd/sys/amd64/linux32/linux32_syscall.h
user/imp/tbemd/sys/amd64/linux32/linux32_sysent.c
user/imp/tbemd/sys/amd64/linux32/linux32_sysvec.c
user/imp/tbemd/sys/amd64/linux32/syscalls.master
user/imp/tbemd/sys/arm/arm/machdep.c
user/imp/tbemd/sys/arm/arm/nexus.c
user/imp/tbemd/sys/arm/arm/pmap.c
user/imp/tbemd/sys/arm/at91/at91_pmc.c
user/imp/tbemd/sys/arm/at91/at91_pmcreg.h
user/imp/tbemd/sys/arm/conf/DB-78XXX
user/imp/tbemd/sys/arm/conf/DB-88F5XXX
user/imp/tbemd/sys/arm/conf/DB-88F6XXX
user/imp/tbemd/sys/arm/conf/SHEEVAPLUG
user/imp/tbemd/sys/arm/include/elf.h
user/imp/tbemd/sys/arm/include/metadata.h
user/imp/tbemd/sys/arm/include/pmap.h
user/imp/tbemd/sys/arm/include/vmparam.h
user/imp/tbemd/sys/arm/mv/bus_space.c
user/imp/tbemd/sys/arm/mv/common.c
user/imp/tbemd/sys/arm/mv/discovery/discovery.c
user/imp/tbemd/sys/arm/mv/discovery/files.db78xxx
user/imp/tbemd/sys/arm/mv/discovery/std.db78xxx
user/imp/tbemd/sys/arm/mv/files.mv
user/imp/tbemd/sys/arm/mv/gpio.c
user/imp/tbemd/sys/arm/mv/ic.c
user/imp/tbemd/sys/arm/mv/kirkwood/kirkwood.c
user/imp/tbemd/sys/arm/mv/kirkwood/sheevaplug.c
user/imp/tbemd/sys/arm/mv/kirkwood/std.db88f6xxx
user/imp/tbemd/sys/arm/mv/kirkwood/std.sheevaplug
user/imp/tbemd/sys/arm/mv/mv_machdep.c
user/imp/tbemd/sys/arm/mv/mv_pci.c
user/imp/tbemd/sys/arm/mv/mv_sata.c
user/imp/tbemd/sys/arm/mv/mvreg.h
user/imp/tbemd/sys/arm/mv/mvvar.h
user/imp/tbemd/sys/arm/mv/mvwin.h
user/imp/tbemd/sys/arm/mv/orion/db88f5xxx.c
user/imp/tbemd/sys/arm/mv/orion/orion.c
user/imp/tbemd/sys/arm/mv/orion/std.db88f5xxx
user/imp/tbemd/sys/arm/mv/rtc.c
user/imp/tbemd/sys/arm/mv/timer.c
user/imp/tbemd/sys/arm/mv/twsi.c
user/imp/tbemd/sys/arm/s3c2xx0/files.s3c2xx0
user/imp/tbemd/sys/arm/s3c2xx0/s3c24x0.c
user/imp/tbemd/sys/arm/s3c2xx0/s3c24x0_machdep.c
user/imp/tbemd/sys/arm/s3c2xx0/s3c24x0reg.h
user/imp/tbemd/sys/arm/s3c2xx0/s3c2xx0_space.c
user/imp/tbemd/sys/arm/s3c2xx0/s3c2xx0var.h
user/imp/tbemd/sys/boot/Makefile
user/imp/tbemd/sys/boot/arm/uboot/Makefile
user/imp/tbemd/sys/boot/common/Makefile.inc
user/imp/tbemd/sys/boot/common/load_elf_obj.c
user/imp/tbemd/sys/boot/common/loader.8
user/imp/tbemd/sys/boot/fdt/Makefile
user/imp/tbemd/sys/boot/fdt/dts/mpc8555cds.dts
user/imp/tbemd/sys/boot/ficl/Makefile
user/imp/tbemd/sys/boot/ficl/ficl.h
user/imp/tbemd/sys/boot/forth/loader.conf
user/imp/tbemd/sys/boot/i386/boot2/Makefile
user/imp/tbemd/sys/boot/i386/loader/Makefile
user/imp/tbemd/sys/boot/i386/pxeldr/Makefile
user/imp/tbemd/sys/boot/ia64/common/exec.c
user/imp/tbemd/sys/boot/ia64/efi/version
user/imp/tbemd/sys/boot/ofw/Makefile.inc
user/imp/tbemd/sys/boot/ofw/libofw/Makefile
user/imp/tbemd/sys/boot/ofw/libofw/libofw.h
user/imp/tbemd/sys/boot/pc98/loader/Makefile
user/imp/tbemd/sys/boot/powerpc/Makefile.inc
user/imp/tbemd/sys/boot/powerpc/boot1.chrp/Makefile
user/imp/tbemd/sys/boot/powerpc/ofw/Makefile
user/imp/tbemd/sys/boot/powerpc/ofw/conf.c
user/imp/tbemd/sys/boot/powerpc/ofw/ldscript.powerpc
user/imp/tbemd/sys/boot/powerpc/ofw/metadata.c
user/imp/tbemd/sys/boot/powerpc/uboot/Makefile
user/imp/tbemd/sys/boot/powerpc/uboot/ldscript.powerpc
user/imp/tbemd/sys/boot/uboot/Makefile.inc
user/imp/tbemd/sys/boot/uboot/common/metadata.c
user/imp/tbemd/sys/boot/zfs/zfsimpl.c
user/imp/tbemd/sys/cam/ata/ata_da.c
user/imp/tbemd/sys/cam/ata/ata_xpt.c
user/imp/tbemd/sys/cam/cam.c
user/imp/tbemd/sys/cam/cam_ccb.h
user/imp/tbemd/sys/cam/cam_xpt.c
user/imp/tbemd/sys/cam/scsi/scsi_all.h
user/imp/tbemd/sys/cam/scsi/scsi_cd.c
user/imp/tbemd/sys/cam/scsi/scsi_da.c
user/imp/tbemd/sys/cam/scsi/scsi_target.c
user/imp/tbemd/sys/cddl/boot/zfs/zfsimpl.h
user/imp/tbemd/sys/cddl/compat/opensolaris/kern/opensolaris_misc.c
user/imp/tbemd/sys/cddl/compat/opensolaris/kern/opensolaris_policy.c
user/imp/tbemd/sys/cddl/compat/opensolaris/sys/misc.h
user/imp/tbemd/sys/cddl/compat/opensolaris/sys/policy.h
user/imp/tbemd/sys/cddl/compat/opensolaris/sys/sid.h
user/imp/tbemd/sys/cddl/compat/opensolaris/sys/uio.h
user/imp/tbemd/sys/cddl/compat/opensolaris/sys/vnode.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/common/zfs/zfs_deleg.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/common/zfs/zfs_deleg.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/common/zfs/zfs_namecheck.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/common/zfs/zfs_namecheck.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/common/zfs/zprop_common.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scrub.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_errlog.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_deleg.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_prop.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/uberblock_impl.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap_impl.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ctldir.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_dir.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_fuid.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_vfsops.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil_impl.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fuid.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_log.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_rlock.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/sys/acl.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/sys/debug.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace_impl.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/sys/fasttrap.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/sys/fm/fs/zfs.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/sys/sysevent/eventdefs.h
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/sys/vnode.h
user/imp/tbemd/sys/cddl/dev/cyclic/cyclic.c
user/imp/tbemd/sys/cddl/dev/dtrace/amd64/dtrace_isa.c
user/imp/tbemd/sys/cddl/dev/dtrace/amd64/dtrace_subr.c
user/imp/tbemd/sys/cddl/dev/dtrace/amd64/instr_size.c
user/imp/tbemd/sys/cddl/dev/dtrace/dtrace_cddl.h
user/imp/tbemd/sys/cddl/dev/dtrace/dtrace_debug.c
user/imp/tbemd/sys/cddl/dev/dtrace/dtrace_ioctl.c
user/imp/tbemd/sys/cddl/dev/dtrace/dtrace_load.c
user/imp/tbemd/sys/cddl/dev/dtrace/dtrace_unload.c
user/imp/tbemd/sys/cddl/dev/dtrace/i386/dtrace_isa.c
user/imp/tbemd/sys/cddl/dev/dtrace/i386/dtrace_subr.c
user/imp/tbemd/sys/cddl/dev/dtrace/i386/instr_size.c
user/imp/tbemd/sys/cddl/dev/systrace/systrace.c
user/imp/tbemd/sys/compat/freebsd32/freebsd32.h
user/imp/tbemd/sys/compat/freebsd32/freebsd32_misc.c
user/imp/tbemd/sys/compat/freebsd32/freebsd32_proto.h
user/imp/tbemd/sys/compat/freebsd32/freebsd32_signal.h
user/imp/tbemd/sys/compat/freebsd32/freebsd32_syscall.h
user/imp/tbemd/sys/compat/freebsd32/freebsd32_syscalls.c
user/imp/tbemd/sys/compat/freebsd32/freebsd32_sysent.c
user/imp/tbemd/sys/compat/freebsd32/freebsd32_util.h
user/imp/tbemd/sys/compat/freebsd32/syscalls.master
user/imp/tbemd/sys/compat/linprocfs/linprocfs.c
user/imp/tbemd/sys/compat/linux/linux_signal.c
user/imp/tbemd/sys/compat/ndis/subr_usbd.c
user/imp/tbemd/sys/compat/svr4/svr4_filio.c
user/imp/tbemd/sys/compat/svr4/svr4_proto.h
user/imp/tbemd/sys/compat/svr4/svr4_syscall.h
user/imp/tbemd/sys/compat/svr4/svr4_syscallnames.c
user/imp/tbemd/sys/compat/svr4/svr4_sysent.c
user/imp/tbemd/sys/compat/x86bios/x86bios.c
user/imp/tbemd/sys/compat/x86bios/x86bios.h
user/imp/tbemd/sys/conf/Makefile.arm
user/imp/tbemd/sys/conf/Makefile.powerpc
user/imp/tbemd/sys/conf/NOTES
user/imp/tbemd/sys/conf/files
user/imp/tbemd/sys/conf/files.amd64
user/imp/tbemd/sys/conf/files.arm
user/imp/tbemd/sys/conf/files.i386
user/imp/tbemd/sys/conf/files.mips
user/imp/tbemd/sys/conf/files.pc98
user/imp/tbemd/sys/conf/files.powerpc
user/imp/tbemd/sys/conf/files.sparc64
user/imp/tbemd/sys/conf/files.sun4v
user/imp/tbemd/sys/conf/kern.mk
user/imp/tbemd/sys/conf/kern.pre.mk
user/imp/tbemd/sys/conf/kmod.mk
user/imp/tbemd/sys/conf/ldscript.mips.octeon1.32
user/imp/tbemd/sys/conf/makeLINT.mk
user/imp/tbemd/sys/conf/options
user/imp/tbemd/sys/conf/options.amd64
user/imp/tbemd/sys/conf/options.arm
user/imp/tbemd/sys/conf/options.mips
user/imp/tbemd/sys/conf/options.powerpc
Directory Properties:
user/imp/tbemd/sys/amd64/include/xen/ (props changed)
user/imp/tbemd/sys/cddl/contrib/opensolaris/ (props changed)
Modified: user/imp/tbemd/sys/amd64/acpica/acpi_switch.S
==============================================================================
--- user/imp/tbemd/sys/amd64/acpica/acpi_switch.S Sun Aug 22 21:47:34 2010 (r211655)
+++ user/imp/tbemd/sys/amd64/acpica/acpi_switch.S Sun Aug 22 21:52:38 2010 (r211656)
@@ -1,7 +1,7 @@
/*-
* Copyright (c) 2001 Takanori Watanabe <takawata at jp.freebsd.org>
* Copyright (c) 2001 Mitsuru IWASAKI <iwasaki at jp.freebsd.org>
- * Copyright (c) 2008-2009 Jung-uk Kim <jkim at FreeBSD.org>
+ * Copyright (c) 2008-2010 Jung-uk Kim <jkim at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -34,14 +34,11 @@
#include "acpi_wakedata.h"
#include "assym.s"
-#define WAKEUP_CTX(member) wakeup_ ## member - wakeup_ctx(%rdi)
-#define WAKEUP_PCB(member) PCB_ ## member(%r11)
-#define WAKEUP_XPCB(member) XPCB_ ## member(%r11)
+#define WAKEUP_CTX(member) wakeup_ ## member - wakeup_ctx(%rsi)
ENTRY(acpi_restorecpu)
/* Switch to KPML4phys. */
- movq %rsi, %rax
- movq %rax, %cr3
+ movq %rdi, %cr3
/* Restore GDT. */
lgdt WAKEUP_CTX(gdt)
@@ -49,7 +46,7 @@ ENTRY(acpi_restorecpu)
1:
/* Fetch PCB. */
- movq WAKEUP_CTX(xpcb), %r11
+ movq WAKEUP_CTX(pcb), %rdi
/* Force kernel segment registers. */
movl $KDSEL, %eax
@@ -62,16 +59,16 @@ ENTRY(acpi_restorecpu)
movw %ax, %gs
movl $MSR_FSBASE, %ecx
- movl WAKEUP_PCB(FSBASE), %eax
- movl 4 + WAKEUP_PCB(FSBASE), %edx
+ movl PCB_FSBASE(%rdi), %eax
+ movl 4 + PCB_FSBASE(%rdi), %edx
wrmsr
movl $MSR_GSBASE, %ecx
- movl WAKEUP_PCB(GSBASE), %eax
- movl 4 + WAKEUP_PCB(GSBASE), %edx
+ movl PCB_GSBASE(%rdi), %eax
+ movl 4 + PCB_GSBASE(%rdi), %edx
wrmsr
movl $MSR_KGSBASE, %ecx
- movl WAKEUP_XPCB(KGSBASE), %eax
- movl 4 + WAKEUP_XPCB(KGSBASE), %edx
+ movl PCB_KGSBASE(%rdi), %eax
+ movl 4 + PCB_KGSBASE(%rdi), %edx
wrmsr
/* Restore EFER. */
@@ -102,17 +99,21 @@ ENTRY(acpi_restorecpu)
movl WAKEUP_CTX(sfmask), %eax
wrmsr
- /* Restore CR0, CR2 and CR4. */
- movq WAKEUP_XPCB(CR0), %rax
+ /* Restore CR0 except for FPU mode. */
+ movq PCB_CR0(%rdi), %rax
+ movq %rax, %rcx
+ andq $~(CR0_EM | CR0_TS), %rax
movq %rax, %cr0
- movq WAKEUP_XPCB(CR2), %rax
+
+ /* Restore CR2 and CR4. */
+ movq PCB_CR2(%rdi), %rax
movq %rax, %cr2
- movq WAKEUP_XPCB(CR4), %rax
+ movq PCB_CR4(%rdi), %rax
movq %rax, %cr4
/* Restore descriptor tables. */
- lidt WAKEUP_XPCB(IDT)
- lldt WAKEUP_XPCB(LDT)
+ lidt PCB_IDT(%rdi)
+ lldt PCB_LDT(%rdi)
#define SDT_SYSTSS 9
#define SDT_SYSBSY 11
@@ -120,37 +121,44 @@ ENTRY(acpi_restorecpu)
/* Clear "task busy" bit and reload TR. */
movq PCPU(TSS), %rax
andb $(~SDT_SYSBSY | SDT_SYSTSS), 5(%rax)
- movw WAKEUP_XPCB(TR), %ax
+ movw PCB_TR(%rdi), %ax
ltr %ax
#undef SDT_SYSTSS
#undef SDT_SYSBSY
/* Restore other callee saved registers. */
- movq WAKEUP_PCB(R15), %r15
- movq WAKEUP_PCB(R14), %r14
- movq WAKEUP_PCB(R13), %r13
- movq WAKEUP_PCB(R12), %r12
- movq WAKEUP_PCB(RBP), %rbp
- movq WAKEUP_PCB(RSP), %rsp
- movq WAKEUP_PCB(RBX), %rbx
+ movq PCB_R15(%rdi), %r15
+ movq PCB_R14(%rdi), %r14
+ movq PCB_R13(%rdi), %r13
+ movq PCB_R12(%rdi), %r12
+ movq PCB_RBP(%rdi), %rbp
+ movq PCB_RSP(%rdi), %rsp
+ movq PCB_RBX(%rdi), %rbx
/* Restore debug registers. */
- movq WAKEUP_PCB(DR0), %rax
+ movq PCB_DR0(%rdi), %rax
movq %rax, %dr0
- movq WAKEUP_PCB(DR1), %rax
+ movq PCB_DR1(%rdi), %rax
movq %rax, %dr1
- movq WAKEUP_PCB(DR2), %rax
+ movq PCB_DR2(%rdi), %rax
movq %rax, %dr2
- movq WAKEUP_PCB(DR3), %rax
+ movq PCB_DR3(%rdi), %rax
movq %rax, %dr3
- movq WAKEUP_PCB(DR6), %rax
+ movq PCB_DR6(%rdi), %rax
movq %rax, %dr6
- movq WAKEUP_PCB(DR7), %rax
+ movq PCB_DR7(%rdi), %rax
movq %rax, %dr7
+ /* Restore FPU state. */
+ fninit
+ fxrstor PCB_USERFPU(%rdi)
+
+ /* Reload CR0. */
+ movq %rcx, %cr0
+
/* Restore return address. */
- movq WAKEUP_PCB(RIP), %rax
+ movq PCB_RIP(%rdi), %rax
movq %rax, (%rsp)
/* Indicate the CPU is resumed. */
@@ -159,19 +167,3 @@ ENTRY(acpi_restorecpu)
ret
END(acpi_restorecpu)
-
-ENTRY(acpi_savecpu)
- /* Fetch XPCB and save CPU context. */
- movq %rdi, %r10
- call savectx2
- movq %r10, %r11
-
- /* Patch caller's return address and stack pointer. */
- movq (%rsp), %rax
- movq %rax, WAKEUP_PCB(RIP)
- movq %rsp, %rax
- movq %rax, WAKEUP_PCB(RSP)
-
- movl $1, %eax
- ret
-END(acpi_savecpu)
Modified: user/imp/tbemd/sys/amd64/acpica/acpi_wakecode.S
==============================================================================
--- user/imp/tbemd/sys/amd64/acpica/acpi_wakecode.S Sun Aug 22 21:47:34 2010 (r211655)
+++ user/imp/tbemd/sys/amd64/acpica/acpi_wakecode.S Sun Aug 22 21:52:38 2010 (r211656)
@@ -2,7 +2,7 @@
* Copyright (c) 2001 Takanori Watanabe <takawata at jp.freebsd.org>
* Copyright (c) 2001 Mitsuru IWASAKI <iwasaki at jp.freebsd.org>
* Copyright (c) 2003 Peter Wemm
- * Copyright (c) 2008-2009 Jung-uk Kim <jkim at FreeBSD.org>
+ * Copyright (c) 2008-2010 Jung-uk Kim <jkim at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -29,8 +29,6 @@
* $FreeBSD$
*/
-#define LOCORE
-
#include <machine/asmacros.h>
#include <machine/specialreg.h>
@@ -212,8 +210,8 @@ wakeup_64:
mov %ax, %ds
/* Restore arguments and return. */
- movq wakeup_ctx - wakeup_start(%rbx), %rdi
- movq wakeup_kpml4 - wakeup_start(%rbx), %rsi
+ movq wakeup_kpml4 - wakeup_start(%rbx), %rdi
+ movq wakeup_ctx - wakeup_start(%rbx), %rsi
movq wakeup_retaddr - wakeup_start(%rbx), %rax
jmp *%rax
@@ -267,7 +265,7 @@ wakeup_kpml4:
wakeup_ctx:
.quad 0
-wakeup_xpcb:
+wakeup_pcb:
.quad 0
wakeup_gdt:
.word 0
Modified: user/imp/tbemd/sys/amd64/acpica/acpi_wakeup.c
==============================================================================
--- user/imp/tbemd/sys/amd64/acpica/acpi_wakeup.c Sun Aug 22 21:47:34 2010 (r211655)
+++ user/imp/tbemd/sys/amd64/acpica/acpi_wakeup.c Sun Aug 22 21:52:38 2010 (r211656)
@@ -2,7 +2,7 @@
* Copyright (c) 2001 Takanori Watanabe <takawata at jp.freebsd.org>
* Copyright (c) 2001 Mitsuru IWASAKI <iwasaki at jp.freebsd.org>
* Copyright (c) 2003 Peter Wemm
- * Copyright (c) 2008-2009 Jung-uk Kim <jkim at FreeBSD.org>
+ * Copyright (c) 2008-2010 Jung-uk Kim <jkim at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$");
#include <vm/pmap.h>
#include <machine/intr_machdep.h>
+#include <machine/mca.h>
#include <machine/pcb.h>
#include <machine/pmap.h>
#include <machine/specialreg.h>
@@ -65,13 +66,12 @@ extern int acpi_resume_beep;
extern int acpi_reset_video;
#ifdef SMP
-extern struct xpcb **stopxpcbs;
+extern struct pcb **susppcbs;
#else
-static struct xpcb **stopxpcbs;
+static struct pcb **susppcbs;
#endif
-int acpi_restorecpu(struct xpcb *, vm_offset_t);
-int acpi_savecpu(struct xpcb *);
+int acpi_restorecpu(vm_offset_t, struct pcb *);
static void *acpi_alloc_wakeup_handler(void);
static void acpi_stop_beep(void *);
@@ -104,10 +104,10 @@ acpi_wakeup_ap(struct acpi_softc *sc, in
int apic_id = cpu_apic_ids[cpu];
int ms;
- WAKECODE_FIXUP(wakeup_xpcb, struct xpcb *, stopxpcbs[cpu]);
- WAKECODE_FIXUP(wakeup_gdt, uint16_t, stopxpcbs[cpu]->xpcb_gdt.rd_limit);
+ WAKECODE_FIXUP(wakeup_pcb, struct pcb *, susppcbs[cpu]);
+ WAKECODE_FIXUP(wakeup_gdt, uint16_t, susppcbs[cpu]->pcb_gdt.rd_limit);
WAKECODE_FIXUP(wakeup_gdt + 2, uint64_t,
- stopxpcbs[cpu]->xpcb_gdt.rd_base);
+ susppcbs[cpu]->pcb_gdt.rd_base);
WAKECODE_FIXUP(wakeup_cpu, int, cpu);
/* do an INIT IPI: assert RESET */
@@ -176,7 +176,6 @@ static void
acpi_wakeup_cpus(struct acpi_softc *sc, cpumask_t wakeup_cpus)
{
uint32_t mpbioswarmvec;
- cpumask_t map;
int cpu;
u_char mpbiosreason;
@@ -193,8 +192,7 @@ acpi_wakeup_cpus(struct acpi_softc *sc,
/* Wake up each AP. */
for (cpu = 1; cpu < mp_ncpus; cpu++) {
- map = 1ul << cpu;
- if ((wakeup_cpus & map) != map)
+ if ((wakeup_cpus & (1 << cpu)) == 0)
continue;
if (acpi_wakeup_ap(sc, cpu) == 0) {
/* restore the warmstart vector */
@@ -215,7 +213,6 @@ acpi_wakeup_cpus(struct acpi_softc *sc,
int
acpi_sleep_machdep(struct acpi_softc *sc, int state)
{
- struct savefpu *stopfpu;
#ifdef SMP
cpumask_t wakeup_cpus;
#endif
@@ -245,10 +242,7 @@ acpi_sleep_machdep(struct acpi_softc *sc
cr3 = rcr3();
load_cr3(KPML4phys);
- stopfpu = stopxpcbs[0]->xpcb_pcb.pcb_save;
- if (acpi_savecpu(stopxpcbs[0])) {
- fpugetregs(curthread, stopfpu);
-
+ if (savectx(susppcbs[0])) {
#ifdef SMP
if (wakeup_cpus != 0 && suspend_cpus(wakeup_cpus) == 0) {
device_printf(sc->acpi_dev,
@@ -261,11 +255,11 @@ acpi_sleep_machdep(struct acpi_softc *sc
WAKECODE_FIXUP(resume_beep, uint8_t, (acpi_resume_beep != 0));
WAKECODE_FIXUP(reset_video, uint8_t, (acpi_reset_video != 0));
- WAKECODE_FIXUP(wakeup_xpcb, struct xpcb *, stopxpcbs[0]);
+ WAKECODE_FIXUP(wakeup_pcb, struct pcb *, susppcbs[0]);
WAKECODE_FIXUP(wakeup_gdt, uint16_t,
- stopxpcbs[0]->xpcb_gdt.rd_limit);
+ susppcbs[0]->pcb_gdt.rd_limit);
WAKECODE_FIXUP(wakeup_gdt + 2, uint64_t,
- stopxpcbs[0]->xpcb_gdt.rd_base);
+ susppcbs[0]->pcb_gdt.rd_base);
WAKECODE_FIXUP(wakeup_cpu, int, 0);
/* Call ACPICA to enter the desired sleep state */
@@ -284,7 +278,8 @@ acpi_sleep_machdep(struct acpi_softc *sc
for (;;)
ia32_pause();
} else {
- fpusetregs(curthread, stopfpu);
+ PCPU_SET(switchtime, 0);
+ PCPU_SET(switchticks, ticks);
#ifdef SMP
if (wakeup_cpus != 0)
acpi_wakeup_cpus(sc, wakeup_cpus);
@@ -300,6 +295,7 @@ out:
#endif
load_cr3(cr3);
+ mca_resume();
intr_resume();
intr_restore(rf);
@@ -335,9 +331,9 @@ acpi_alloc_wakeup_handler(void)
printf("%s: can't alloc wake memory\n", __func__);
return (NULL);
}
- stopxpcbs = malloc(mp_ncpus * sizeof(*stopxpcbs), M_DEVBUF, M_WAITOK);
+ susppcbs = malloc(mp_ncpus * sizeof(*susppcbs), M_DEVBUF, M_WAITOK);
for (i = 0; i < mp_ncpus; i++)
- stopxpcbs[i] = malloc(sizeof(**stopxpcbs), M_DEVBUF, M_WAITOK);
+ susppcbs[i] = malloc(sizeof(**susppcbs), M_DEVBUF, M_WAITOK);
return (wakeaddr);
}
Modified: user/imp/tbemd/sys/amd64/acpica/madt.c
==============================================================================
--- user/imp/tbemd/sys/amd64/acpica/madt.c Sun Aug 22 21:47:34 2010 (r211655)
+++ user/imp/tbemd/sys/amd64/acpica/madt.c Sun Aug 22 21:52:38 2010 (r211656)
@@ -557,9 +557,7 @@ madt_set_ids(void *dummy)
if (madt == NULL)
return;
- for (i = 0; i < MAXCPU; i++) {
- if (CPU_ABSENT(i))
- continue;
+ CPU_FOREACH(i) {
pc = pcpu_find(i);
KASSERT(pc != NULL, ("no pcpu data for CPU %u", i));
la = &lapics[pc->pc_apic_id];
Modified: user/imp/tbemd/sys/amd64/amd64/apic_vector.S
==============================================================================
--- user/imp/tbemd/sys/amd64/amd64/apic_vector.S Sun Aug 22 21:47:34 2010 (r211655)
+++ user/imp/tbemd/sys/amd64/amd64/apic_vector.S Sun Aug 22 21:52:38 2010 (r211656)
@@ -36,6 +36,8 @@
* as well as IPI handlers.
*/
+#include "opt_smp.h"
+
#include <machine/asmacros.h>
#include <machine/apicreg.h>
@@ -135,6 +137,19 @@ IDTVEC(errorint)
.text
SUPERALIGN_TEXT
IDTVEC(invltlb)
+#if defined(COUNT_XINVLTLB_HITS) || defined(COUNT_IPIS)
+ PUSH_FRAME
+ movl PCPU(CPUID), %eax
+#ifdef COUNT_XINVLTLB_HITS
+ incl xhits_gbl(,%rax,4)
+#endif
+#ifdef COUNT_IPIS
+ movq ipi_invltlb_counts(,%rax,8),%rax
+ incq (%rax)
+#endif
+ POP_FRAME
+#endif
+
pushq %rax
movq %cr3, %rax /* invalidate the TLB */
@@ -155,6 +170,19 @@ IDTVEC(invltlb)
.text
SUPERALIGN_TEXT
IDTVEC(invlpg)
+#if defined(COUNT_XINVLTLB_HITS) || defined(COUNT_IPIS)
+ PUSH_FRAME
+ movl PCPU(CPUID), %eax
+#ifdef COUNT_XINVLTLB_HITS
+ incl xhits_pg(,%rax,4)
+#endif
+#ifdef COUNT_IPIS
+ movq ipi_invlpg_counts(,%rax,8),%rax
+ incq (%rax)
+#endif
+ POP_FRAME
+#endif
+
pushq %rax
movq smp_tlb_addr1, %rax
@@ -175,6 +203,19 @@ IDTVEC(invlpg)
.text
SUPERALIGN_TEXT
IDTVEC(invlrng)
+#if defined(COUNT_XINVLTLB_HITS) || defined(COUNT_IPIS)
+ PUSH_FRAME
+ movl PCPU(CPUID), %eax
+#ifdef COUNT_XINVLTLB_HITS
+ incl xhits_rng(,%rax,4)
+#endif
+#ifdef COUNT_IPIS
+ movq ipi_invlrng_counts(,%rax,8),%rax
+ incq (%rax)
+#endif
+ POP_FRAME
+#endif
+
pushq %rax
pushq %rdx
@@ -201,6 +242,14 @@ IDTVEC(invlrng)
.text
SUPERALIGN_TEXT
IDTVEC(invlcache)
+#ifdef COUNT_IPIS
+ PUSH_FRAME
+ movl PCPU(CPUID), %eax
+ movq ipi_invlcache_counts(,%rax,8),%rax
+ incq (%rax)
+ POP_FRAME
+#endif
+
pushq %rax
wbinvd
@@ -270,6 +319,11 @@ IDTVEC(cpususpend)
SUPERALIGN_TEXT
IDTVEC(rendezvous)
PUSH_FRAME
+#ifdef COUNT_IPIS
+ movl PCPU(CPUID), %eax
+ movq ipi_rendezvous_counts(,%rax,8), %rax
+ incq (%rax)
+#endif
call smp_rendezvous_action
movq lapic, %rax
movl $0, LA_EOI(%rax) /* End Of Interrupt to APIC */
Modified: user/imp/tbemd/sys/amd64/amd64/cpu_switch.S
==============================================================================
--- user/imp/tbemd/sys/amd64/amd64/cpu_switch.S Sun Aug 22 21:47:34 2010 (r211655)
+++ user/imp/tbemd/sys/amd64/amd64/cpu_switch.S Sun Aug 22 21:52:38 2010 (r211656)
@@ -69,16 +69,13 @@
* %rsi = newtd
*/
ENTRY(cpu_throw)
+ movl PCPU(CPUID),%eax
testq %rdi,%rdi
- jnz 1f
- movq PCPU(IDLETHREAD),%rdi
-1:
- movq TD_PCB(%rdi),%r8 /* Old pcb */
- movl PCPU(CPUID), %eax
+ jz 1f
/* release bit from old pm_active */
- movq TD_PROC(%rdi), %rdx /* oldtd->td_proc */
- movq P_VMSPACE(%rdx), %rdx /* proc->p_vmspace */
- LK btrl %eax, VM_PMAP+PM_ACTIVE(%rdx) /* clear old */
+ movq PCPU(CURPMAP),%rdx
+ LK btrl %eax,PM_ACTIVE(%rdx) /* clear old */
+1:
movq TD_PCB(%rsi),%r8 /* newtd->td_proc */
movq PCB_CR3(%r8),%rdx
movq %rdx,%cr3 /* new address space */
@@ -140,15 +137,16 @@ swinact:
movq %rcx,%cr3 /* new address space */
movl PCPU(CPUID), %eax
/* Release bit from old pmap->pm_active */
- movq TD_PROC(%rdi), %rcx /* oldproc */
- movq P_VMSPACE(%rcx), %rcx
- LK btrl %eax, VM_PMAP+PM_ACTIVE(%rcx) /* clear old */
+ movq PCPU(CURPMAP),%rcx
+ LK btrl %eax,PM_ACTIVE(%rcx) /* clear old */
SETLK %rdx, TD_LOCK(%rdi) /* Release the old thread */
swact:
/* Set bit in new pmap->pm_active */
movq TD_PROC(%rsi),%rdx /* newproc */
movq P_VMSPACE(%rdx), %rdx
- LK btsl %eax, VM_PMAP+PM_ACTIVE(%rdx) /* set new */
+ addq $VM_PMAP,%rdx
+ LK btsl %eax,PM_ACTIVE(%rdx) /* set new */
+ movq %rdx,PCPU(CURPMAP)
sw1:
#if defined(SCHED_ULE) && defined(SMP)
@@ -245,13 +243,13 @@ store_dr:
movq %dr2,%r13
movq %dr3,%r12
movq %dr6,%r11
- andq $0x0000fc00, %rax /* disable all watchpoints */
movq %r15,PCB_DR0(%r8)
movq %r14,PCB_DR1(%r8)
movq %r13,PCB_DR2(%r8)
movq %r12,PCB_DR3(%r8)
movq %r11,PCB_DR6(%r8)
movq %rax,PCB_DR7(%r8)
+ andq $0x0000fc00, %rax /* disable all watchpoints */
movq %rax,%dr7
jmp done_store_dr
@@ -304,121 +302,65 @@ END(cpu_switch)
* Update pcb, saving current processor state.
*/
ENTRY(savectx)
- /* Fetch PCB. */
- movq %rdi,%rcx
-
/* Save caller's return address. */
movq (%rsp),%rax
- movq %rax,PCB_RIP(%rcx)
-
- movq %cr3,%rax
- movq %rax,PCB_CR3(%rcx)
-
- movq %rbx,PCB_RBX(%rcx)
- movq %rsp,PCB_RSP(%rcx)
- movq %rbp,PCB_RBP(%rcx)
- movq %r12,PCB_R12(%rcx)
- movq %r13,PCB_R13(%rcx)
- movq %r14,PCB_R14(%rcx)
- movq %r15,PCB_R15(%rcx)
-
- /*
- * If fpcurthread == NULL, then the fpu h/w state is irrelevant and the
- * state had better already be in the pcb. This is true for forks
- * but not for dumps (the old book-keeping with FP flags in the pcb
- * always lost for dumps because the dump pcb has 0 flags).
- *
- * If fpcurthread != NULL, then we have to save the fpu h/w state to
- * fpcurthread's pcb and copy it to the requested pcb, or save to the
- * requested pcb and reload. Copying is easier because we would
- * have to handle h/w bugs for reloading. We used to lose the
- * parent's fpu state for forks by forgetting to reload.
- */
- pushfq
- cli
- movq PCPU(FPCURTHREAD),%rax
- testq %rax,%rax
- je 1f
+ movq %rax,PCB_RIP(%rdi)
- movq TD_PCB(%rax),%rdi
- movq PCB_SAVEFPU(%rdi),%rdi
- clts
- fxsave (%rdi)
- smsw %ax
- orb $CR0_TS,%al
- lmsw %ax
+ movq %rbx,PCB_RBX(%rdi)
+ movq %rsp,PCB_RSP(%rdi)
+ movq %rbp,PCB_RBP(%rdi)
+ movq %r12,PCB_R12(%rdi)
+ movq %r13,PCB_R13(%rdi)
+ movq %r14,PCB_R14(%rdi)
+ movq %r15,PCB_R15(%rdi)
- movq $PCB_SAVEFPU_SIZE,%rdx /* arg 3 */
- movq PCB_SAVEFPU(%rcx),%rsi /* arg 2 */
- /* arg 1 (%rdi) already loaded */
- call bcopy
-1:
- popfq
-
- ret
-END(savectx)
-
-/*
- * savectx2(xpcb)
- * Update xpcb, saving current processor state.
- */
-ENTRY(savectx2)
- /* Fetch XPCB. */
- movq %rdi,%r8
-
- /* Save caller's return address. */
- movq (%rsp),%rax
- movq %rax,PCB_RIP(%r8)
-
- movq %rbx,PCB_RBX(%r8)
- movq %rsp,PCB_RSP(%r8)
- movq %rbp,PCB_RBP(%r8)
- movq %r12,PCB_R12(%r8)
- movq %r13,PCB_R13(%r8)
- movq %r14,PCB_R14(%r8)
- movq %r15,PCB_R15(%r8)
-
- movq %cr0,%rax
- movq %rax,XPCB_CR0(%r8)
+ movq %cr0,%rsi
+ movq %rsi,PCB_CR0(%rdi)
movq %cr2,%rax
- movq %rax,XPCB_CR2(%r8)
+ movq %rax,PCB_CR2(%rdi)
+ movq %cr3,%rax
+ movq %rax,PCB_CR3(%rdi)
movq %cr4,%rax
- movq %rax,XPCB_CR4(%r8)
+ movq %rax,PCB_CR4(%rdi)
movq %dr0,%rax
- movq %rax,PCB_DR0(%r8)
+ movq %rax,PCB_DR0(%rdi)
movq %dr1,%rax
- movq %rax,PCB_DR1(%r8)
+ movq %rax,PCB_DR1(%rdi)
movq %dr2,%rax
- movq %rax,PCB_DR2(%r8)
+ movq %rax,PCB_DR2(%rdi)
movq %dr3,%rax
- movq %rax,PCB_DR3(%r8)
+ movq %rax,PCB_DR3(%rdi)
movq %dr6,%rax
- movq %rax,PCB_DR6(%r8)
+ movq %rax,PCB_DR6(%rdi)
movq %dr7,%rax
- movq %rax,PCB_DR7(%r8)
-
- sgdt XPCB_GDT(%r8)
- sidt XPCB_IDT(%r8)
- sldt XPCB_LDT(%r8)
- str XPCB_TR(%r8)
+ movq %rax,PCB_DR7(%rdi)
movl $MSR_FSBASE,%ecx
rdmsr
shlq $32,%rdx
leaq (%rax,%rdx),%rax
- movq %rax,PCB_FSBASE(%r8)
+ movq %rax,PCB_FSBASE(%rdi)
movl $MSR_GSBASE,%ecx
rdmsr
shlq $32,%rdx
leaq (%rax,%rdx),%rax
- movq %rax,PCB_GSBASE(%r8)
+ movq %rax,PCB_GSBASE(%rdi)
movl $MSR_KGSBASE,%ecx
rdmsr
shlq $32,%rdx
leaq (%rax,%rdx),%rax
- movq %rax,XPCB_KGSBASE(%r8)
+ movq %rax,PCB_KGSBASE(%rdi)
+
+ sgdt PCB_GDT(%rdi)
+ sidt PCB_IDT(%rdi)
+ sldt PCB_LDT(%rdi)
+ str PCB_TR(%rdi)
- movl $1, %eax
+ clts
+ fxsave PCB_USERFPU(%rdi)
+ movq %rsi,%cr0 /* The previous %cr0 is saved in %rsi. */
+
+ movl $1,%eax
ret
-END(savectx2)
+END(savectx)
Modified: user/imp/tbemd/sys/amd64/amd64/exception.S
==============================================================================
--- user/imp/tbemd/sys/amd64/amd64/exception.S Sun Aug 22 21:47:34 2010 (r211655)
+++ user/imp/tbemd/sys/amd64/amd64/exception.S Sun Aug 22 21:52:38 2010 (r211656)
@@ -191,6 +191,7 @@ alltraps_pushregs_no_rdi:
movq %r14,TF_R14(%rsp)
movq %r15,TF_R15(%rsp)
movl $TF_HASSEGS,TF_FLAGS(%rsp)
+ cld
FAKE_MCOUNT(TF_RIP(%rsp))
#ifdef KDTRACE_HOOKS
/*
@@ -270,6 +271,7 @@ IDTVEC(dblfault)
movw %es,TF_ES(%rsp)
movw %ds,TF_DS(%rsp)
movl $TF_HASSEGS,TF_FLAGS(%rsp)
+ cld
testb $SEL_RPL_MASK,TF_CS(%rsp) /* Did we come from kernel? */
jz 1f /* already running with kernel GS.base */
swapgs
@@ -369,6 +371,7 @@ IDTVEC(fast_syscall)
movq %r14,TF_R14(%rsp) /* C preserved */
movq %r15,TF_R15(%rsp) /* C preserved */
movl $TF_HASSEGS,TF_FLAGS(%rsp)
+ cld
FAKE_MCOUNT(TF_RIP(%rsp))
movq %rsp,%rdi
call syscall
@@ -434,6 +437,7 @@ IDTVEC(nmi)
movw %es,TF_ES(%rsp)
movw %ds,TF_DS(%rsp)
movl $TF_HASSEGS,TF_FLAGS(%rsp)
+ cld
xorl %ebx,%ebx
testb $SEL_RPL_MASK,TF_CS(%rsp)
jnz nmi_fromuserspace
Modified: user/imp/tbemd/sys/amd64/amd64/fpu.c
==============================================================================
--- user/imp/tbemd/sys/amd64/amd64/fpu.c Sun Aug 22 21:47:34 2010 (r211655)
+++ user/imp/tbemd/sys/amd64/amd64/fpu.c Sun Aug 22 21:52:38 2010 (r211656)
@@ -65,27 +65,29 @@ __FBSDID("$FreeBSD$");
#if defined(__GNUCLIKE_ASM) && !defined(lint)
-#define fldcw(addr) __asm("fldcw %0" : : "m" (*(addr)))
-#define fnclex() __asm("fnclex")
-#define fninit() __asm("fninit")
+#define fldcw(cw) __asm __volatile("fldcw %0" : : "m" (cw))
+#define fnclex() __asm __volatile("fnclex")
+#define fninit() __asm __volatile("fninit")
#define fnstcw(addr) __asm __volatile("fnstcw %0" : "=m" (*(addr)))
-#define fnstsw(addr) __asm __volatile("fnstsw %0" : "=m" (*(addr)))
-#define fxrstor(addr) __asm("fxrstor %0" : : "m" (*(addr)))
+#define fnstsw(addr) __asm __volatile("fnstsw %0" : "=am" (*(addr)))
+#define fxrstor(addr) __asm __volatile("fxrstor %0" : : "m" (*(addr)))
#define fxsave(addr) __asm __volatile("fxsave %0" : "=m" (*(addr)))
-#define ldmxcsr(r) __asm __volatile("ldmxcsr %0" : : "m" (r))
-#define start_emulating() __asm("smsw %%ax; orb %0,%%al; lmsw %%ax" \
- : : "n" (CR0_TS) : "ax")
-#define stop_emulating() __asm("clts")
+#define ldmxcsr(csr) __asm __volatile("ldmxcsr %0" : : "m" (csr))
+#define start_emulating() __asm __volatile( \
+ "smsw %%ax; orb %0,%%al; lmsw %%ax" \
+ : : "n" (CR0_TS) : "ax")
+#define stop_emulating() __asm __volatile("clts")
#else /* !(__GNUCLIKE_ASM && !lint) */
-void fldcw(caddr_t addr);
+void fldcw(u_short cw);
void fnclex(void);
void fninit(void);
void fnstcw(caddr_t addr);
void fnstsw(caddr_t addr);
void fxsave(caddr_t addr);
void fxrstor(caddr_t addr);
+void ldmxcsr(u_int csr);
void start_emulating(void);
void stop_emulating(void);
@@ -115,11 +117,14 @@ fpuinit(void)
u_int mxcsr;
u_short control;
+ /*
+ * It is too early for critical_enter() to work on AP.
+ */
savecrit = intr_disable();
stop_emulating();
fninit();
control = __INITIAL_FPUCW__;
- fldcw(&control);
+ fldcw(control);
mxcsr = __INITIAL_MXCSR__;
ldmxcsr(mxcsr);
if (PCPU_GET(cpuid) == 0) {
@@ -141,16 +146,15 @@ fpuinit(void)
void
fpuexit(struct thread *td)
{
- register_t savecrit;
- savecrit = intr_disable();
+ critical_enter();
if (curthread == PCPU_GET(fpcurthread)) {
stop_emulating();
fxsave(PCPU_GET(curpcb)->pcb_save);
start_emulating();
PCPU_SET(fpcurthread, 0);
}
- intr_restore(savecrit);
+ critical_exit();
}
int
@@ -351,10 +355,9 @@ static char fpetable[128] = {
int
fputrap()
{
- register_t savecrit;
u_short control, status;
- savecrit = intr_disable();
+ critical_enter();
/*
* Interrupt handling (for another interrupt) may have pushed the
@@ -371,7 +374,7 @@ fputrap()
if (PCPU_GET(fpcurthread) == curthread)
fnclex();
- intr_restore(savecrit);
+ critical_exit();
return (fpetable[status & ((~control & 0x3f) | 0x40)]);
}
@@ -389,12 +392,13 @@ void
fpudna(void)
{
struct pcb *pcb;
- register_t s;
+ critical_enter();
if (PCPU_GET(fpcurthread) == curthread) {
printf("fpudna: fpcurthread == curthread %d times\n",
++err_count);
stop_emulating();
+ critical_exit();
return;
}
if (PCPU_GET(fpcurthread) != NULL) {
@@ -404,7 +408,6 @@ fpudna(void)
curthread, curthread->td_proc->p_pid);
panic("fpudna");
}
- s = intr_disable();
stop_emulating();
/*
* Record new context early in case frstor causes a trap.
@@ -422,25 +425,23 @@ fpudna(void)
*/
fxrstor(&fpu_initialstate);
if (pcb->pcb_initial_fpucw != __INITIAL_FPUCW__)
- fldcw(&pcb->pcb_initial_fpucw);
+ fldcw(pcb->pcb_initial_fpucw);
pcb->pcb_flags |= PCB_FPUINITDONE;
if (PCB_USER_FPU(pcb))
pcb->pcb_flags |= PCB_USERFPUINITDONE;
} else
fxrstor(pcb->pcb_save);
- intr_restore(s);
+ critical_exit();
}
-/*
- * This should be called with interrupts disabled and only when the owning
- * FPU thread is non-null.
- */
void
fpudrop()
{
struct thread *td;
td = PCPU_GET(fpcurthread);
+ KASSERT(td == curthread, ("fpudrop: fpcurthread != curthread"));
+ CRITICAL_ASSERT(td);
PCPU_SET(fpcurthread, NULL);
td->td_pcb->pcb_flags &= ~PCB_FPUINITDONE;
start_emulating();
@@ -454,7 +455,6 @@ int
fpugetuserregs(struct thread *td, struct savefpu *addr)
{
struct pcb *pcb;
- register_t s;
pcb = td->td_pcb;
if ((pcb->pcb_flags & PCB_USERFPUINITDONE) == 0) {
@@ -462,13 +462,13 @@ fpugetuserregs(struct thread *td, struct
addr->sv_env.en_cw = pcb->pcb_initial_fpucw;
return (_MC_FPOWNED_NONE);
}
- s = intr_disable();
+ critical_enter();
if (td == PCPU_GET(fpcurthread) && PCB_USER_FPU(pcb)) {
fxsave(addr);
- intr_restore(s);
+ critical_exit();
return (_MC_FPOWNED_FPU);
} else {
- intr_restore(s);
+ critical_exit();
bcopy(&pcb->pcb_user_save, addr, sizeof(*addr));
return (_MC_FPOWNED_PCB);
}
@@ -478,7 +478,6 @@ int
fpugetregs(struct thread *td, struct savefpu *addr)
{
struct pcb *pcb;
- register_t s;
pcb = td->td_pcb;
if ((pcb->pcb_flags & PCB_FPUINITDONE) == 0) {
@@ -486,13 +485,13 @@ fpugetregs(struct thread *td, struct sav
addr->sv_env.en_cw = pcb->pcb_initial_fpucw;
return (_MC_FPOWNED_NONE);
}
- s = intr_disable();
+ critical_enter();
if (td == PCPU_GET(fpcurthread)) {
fxsave(addr);
- intr_restore(s);
+ critical_exit();
return (_MC_FPOWNED_FPU);
} else {
- intr_restore(s);
+ critical_exit();
bcopy(pcb->pcb_save, addr, sizeof(*addr));
return (_MC_FPOWNED_PCB);
}
@@ -505,16 +504,15 @@ void
fpusetuserregs(struct thread *td, struct savefpu *addr)
{
struct pcb *pcb;
- register_t s;
pcb = td->td_pcb;
- s = intr_disable();
+ critical_enter();
if (td == PCPU_GET(fpcurthread) && PCB_USER_FPU(pcb)) {
fxrstor(addr);
- intr_restore(s);
+ critical_exit();
pcb->pcb_flags |= PCB_FPUINITDONE | PCB_USERFPUINITDONE;
} else {
- intr_restore(s);
+ critical_exit();
bcopy(addr, &td->td_pcb->pcb_user_save, sizeof(*addr));
if (PCB_USER_FPU(pcb))
pcb->pcb_flags |= PCB_FPUINITDONE;
@@ -526,15 +524,14 @@ void
fpusetregs(struct thread *td, struct savefpu *addr)
{
struct pcb *pcb;
- register_t s;
pcb = td->td_pcb;
- s = intr_disable();
+ critical_enter();
if (td == PCPU_GET(fpcurthread)) {
fxrstor(addr);
- intr_restore(s);
+ critical_exit();
} else {
- intr_restore(s);
+ critical_exit();
bcopy(addr, td->td_pcb->pcb_save, sizeof(*addr));
}
if (PCB_USER_FPU(pcb))
@@ -652,13 +649,12 @@ int
fpu_kern_leave(struct thread *td, struct fpu_kern_ctx *ctx)
{
struct pcb *pcb;
- register_t savecrit;
pcb = td->td_pcb;
- savecrit = intr_disable();
+ critical_enter();
if (curthread == PCPU_GET(fpcurthread))
fpudrop();
- intr_restore(savecrit);
+ critical_exit();
pcb->pcb_save = ctx->prev;
if (pcb->pcb_save == &pcb->pcb_user_save) {
if ((pcb->pcb_flags & PCB_USERFPUINITDONE) != 0)
Modified: user/imp/tbemd/sys/amd64/amd64/genassym.c
==============================================================================
--- user/imp/tbemd/sys/amd64/amd64/genassym.c Sun Aug 22 21:47:34 2010 (r211655)
+++ user/imp/tbemd/sys/amd64/amd64/genassym.c Sun Aug 22 21:52:38 2010 (r211656)
@@ -123,7 +123,7 @@ ASSYM(KERNBASE, KERNBASE);
ASSYM(DMAP_MIN_ADDRESS, DMAP_MIN_ADDRESS);
ASSYM(DMAP_MAX_ADDRESS, DMAP_MAX_ADDRESS);
ASSYM(MCLBYTES, MCLBYTES);
-ASSYM(PCB_CR3, offsetof(struct pcb, pcb_cr3));
+
ASSYM(PCB_R15, offsetof(struct pcb, pcb_r15));
ASSYM(PCB_R14, offsetof(struct pcb, pcb_r14));
ASSYM(PCB_R13, offsetof(struct pcb, pcb_r13));
@@ -134,39 +134,35 @@ ASSYM(PCB_RBX, offsetof(struct pcb, pcb_
ASSYM(PCB_RIP, offsetof(struct pcb, pcb_rip));
ASSYM(PCB_FSBASE, offsetof(struct pcb, pcb_fsbase));
ASSYM(PCB_GSBASE, offsetof(struct pcb, pcb_gsbase));
+ASSYM(PCB_KGSBASE, offsetof(struct pcb, pcb_kgsbase));
+ASSYM(PCB_CR0, offsetof(struct pcb, pcb_cr0));
+ASSYM(PCB_CR2, offsetof(struct pcb, pcb_cr2));
+ASSYM(PCB_CR3, offsetof(struct pcb, pcb_cr3));
+ASSYM(PCB_CR4, offsetof(struct pcb, pcb_cr4));
ASSYM(PCB_DR0, offsetof(struct pcb, pcb_dr0));
ASSYM(PCB_DR1, offsetof(struct pcb, pcb_dr1));
ASSYM(PCB_DR2, offsetof(struct pcb, pcb_dr2));
ASSYM(PCB_DR3, offsetof(struct pcb, pcb_dr3));
ASSYM(PCB_DR6, offsetof(struct pcb, pcb_dr6));
ASSYM(PCB_DR7, offsetof(struct pcb, pcb_dr7));
+ASSYM(PCB_FLAGS, offsetof(struct pcb, pcb_flags));
+ASSYM(PCB_ONFAULT, offsetof(struct pcb, pcb_onfault));
+ASSYM(PCB_GS32SD, offsetof(struct pcb, pcb_gs32sd));
ASSYM(PCB_TSSP, offsetof(struct pcb, pcb_tssp));
+ASSYM(PCB_SAVEFPU, offsetof(struct pcb, pcb_save));
+ASSYM(PCB_SAVEFPU_SIZE, sizeof(struct savefpu));
ASSYM(PCB_FULL_IRET, offsetof(struct pcb, pcb_full_iret));
+ASSYM(PCB_GDT, offsetof(struct pcb, pcb_gdt));
+ASSYM(PCB_IDT, offsetof(struct pcb, pcb_idt));
+ASSYM(PCB_LDT, offsetof(struct pcb, pcb_ldt));
+ASSYM(PCB_TR, offsetof(struct pcb, pcb_tr));
+ASSYM(PCB_USERFPU, offsetof(struct pcb, pcb_user_save));
+ASSYM(PCB_SIZE, sizeof(struct pcb));
ASSYM(PCB_DBREGS, PCB_DBREGS);
ASSYM(PCB_32BIT, PCB_32BIT);
ASSYM(PCB_GS32BIT, PCB_GS32BIT);
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-user
mailing list