From owner-svn-src-projects@FreeBSD.ORG Wed Dec 9 22:27:14 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DDB6E1065670; Wed, 9 Dec 2009 22:27:13 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C7CC78FC08; Wed, 9 Dec 2009 22:27:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id nB9MRDd1041333; Wed, 9 Dec 2009 22:27:13 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id nB9MRDfL041300; Wed, 9 Dec 2009 22:27:13 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <200912092227.nB9MRDfL041300@svn.freebsd.org> From: Nathan Whitehorn Date: Wed, 9 Dec 2009 22:27:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r200320 - in projects/ppc64: . bin/date bin/sh contrib/bind9 contrib/bind9/bin/named contrib/bind9/lib/dns contrib/bind9/lib/dns/include/dns contrib/bind9/lib/isc/ia64/include/isc contr... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Dec 2009 22:27:14 -0000 Author: nwhitehorn Date: Wed Dec 9 22:27:12 2009 New Revision: 200320 URL: http://svn.freebsd.org/changeset/base/200320 Log: IFC Added: projects/ppc64/lib/csu/i386-elf/crt1_c.c - copied unchanged from r200319, head/lib/csu/i386-elf/crt1_c.c projects/ppc64/lib/csu/i386-elf/crt1_s.S - copied unchanged from r200319, head/lib/csu/i386-elf/crt1_s.S projects/ppc64/lib/libulog/ - copied from r200319, head/lib/libulog/ projects/ppc64/libexec/ulog-helper/ - copied from r200319, head/libexec/ulog-helper/ projects/ppc64/share/man/man4/amdsbwd.4 - copied unchanged from r200319, head/share/man/man4/amdsbwd.4 projects/ppc64/share/man/man4/man4.powerpc/adb.4 - copied unchanged from r200319, head/share/man/man4/man4.powerpc/adb.4 projects/ppc64/share/man/man4/man4.powerpc/akbd.4 - copied unchanged from r200319, head/share/man/man4/man4.powerpc/akbd.4 projects/ppc64/share/man/man4/man4.powerpc/ams.4 - copied unchanged from r200319, head/share/man/man4/man4.powerpc/ams.4 projects/ppc64/share/man/man4/man4.powerpc/cuda.4 - copied unchanged from r200319, head/share/man/man4/man4.powerpc/cuda.4 projects/ppc64/sys/compat/linux/linux_videodev.h - copied unchanged from r200319, head/sys/compat/linux/linux_videodev.h projects/ppc64/sys/compat/linux/linux_videodev_compat.h - copied unchanged from r200319, head/sys/compat/linux/linux_videodev_compat.h projects/ppc64/sys/dev/amdsbwd/ - copied from r200319, head/sys/dev/amdsbwd/ projects/ppc64/sys/modules/amdsbwd/ - copied from r200319, head/sys/modules/amdsbwd/ projects/ppc64/tools/regression/bin/sh/execution/redir1.0 - copied unchanged from r200319, head/tools/regression/bin/sh/execution/redir1.0 projects/ppc64/tools/regression/bin/sh/execution/redir2.0 - copied unchanged from r200319, head/tools/regression/bin/sh/execution/redir2.0 Deleted: projects/ppc64/etc/rc.d/ip6fw projects/ppc64/etc/rc.firewall6 projects/ppc64/lib/csu/i386-elf/crt1.c Modified: projects/ppc64/MAINTAINERS projects/ppc64/ObsoleteFiles.inc projects/ppc64/bin/date/Makefile projects/ppc64/bin/date/date.c projects/ppc64/bin/sh/eval.c projects/ppc64/bin/sh/redir.c projects/ppc64/contrib/bind9/CHANGES projects/ppc64/contrib/bind9/bin/named/query.c projects/ppc64/contrib/bind9/lib/dns/api projects/ppc64/contrib/bind9/lib/dns/include/dns/types.h projects/ppc64/contrib/bind9/lib/dns/masterdump.c projects/ppc64/contrib/bind9/lib/dns/rbtdb.c projects/ppc64/contrib/bind9/lib/dns/resolver.c projects/ppc64/contrib/bind9/lib/dns/validator.c projects/ppc64/contrib/bind9/lib/isc/ia64/include/isc/atomic.h projects/ppc64/contrib/bind9/version projects/ppc64/contrib/bsnmp/snmp_mibII/BEGEMOT-MIB2-MIB.txt projects/ppc64/contrib/bsnmp/snmp_mibII/mibII.c projects/ppc64/contrib/bsnmp/snmp_mibII/mibII.h projects/ppc64/contrib/bsnmp/snmp_mibII/mibII_begemot.c projects/ppc64/contrib/bsnmp/snmp_mibII/mibII_tree.def projects/ppc64/contrib/gcc/config/freebsd-spec.h projects/ppc64/contrib/groff/tmac/doc-syms projects/ppc64/contrib/netcat/FREEBSD-vendor projects/ppc64/contrib/ntp/ntpd/ntp_io.c projects/ppc64/crypto/openssl/ssl/s3_lib.c projects/ppc64/crypto/openssl/ssl/s3_pkt.c projects/ppc64/crypto/openssl/ssl/s3_srvr.c projects/ppc64/etc/Makefile projects/ppc64/etc/defaults/rc.conf projects/ppc64/etc/mtree/BSD.var.dist projects/ppc64/etc/rc.d/Makefile projects/ppc64/etc/rc.d/ipfw projects/ppc64/etc/rc.firewall projects/ppc64/lib/Makefile projects/ppc64/lib/bind/config.h projects/ppc64/lib/csu/amd64/Makefile projects/ppc64/lib/csu/arm/Makefile projects/ppc64/lib/csu/i386-elf/Makefile projects/ppc64/lib/csu/ia64/Makefile projects/ppc64/lib/csu/mips/Makefile projects/ppc64/lib/csu/powerpc/Makefile projects/ppc64/lib/csu/sparc64/Makefile projects/ppc64/lib/libc/gen/exec.c projects/ppc64/lib/libc/gen/fdevname.c projects/ppc64/lib/libc/gen/getlogin.c projects/ppc64/lib/libc/gen/getttyent.c projects/ppc64/lib/libc/gen/nlist.c projects/ppc64/lib/libc/gen/pause.c projects/ppc64/lib/libc/gen/pwcache.c projects/ppc64/lib/libc/gen/raise.c projects/ppc64/lib/libc/gen/sem_init.3 projects/ppc64/lib/libc/gen/sleep.c projects/ppc64/lib/libc/gen/termios.c projects/ppc64/lib/libc/gen/timezone.c projects/ppc64/lib/libc/gen/usleep.c projects/ppc64/lib/libc/gmon/gmon.c projects/ppc64/lib/libc/nls/es_ES.ISO8859-1.msg projects/ppc64/lib/libc/posix1e/acl_to_text.c projects/ppc64/lib/libc/rpc/svc.c projects/ppc64/lib/libc/stdio/findfp.c projects/ppc64/lib/libc/stdio/funopen.c projects/ppc64/lib/libc/stdio/printf.3 projects/ppc64/lib/libc/stdlib/getenv.3 projects/ppc64/lib/libc/stdlib/getenv.c projects/ppc64/lib/libc/stdlib/system.c projects/ppc64/lib/libc/string/strcat.3 projects/ppc64/lib/libc/string/strcmp.3 projects/ppc64/lib/libc/sys/__error.c projects/ppc64/lib/libc/sys/setpgid.2 projects/ppc64/lib/libutil/libutil.h projects/ppc64/libexec/Makefile projects/ppc64/libexec/rtld-elf/rtld.c projects/ppc64/release/i386/fixit_crunch.conf projects/ppc64/release/pc98/fixit-small_crunch.conf projects/ppc64/release/pc98/fixit_crunch.conf projects/ppc64/release/picobsd/bridge/PICOBSD projects/ppc64/release/picobsd/bridge/crunch.conf projects/ppc64/release/picobsd/build/picobsd projects/ppc64/rescue/rescue/Makefile projects/ppc64/sbin/atacontrol/atacontrol.c projects/ppc64/sbin/geom/class/mirror/geom_mirror.c projects/ppc64/sbin/geom/class/mirror/gmirror.8 projects/ppc64/sbin/init/Makefile projects/ppc64/sbin/init/init.c projects/ppc64/sbin/ipfw/dummynet.c projects/ppc64/sbin/ipfw/ipfw2.c projects/ppc64/sbin/reboot/Makefile projects/ppc64/sbin/reboot/reboot.c projects/ppc64/share/man/man4/Makefile projects/ppc64/share/man/man4/ipsec.4 projects/ppc64/share/man/man4/man4.powerpc/Makefile projects/ppc64/share/man/man4/man4.powerpc/pmu.4 projects/ppc64/share/man/man9/VOP_OPENCLOSE.9 projects/ppc64/share/man/man9/ifnet.9 projects/ppc64/share/misc/committers-src.dot projects/ppc64/share/mk/bsd.libnames.mk projects/ppc64/share/mk/bsd.subdir.mk projects/ppc64/sys/amd64/acpica/acpi_switch.S projects/ppc64/sys/amd64/amd64/identcpu.c projects/ppc64/sys/amd64/amd64/mca.c projects/ppc64/sys/amd64/conf/NOTES projects/ppc64/sys/amd64/include/mca.h projects/ppc64/sys/amd64/include/specialreg.h projects/ppc64/sys/arm/conf/AVILA projects/ppc64/sys/arm/conf/CAMBRIA projects/ppc64/sys/arm/mv/mv_sata.c projects/ppc64/sys/boot/i386/gptboot/gptboot.c projects/ppc64/sys/boot/i386/libi386/biosmem.c projects/ppc64/sys/boot/i386/libi386/libi386.h projects/ppc64/sys/boot/i386/loader/main.c projects/ppc64/sys/boot/i386/zfsboot/zfsboot.c projects/ppc64/sys/boot/pc98/btx/btx/btx.S projects/ppc64/sys/boot/pc98/libpc98/biosmem.c projects/ppc64/sys/boot/pc98/loader/main.c projects/ppc64/sys/boot/zfs/zfsimpl.c projects/ppc64/sys/cam/ata/ata_all.c projects/ppc64/sys/cam/ata/ata_all.h projects/ppc64/sys/cam/ata/ata_da.c projects/ppc64/sys/cam/ata/ata_pmp.c projects/ppc64/sys/cam/ata/ata_xpt.c projects/ppc64/sys/cam/cam_periph.h projects/ppc64/sys/cam/scsi/scsi_cd.c projects/ppc64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c projects/ppc64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/ppc64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c projects/ppc64/sys/compat/freebsd32/syscalls.master projects/ppc64/sys/compat/linux/linux_ioctl.c projects/ppc64/sys/compat/linux/linux_ioctl.h projects/ppc64/sys/conf/NOTES projects/ppc64/sys/conf/files projects/ppc64/sys/conf/files.amd64 projects/ppc64/sys/conf/files.i386 projects/ppc64/sys/conf/options projects/ppc64/sys/dev/aac/aac.c projects/ppc64/sys/dev/aac/aac_cam.c projects/ppc64/sys/dev/aac/aacvar.h projects/ppc64/sys/dev/ahci/ahci.c projects/ppc64/sys/dev/ata/ata-all.c projects/ppc64/sys/dev/ata/ata-all.h projects/ppc64/sys/dev/ata/ata-disk.c projects/ppc64/sys/dev/ata/ata-dma.c projects/ppc64/sys/dev/ata/ata-lowlevel.c projects/ppc64/sys/dev/ata/ata-pci.c projects/ppc64/sys/dev/ata/ata-pci.h projects/ppc64/sys/dev/ata/ata-queue.c projects/ppc64/sys/dev/ata/ata-sata.c projects/ppc64/sys/dev/ata/ata_if.m projects/ppc64/sys/dev/ata/atapi-cd.c projects/ppc64/sys/dev/ata/atapi-fd.c projects/ppc64/sys/dev/ata/atapi-tape.c projects/ppc64/sys/dev/ata/chipsets/ata-acard.c projects/ppc64/sys/dev/ata/chipsets/ata-acerlabs.c projects/ppc64/sys/dev/ata/chipsets/ata-ahci.c projects/ppc64/sys/dev/ata/chipsets/ata-amd.c projects/ppc64/sys/dev/ata/chipsets/ata-ati.c projects/ppc64/sys/dev/ata/chipsets/ata-cenatek.c projects/ppc64/sys/dev/ata/chipsets/ata-cypress.c projects/ppc64/sys/dev/ata/chipsets/ata-cyrix.c projects/ppc64/sys/dev/ata/chipsets/ata-highpoint.c projects/ppc64/sys/dev/ata/chipsets/ata-intel.c projects/ppc64/sys/dev/ata/chipsets/ata-ite.c projects/ppc64/sys/dev/ata/chipsets/ata-jmicron.c projects/ppc64/sys/dev/ata/chipsets/ata-marvell.c projects/ppc64/sys/dev/ata/chipsets/ata-micron.c projects/ppc64/sys/dev/ata/chipsets/ata-national.c projects/ppc64/sys/dev/ata/chipsets/ata-netcell.c projects/ppc64/sys/dev/ata/chipsets/ata-nvidia.c projects/ppc64/sys/dev/ata/chipsets/ata-promise.c projects/ppc64/sys/dev/ata/chipsets/ata-serverworks.c projects/ppc64/sys/dev/ata/chipsets/ata-siliconimage.c projects/ppc64/sys/dev/ata/chipsets/ata-sis.c projects/ppc64/sys/dev/ata/chipsets/ata-via.c projects/ppc64/sys/dev/bge/if_bge.c projects/ppc64/sys/dev/bge/if_bgereg.h projects/ppc64/sys/dev/cxgb/common/cxgb_common.h projects/ppc64/sys/dev/cxgb/cxgb_t3fw.h projects/ppc64/sys/dev/e1000/LICENSE projects/ppc64/sys/dev/e1000/e1000_80003es2lan.c projects/ppc64/sys/dev/e1000/e1000_80003es2lan.h projects/ppc64/sys/dev/e1000/e1000_82541.c projects/ppc64/sys/dev/e1000/e1000_82571.c projects/ppc64/sys/dev/e1000/e1000_82575.c projects/ppc64/sys/dev/e1000/e1000_82575.h projects/ppc64/sys/dev/e1000/e1000_api.c projects/ppc64/sys/dev/e1000/e1000_defines.h projects/ppc64/sys/dev/e1000/e1000_hw.h projects/ppc64/sys/dev/e1000/e1000_ich8lan.c projects/ppc64/sys/dev/e1000/e1000_ich8lan.h projects/ppc64/sys/dev/e1000/e1000_mac.c projects/ppc64/sys/dev/e1000/e1000_manage.c projects/ppc64/sys/dev/e1000/e1000_osdep.h projects/ppc64/sys/dev/e1000/e1000_phy.c projects/ppc64/sys/dev/e1000/e1000_phy.h projects/ppc64/sys/dev/e1000/e1000_regs.h projects/ppc64/sys/dev/e1000/if_em.c projects/ppc64/sys/dev/e1000/if_em.h projects/ppc64/sys/dev/e1000/if_igb.c projects/ppc64/sys/dev/e1000/if_igb.h projects/ppc64/sys/dev/hatm/if_hatm.c projects/ppc64/sys/dev/hwpmc/hwpmc_mod.c projects/ppc64/sys/dev/hwpmc/hwpmc_x86.c projects/ppc64/sys/dev/ichsmb/ichsmb_pci.c projects/ppc64/sys/dev/if_ndis/if_ndis.c projects/ppc64/sys/dev/iir/iir_ctrl.c projects/ppc64/sys/dev/isp/isp_freebsd.c projects/ppc64/sys/dev/isp/isp_freebsd.h projects/ppc64/sys/dev/ixgbe/ixgbe.c projects/ppc64/sys/dev/ixgbe/ixgbe.h projects/ppc64/sys/dev/ixgbe/ixgbe_82598.c projects/ppc64/sys/dev/ixgbe/ixgbe_82599.c projects/ppc64/sys/dev/ixgbe/ixgbe_api.c projects/ppc64/sys/dev/ixgbe/ixgbe_api.h projects/ppc64/sys/dev/ixgbe/ixgbe_common.c projects/ppc64/sys/dev/ixgbe/ixgbe_common.h projects/ppc64/sys/dev/ixgbe/ixgbe_osdep.h projects/ppc64/sys/dev/ixgbe/ixgbe_phy.c projects/ppc64/sys/dev/ixgbe/ixgbe_phy.h projects/ppc64/sys/dev/ixgbe/ixgbe_type.h projects/ppc64/sys/dev/pci/pci.c projects/ppc64/sys/dev/puc/pucdata.c projects/ppc64/sys/dev/siis/siis.c projects/ppc64/sys/dev/siis/siis.h projects/ppc64/sys/dev/uart/uart_bus_pci.c projects/ppc64/sys/dev/usb/controller/ehci_pci.c projects/ppc64/sys/dev/usb/controller/uhci_pci.c projects/ppc64/sys/dev/usb/input/atp.c projects/ppc64/sys/dev/usb/input/uhid.c projects/ppc64/sys/dev/usb/net/if_axe.c projects/ppc64/sys/dev/usb/net/if_cdce.c projects/ppc64/sys/dev/usb/serial/uftdi.c projects/ppc64/sys/dev/usb/usbdevs projects/ppc64/sys/dev/xen/blkfront/blkfront.c projects/ppc64/sys/dev/xen/blkfront/block.h projects/ppc64/sys/dev/xen/netfront/netfront.c projects/ppc64/sys/fs/nfs/nfs_commonacl.c projects/ppc64/sys/fs/nfs/nfs_commonport.c projects/ppc64/sys/fs/nfs/nfs_commonsubs.c projects/ppc64/sys/fs/nfs/nfs_var.h projects/ppc64/sys/fs/nfs/nfsport.h projects/ppc64/sys/fs/nfsclient/nfs_clrpcops.c projects/ppc64/sys/fs/nfsclient/nfs_clvnops.c projects/ppc64/sys/fs/nfsserver/nfs_nfsdcache.c projects/ppc64/sys/fs/ntfs/ntfs.h projects/ppc64/sys/fs/ntfs/ntfs_subr.c projects/ppc64/sys/fs/ntfs/ntfs_vfsops.c projects/ppc64/sys/fs/portalfs/portal_vnops.c projects/ppc64/sys/geom/mirror/g_mirror.c projects/ppc64/sys/geom/mirror/g_mirror.h projects/ppc64/sys/gnu/fs/reiserfs/reiserfs_vfsops.c projects/ppc64/sys/i386/conf/NOTES projects/ppc64/sys/i386/i386/dump_machdep.c projects/ppc64/sys/i386/i386/identcpu.c projects/ppc64/sys/i386/i386/machdep.c projects/ppc64/sys/i386/i386/mca.c projects/ppc64/sys/i386/include/mca.h projects/ppc64/sys/i386/include/specialreg.h projects/ppc64/sys/ia64/ia64/clock.c projects/ppc64/sys/ia64/ia64/exception.S projects/ppc64/sys/ia64/ia64/genassym.c projects/ppc64/sys/ia64/ia64/interrupt.c projects/ppc64/sys/ia64/ia64/machdep.c projects/ppc64/sys/ia64/ia64/mp_machdep.c projects/ppc64/sys/ia64/ia64/pmap.c projects/ppc64/sys/ia64/include/bus.h projects/ppc64/sys/ia64/include/cpufunc.h projects/ppc64/sys/ia64/include/ia64_cpu.h projects/ppc64/sys/ia64/include/kdb.h projects/ppc64/sys/ia64/include/param.h projects/ppc64/sys/ia64/include/pcpu.h projects/ppc64/sys/ia64/include/pmap.h projects/ppc64/sys/kern/kern_sig.c projects/ppc64/sys/kern/subr_bus.c projects/ppc64/sys/kern/tty.c projects/ppc64/sys/kern/vfs_acl.c projects/ppc64/sys/kern/vfs_syscalls.c projects/ppc64/sys/kern/vfs_vnops.c projects/ppc64/sys/modules/Makefile projects/ppc64/sys/net/if.c projects/ppc64/sys/net/if_dead.c projects/ppc64/sys/net/if_var.h projects/ppc64/sys/net80211/ieee80211_hostap.c projects/ppc64/sys/netinet/in.h projects/ppc64/sys/netinet/ip_carp.c projects/ppc64/sys/netinet/ip_fw.h projects/ppc64/sys/netinet/ipfw/ip_dummynet.c projects/ppc64/sys/netinet/ipfw/ip_fw2.c projects/ppc64/sys/netinet/raw_ip.c projects/ppc64/sys/netipsec/ipcomp_var.h projects/ppc64/sys/netipsec/xform_ipcomp.c projects/ppc64/sys/nfsserver/nfs_serv.c projects/ppc64/sys/opencrypto/cryptosoft.c projects/ppc64/sys/opencrypto/deflate.c projects/ppc64/sys/pc98/conf/NOTES projects/ppc64/sys/powerpc/aim/machdep.c projects/ppc64/sys/powerpc/conf/GENERIC projects/ppc64/sys/powerpc/include/spr.h projects/ppc64/sys/powerpc/include/vmparam.h projects/ppc64/sys/powerpc/powermac/ata_dbdma.c projects/ppc64/sys/powerpc/powermac/ata_kauai.c projects/ppc64/sys/powerpc/powermac/ata_macio.c projects/ppc64/sys/powerpc/psim/ata_iobus.c projects/ppc64/sys/sparc64/sparc64/stack_machdep.c projects/ppc64/sys/sparc64/sparc64/trap.c projects/ppc64/sys/sun4v/sun4v/stack_machdep.c projects/ppc64/sys/sys/ata.h projects/ppc64/sys/sys/bus.h projects/ppc64/sys/sys/param.h projects/ppc64/sys/vm/uma_int.h projects/ppc64/tools/regression/bin/sh/builtins/fc1.0 projects/ppc64/tools/regression/bin/sh/errors/backquote-error1.0 projects/ppc64/tools/regression/bin/sh/parser/for1.0 projects/ppc64/tools/regression/environ/Makefile.envctl projects/ppc64/tools/regression/environ/envctl.c projects/ppc64/tools/regression/environ/envtest.t projects/ppc64/tools/tools/sysbuild/sysbuild.sh projects/ppc64/usr.bin/Makefile projects/ppc64/usr.bin/calendar/calendars/calendar.freebsd projects/ppc64/usr.bin/make/proc.c projects/ppc64/usr.bin/netstat/if.c projects/ppc64/usr.bin/netstat/ipsec.c projects/ppc64/usr.bin/netstat/main.c projects/ppc64/usr.bin/netstat/netstat.1 projects/ppc64/usr.bin/netstat/netstat.h projects/ppc64/usr.bin/systat/Makefile projects/ppc64/usr.bin/systat/vmstat.c projects/ppc64/usr.bin/users/Makefile projects/ppc64/usr.bin/users/users.c projects/ppc64/usr.bin/w/Makefile projects/ppc64/usr.bin/w/w.c projects/ppc64/usr.bin/wall/Makefile projects/ppc64/usr.bin/wall/wall.c projects/ppc64/usr.bin/who/Makefile projects/ppc64/usr.bin/who/who.c projects/ppc64/usr.bin/write/Makefile projects/ppc64/usr.bin/write/write.c projects/ppc64/usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c projects/ppc64/usr.sbin/freebsd-update/freebsd-update.sh projects/ppc64/usr.sbin/lastlogin/Makefile projects/ppc64/usr.sbin/lastlogin/lastlogin.c projects/ppc64/usr.sbin/mountd/exports.5 projects/ppc64/usr.sbin/nfsd/nfsv4.4 projects/ppc64/usr.sbin/nfsd/stablerestart.5 projects/ppc64/usr.sbin/pw/pw_user.c projects/ppc64/usr.sbin/repquota/repquota.c projects/ppc64/usr.sbin/sysinstall/user.c projects/ppc64/usr.sbin/ypserv/yp_main.c projects/ppc64/usr.sbin/ypserv/yp_server.c Directory Properties: projects/ppc64/ (props changed) projects/ppc64/contrib/bind9/ (props changed) projects/ppc64/sys/ (props changed) projects/ppc64/sys/dev/xen/xenpci/ (props changed) Modified: projects/ppc64/MAINTAINERS ============================================================================== --- projects/ppc64/MAINTAINERS Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/MAINTAINERS Wed Dec 9 22:27:12 2009 (r200320) @@ -124,6 +124,8 @@ usr.bin/bluetooth emax Pre-commit review usr.sbin/bluetooth emax Pre-commit review preferred. gnu/usr.bin/send-pr bugmaster Pre-commit review requested. ncurses rafan Heads-up appreciated, try not to break it. +*env(3) secteam Due to the problematic security history of this + code, please have patches reviewed by secteam. Following are the entries from the Makefiles, and a few other sources. Please remove stale entries from both their origin, and this file. Modified: projects/ppc64/ObsoleteFiles.inc ============================================================================== --- projects/ppc64/ObsoleteFiles.inc Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/ObsoleteFiles.inc Wed Dec 9 22:27:12 2009 (r200320) @@ -14,8 +14,14 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20091202: unify rc.firewall and rc.firewall6. +OLD_FILES+=etc/rc.d/ip6fw +OLD_FILES+=etc/rc.firewall6 +OLD_FILES+=usr/share/examples/etc/rc.firewall6 # 20091117: removal of rc.early(8) link OLD_FILES+=usr/share/man/man8/rc.early.8.gz +# 20091117: usr/share/zoneinfo/GMT link removed +OLD_FILES+=usr/share/zoneinfo/GMT # 20091027: pselect.3 implemented as syscall OLD_FILES+=usr/share/man/man3/pselect.3.gz # 20091005: fusword.9 and susword.9 removed Modified: projects/ppc64/bin/date/Makefile ============================================================================== --- projects/ppc64/bin/date/Makefile Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/bin/date/Makefile Wed Dec 9 22:27:12 2009 (r200320) @@ -3,7 +3,7 @@ PROG= date SRCS= date.c netdate.c vary.c -DPADD= ${LIBUTIL} -LDADD= -lutil +DPADD= ${LIBULOG} +LDADD= -lulog .include Modified: projects/ppc64/bin/date/date.c ============================================================================== --- projects/ppc64/bin/date/date.c Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/bin/date/date.c Wed Dec 9 22:27:12 2009 (r200320) @@ -48,11 +48,12 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include #include +#define _ULOG_POSIX_NAMES +#include #include #include "extern.h" @@ -181,6 +182,7 @@ main(int argc, char *argv[]) static void setthetime(const char *fmt, const char *p, int jflag, int nflag) { + struct utmpx utx; struct tm *lt; struct timeval tv; const char *dot, *t; @@ -271,12 +273,16 @@ setthetime(const char *fmt, const char * if (!jflag) { /* set the time */ if (nflag || netsettime(tval)) { - logwtmp("|", "date", ""); + utx.ut_type = OLD_TIME; + gettimeofday(&utx.ut_tv, NULL); + pututxline(&utx); tv.tv_sec = tval; tv.tv_usec = 0; if (settimeofday(&tv, (struct timezone *)NULL)) err(1, "settimeofday (timeval)"); - logwtmp("{", "date", ""); + utx.ut_type = NEW_TIME; + gettimeofday(&utx.ut_tv, NULL); + pututxline(&utx); } if ((p = getlogin()) == NULL) Modified: projects/ppc64/bin/sh/eval.c ============================================================================== --- projects/ppc64/bin/sh/eval.c Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/bin/sh/eval.c Wed Dec 9 22:27:12 2009 (r200320) @@ -883,7 +883,6 @@ cmddone: #ifdef DEBUG trputs("normal command: "); trargs(argv); #endif - clearredir(); redirect(cmd->ncmd.redirect, 0); for (sp = varlist.list ; sp ; sp = sp->next) setvareq(sp->text, VEXPORT|VSTACK); Modified: projects/ppc64/bin/sh/redir.c ============================================================================== --- projects/ppc64/bin/sh/redir.c Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/bin/sh/redir.c Wed Dec 9 22:27:12 2009 (r200320) @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #define EMPTY -2 /* marks an unused slot in redirtab */ +#define CLOSED -1 /* fd was not open before redir */ #define PIPESIZE 4096 /* amount of buffering in a pipe */ @@ -101,7 +102,6 @@ redirect(union node *redir, int flags) struct redirtab *sv = NULL; int i; int fd; - int try; char memory[10]; /* file descriptors to write to memory */ for (i = 10 ; --i >= 0 ; ) @@ -116,38 +116,30 @@ redirect(union node *redir, int flags) } for (n = redir ; n ; n = n->nfile.next) { fd = n->nfile.fd; - try = 0; if ((n->nfile.type == NTOFD || n->nfile.type == NFROMFD) && n->ndup.dupfd == fd) continue; /* redirect from/to same file descriptor */ if ((flags & REDIR_PUSH) && sv->renamed[fd] == EMPTY) { INTOFF; -again: if ((i = fcntl(fd, F_DUPFD, 10)) == -1) { switch (errno) { case EBADF: - if (!try) { - openredirect(n, memory); - try++; - goto again; - } - /* FALLTHROUGH*/ + i = CLOSED; + break; default: INTON; error("%d: %s", fd, strerror(errno)); break; } - } - if (!try) { - sv->renamed[fd] = i; - } + } else + (void)fcntl(i, F_SETFD, FD_CLOEXEC); + sv->renamed[fd] = i; INTON; } if (fd == 0) fd0_redirected++; - if (!try) - openredirect(n, memory); + openredirect(n, memory); } if (memory[1]) out1 = &memout; Modified: projects/ppc64/contrib/bind9/CHANGES ============================================================================== --- projects/ppc64/contrib/bind9/CHANGES Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/bind9/CHANGES Wed Dec 9 22:27:12 2009 (r200320) @@ -1,3 +1,9 @@ + --- 9.6.1-P2 released --- + +2772. [security] When validating, track whether pending data was from + the additional section or not and only return it if + validates as secure. [RT #20438] + --- 9.6.1-P1 released --- 2640. [security] A specially crafted update packet will cause named Modified: projects/ppc64/contrib/bind9/bin/named/query.c ============================================================================== --- projects/ppc64/contrib/bind9/bin/named/query.c Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/bind9/bin/named/query.c Wed Dec 9 22:27:12 2009 (r200320) @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: query.c,v 1.313.20.7 2009/03/13 01:38:51 marka Exp $ */ +/* $Id: query.c,v 1.313.20.7.12.1 2009/11/18 23:58:04 marka Exp $ */ /*! \file */ @@ -116,6 +116,8 @@ #define DNS_GETDB_NOLOG 0x02U #define DNS_GETDB_PARTIAL 0x04U +#define PENDINGOK(x) (((x) & DNS_DBFIND_PENDINGOK) != 0) + typedef struct client_additionalctx { ns_client_t *client; dns_rdataset_t *rdataset; @@ -1761,8 +1763,8 @@ query_addadditional2(void *arg, dns_name */ if (result == ISC_R_SUCCESS && additionaltype == dns_rdatasetadditional_fromcache && - (rdataset->trust == dns_trust_pending || - rdataset->trust == dns_trust_glue) && + (DNS_TRUST_PENDING(rdataset->trust) || + DNS_TRUST_GLUE(rdataset->trust)) && !validate(client, db, fname, rdataset, sigrdataset)) { dns_rdataset_disassociate(rdataset); if (dns_rdataset_isassociated(sigrdataset)) @@ -1801,8 +1803,8 @@ query_addadditional2(void *arg, dns_name */ if (result == ISC_R_SUCCESS && additionaltype == dns_rdatasetadditional_fromcache && - (rdataset->trust == dns_trust_pending || - rdataset->trust == dns_trust_glue) && + (DNS_TRUST_PENDING(rdataset->trust) || + DNS_TRUST_GLUE(rdataset->trust)) && !validate(client, db, fname, rdataset, sigrdataset)) { dns_rdataset_disassociate(rdataset); if (dns_rdataset_isassociated(sigrdataset)) @@ -2601,14 +2603,14 @@ query_addbestns(ns_client_t *client) { /* * Attempt to validate RRsets that are pending or that are glue. */ - if ((rdataset->trust == dns_trust_pending || - (sigrdataset != NULL && sigrdataset->trust == dns_trust_pending)) + if ((DNS_TRUST_PENDING(rdataset->trust) || + (sigrdataset != NULL && DNS_TRUST_PENDING(sigrdataset->trust))) && !validate(client, db, fname, rdataset, sigrdataset) && - (client->query.dboptions & DNS_DBFIND_PENDINGOK) == 0) + !PENDINGOK(client->query.dboptions)) goto cleanup; - if ((rdataset->trust == dns_trust_glue || - (sigrdataset != NULL && sigrdataset->trust == dns_trust_glue)) && + if ((DNS_TRUST_GLUE(rdataset->trust) || + (sigrdataset != NULL && DNS_TRUST_GLUE(sigrdataset->trust))) && !validate(client, db, fname, rdataset, sigrdataset) && SECURE(client) && WANTDNSSEC(client)) goto cleanup; @@ -3716,6 +3718,8 @@ query_find(ns_client_t *client, dns_fetc dns_rdataset_t *noqname; isc_boolean_t resuming; int line = -1; + dns_rdataset_t tmprdataset; + unsigned int dboptions; CTRACE("query_find"); @@ -3933,9 +3937,49 @@ query_find(ns_client_t *client, dns_fetc /* * Now look for an answer in the database. */ + dboptions = client->query.dboptions; + if (sigrdataset == NULL && client->view->enablednssec) { + /* + * If the client doesn't want DNSSEC we still want to + * look for any data pending validation to save a remote + * lookup if possible. + */ + dns_rdataset_init(&tmprdataset); + sigrdataset = &tmprdataset; + dboptions |= DNS_DBFIND_PENDINGOK; + } + refind: result = dns_db_find(db, client->query.qname, version, type, - client->query.dboptions, client->now, - &node, fname, rdataset, sigrdataset); + dboptions, client->now, &node, fname, + rdataset, sigrdataset); + /* + * If we have found pending data try to validate it. + * If the data does not validate as secure and we can't + * use the unvalidated data requery the database with + * pending disabled to prevent infinite looping. + */ + if (result != ISC_R_SUCCESS || !DNS_TRUST_PENDING(rdataset->trust)) + goto validation_done; + if (validate(client, db, fname, rdataset, sigrdataset)) + goto validation_done; + if (rdataset->trust != dns_trust_pending_answer || + !PENDINGOK(client->query.dboptions)) { + dns_rdataset_disassociate(rdataset); + if (sigrdataset != NULL && + dns_rdataset_isassociated(sigrdataset)) + dns_rdataset_disassociate(sigrdataset); + if (sigrdataset == &tmprdataset) + sigrdataset = NULL; + dns_db_detachnode(db, &node); + dboptions &= ~DNS_DBFIND_PENDINGOK; + goto refind; + } + validation_done: + if (sigrdataset == &tmprdataset) { + if (dns_rdataset_isassociated(sigrdataset)) + dns_rdataset_disassociate(sigrdataset); + sigrdataset = NULL; + } resume: CTRACE("query_find: resume"); Modified: projects/ppc64/contrib/bind9/lib/dns/api ============================================================================== --- projects/ppc64/contrib/bind9/lib/dns/api Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/bind9/lib/dns/api Wed Dec 9 22:27:12 2009 (r200320) @@ -1,3 +1,3 @@ -LIBINTERFACE = 52 +LIBINTERFACE = 53 LIBREVISION = 0 -LIBAGE = 2 +LIBAGE = 0 Modified: projects/ppc64/contrib/bind9/lib/dns/include/dns/types.h ============================================================================== --- projects/ppc64/contrib/bind9/lib/dns/include/dns/types.h Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/bind9/lib/dns/include/dns/types.h Wed Dec 9 22:27:12 2009 (r200320) @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: types.h,v 1.130.50.3 2009/01/29 22:40:35 jinmei Exp $ */ +/* $Id: types.h,v 1.130.50.3.12.1 2009/11/18 23:58:04 marka Exp $ */ #ifndef DNS_TYPES_H #define DNS_TYPES_H 1 @@ -258,40 +258,52 @@ enum { dns_trust_none = 0, #define dns_trust_none ((dns_trust_t)dns_trust_none) - /*% Subject to DNSSEC validation but has not yet been validated */ - dns_trust_pending = 1, -#define dns_trust_pending ((dns_trust_t)dns_trust_pending) + /*% + * Subject to DNSSEC validation but has not yet been validated + * dns_trust_pending_additional (from the additional section). + */ + dns_trust_pending_additional = 1, +#define dns_trust_pending_additional \ + ((dns_trust_t)dns_trust_pending_additional) + + dns_trust_pending_answer = 2, +#define dns_trust_pending_answer ((dns_trust_t)dns_trust_pending_answer) /*% Received in the additional section of a response. */ - dns_trust_additional = 2, + dns_trust_additional = 3, #define dns_trust_additional ((dns_trust_t)dns_trust_additional) /* Received in a referral response. */ - dns_trust_glue = 3, + dns_trust_glue = 4, #define dns_trust_glue ((dns_trust_t)dns_trust_glue) /* Answer from a non-authoritative server */ - dns_trust_answer = 4, + dns_trust_answer = 5, #define dns_trust_answer ((dns_trust_t)dns_trust_answer) /* Received in the authority section as part of an authoritative response */ - dns_trust_authauthority = 5, + dns_trust_authauthority = 6, #define dns_trust_authauthority ((dns_trust_t)dns_trust_authauthority) /* Answer from an authoritative server */ - dns_trust_authanswer = 6, + dns_trust_authanswer = 7, #define dns_trust_authanswer ((dns_trust_t)dns_trust_authanswer) /* Successfully DNSSEC validated */ - dns_trust_secure = 7, + dns_trust_secure = 8, #define dns_trust_secure ((dns_trust_t)dns_trust_secure) /* This server is authoritative */ - dns_trust_ultimate = 8 + dns_trust_ultimate = 9 #define dns_trust_ultimate ((dns_trust_t)dns_trust_ultimate) }; +#define DNS_TRUST_PENDING(x) ((x) == dns_trust_pending_answer || \ + (x) == dns_trust_pending_additional) +#define DNS_TRUST_GLUE(x) ((x) == dns_trust_glue) + + /*% * Name checking severities. */ Modified: projects/ppc64/contrib/bind9/lib/dns/masterdump.c ============================================================================== --- projects/ppc64/contrib/bind9/lib/dns/masterdump.c Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/bind9/lib/dns/masterdump.c Wed Dec 9 22:27:12 2009 (r200320) @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: masterdump.c,v 1.94.50.2 2009/01/18 23:47:40 tbox Exp $ */ +/* $Id: masterdump.c,v 1.94.50.2.12.1 2009/11/18 23:58:04 marka Exp $ */ /*! \file */ @@ -775,7 +775,8 @@ dump_order_compare(const void *a, const static const char *trustnames[] = { "none", - "pending", + "pending-additional", + "pending-answer", "additional", "glue", "answer", Modified: projects/ppc64/contrib/bind9/lib/dns/rbtdb.c ============================================================================== --- projects/ppc64/contrib/bind9/lib/dns/rbtdb.c Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/bind9/lib/dns/rbtdb.c Wed Dec 9 22:27:12 2009 (r200320) @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: rbtdb.c,v 1.270.12.6 2009/05/06 23:34:30 jinmei Exp $ */ +/* $Id: rbtdb.c,v 1.270.12.6.10.1 2009/11/18 23:58:04 marka Exp $ */ /*! \file */ @@ -4005,7 +4005,7 @@ cache_zonecut_callback(dns_rbtnode_t *no } if (dname_header != NULL && - (dname_header->trust != dns_trust_pending || + (!DNS_TRUST_PENDING(dname_header->trust) || (search->options & DNS_DBFIND_PENDINGOK) != 0)) { /* * We increment the reference count on node to ensure that @@ -4548,7 +4548,7 @@ cache_find(dns_db_t *db, dns_name_t *nam if (found == NULL || (found->trust == dns_trust_glue && ((options & DNS_DBFIND_GLUEOK) == 0)) || - (found->trust == dns_trust_pending && + (DNS_TRUST_PENDING(found->trust) && ((options & DNS_DBFIND_PENDINGOK) == 0))) { /* * If there is an NS rdataset at this node, then this is the Modified: projects/ppc64/contrib/bind9/lib/dns/resolver.c ============================================================================== --- projects/ppc64/contrib/bind9/lib/dns/resolver.c Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/bind9/lib/dns/resolver.c Wed Dec 9 22:27:12 2009 (r200320) @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: resolver.c,v 1.384.14.14 2009/06/02 23:47:13 tbox Exp $ */ +/* $Id: resolver.c,v 1.384.14.14.8.1 2009/11/18 23:58:04 marka Exp $ */ /*! \file */ @@ -4293,6 +4293,7 @@ cache_name(fetchctx_t *fctx, dns_name_t * for it, unless it is glue. */ if (secure_domain && rdataset->trust != dns_trust_glue) { + dns_trust_t trust; /* * RRSIGs are validated as part of validating the * type they cover. @@ -4329,12 +4330,34 @@ cache_name(fetchctx_t *fctx, dns_name_t } /* + * Reject out of bailiwick additional records + * without RRSIGs as they can't possibly validate + * as "secure" and as we will never never want to + * store these as "answers" after validation. + */ + if (rdataset->trust == dns_trust_additional && + sigrdataset == NULL && EXTERNAL(rdataset)) + continue; + + /* + * XXXMPA: If we store as "answer" after validating + * then we need to do bailiwick processing and + * also need to track whether RRsets are in or + * out of bailiwick. This will require a another + * pending trust level. + * * Cache this rdataset/sigrdataset pair as - * pending data. + * pending data. Track whether it was additional + * or not. */ - rdataset->trust = dns_trust_pending; + if (rdataset->trust == dns_trust_additional) + trust = dns_trust_pending_additional; + else + trust = dns_trust_pending_answer; + + rdataset->trust = trust; if (sigrdataset != NULL) - sigrdataset->trust = dns_trust_pending; + sigrdataset->trust = trust; if (!need_validation || !ANSWER(rdataset)) { addedrdataset = ardataset; result = dns_db_addrdataset(fctx->cache, node, @@ -4682,7 +4705,7 @@ ncache_message(fetchctx_t *fctx, dns_adb for (trdataset = ISC_LIST_HEAD(tname->list); trdataset != NULL; trdataset = ISC_LIST_NEXT(trdataset, link)) - trdataset->trust = dns_trust_pending; + trdataset->trust = dns_trust_pending_answer; result = dns_message_nextname(fctx->rmessage, DNS_SECTION_AUTHORITY); } Modified: projects/ppc64/contrib/bind9/lib/dns/validator.c ============================================================================== --- projects/ppc64/contrib/bind9/lib/dns/validator.c Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/bind9/lib/dns/validator.c Wed Dec 9 22:27:12 2009 (r200320) @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: validator.c,v 1.164.12.9 2009/05/07 23:47:12 tbox Exp $ */ +/* $Id: validator.c,v 1.164.12.9.8.1 2009/11/18 23:58:04 marka Exp $ */ #include @@ -1607,7 +1607,7 @@ get_key(dns_validator_t *val, dns_rdata_ * We have an rrset for the given keyname. */ val->keyset = &val->frdataset; - if (val->frdataset.trust == dns_trust_pending && + if (DNS_TRUST_PENDING(val->frdataset.trust) && dns_rdataset_isassociated(&val->fsigrdataset)) { /* @@ -1622,7 +1622,7 @@ get_key(dns_validator_t *val, dns_rdata_ if (result != ISC_R_SUCCESS) return (result); return (DNS_R_WAIT); - } else if (val->frdataset.trust == dns_trust_pending) { + } else if (DNS_TRUST_PENDING(val->frdataset.trust)) { /* * Having a pending key with no signature means that * something is broken. @@ -2243,7 +2243,7 @@ validatezonekey(dns_validator_t *val) { * We have DS records. */ val->dsset = &val->frdataset; - if (val->frdataset.trust == dns_trust_pending && + if (DNS_TRUST_PENDING(val->frdataset.trust) && dns_rdataset_isassociated(&val->fsigrdataset)) { result = create_validator(val, @@ -2256,7 +2256,7 @@ validatezonekey(dns_validator_t *val) { if (result != ISC_R_SUCCESS) return (result); return (DNS_R_WAIT); - } else if (val->frdataset.trust == dns_trust_pending) { + } else if (DNS_TRUST_PENDING(val->frdataset.trust)) { /* * There should never be an unsigned DS. */ @@ -3337,7 +3337,7 @@ proveunsecure(dns_validator_t *val, isc_ * There is no DS. If this is a delegation, * we maybe done. */ - if (val->frdataset.trust == dns_trust_pending) { + if (DNS_TRUST_PENDING(val->frdataset.trust)) { result = create_fetch(val, tname, dns_rdatatype_ds, dsfetched2, Modified: projects/ppc64/contrib/bind9/lib/isc/ia64/include/isc/atomic.h ============================================================================== --- projects/ppc64/contrib/bind9/lib/isc/ia64/include/isc/atomic.h Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/bind9/lib/isc/ia64/include/isc/atomic.h Wed Dec 9 22:27:12 2009 (r200320) @@ -41,7 +41,7 @@ isc_atomic_xadd(isc_int32_t *p, isc_int3 for (prev = *(volatile isc_int32_t *)p; ; prev = swapped) { swapped = prev + val; __asm__ volatile( - "mov ar.ccv=%2;" + "mov ar.ccv=%2;;" "cmpxchg4.acq %0=%4,%3,ar.ccv" : "=r" (swapped), "=m" (*p) : "r" (prev), "r" (swapped), "m" (*p) @@ -84,7 +84,7 @@ isc_atomic_cmpxchg(isc_int32_t *p, isc_i isc_int32_t ret; __asm__ volatile( - "mov ar.ccv=%2;" + "mov ar.ccv=%2;;" "cmpxchg4.acq %0=%4,%3,ar.ccv" : "=r" (ret), "=m" (*p) : "r" (cmpval), "r" (val), "m" (*p) Modified: projects/ppc64/contrib/bind9/version ============================================================================== --- projects/ppc64/contrib/bind9/version Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/bind9/version Wed Dec 9 22:27:12 2009 (r200320) @@ -1,4 +1,4 @@ -# $Id: version,v 1.43.12.5.8.1 2009/07/28 14:18:08 marka Exp $ +# $Id: version,v 1.43.12.5.8.2 2009/11/18 23:58:04 marka Exp $ # # This file must follow /bin/sh rules. It is imported directly via # configure. @@ -7,4 +7,4 @@ MAJORVER=9 MINORVER=6 PATCHVER=1 RELEASETYPE=-P -RELEASEVER=1 +RELEASEVER=2 Modified: projects/ppc64/contrib/bsnmp/snmp_mibII/BEGEMOT-MIB2-MIB.txt ============================================================================== --- projects/ppc64/contrib/bsnmp/snmp_mibII/BEGEMOT-MIB2-MIB.txt Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/bsnmp/snmp_mibII/BEGEMOT-MIB2-MIB.txt Wed Dec 9 22:27:12 2009 (r200320) @@ -39,7 +39,7 @@ IMPORTS FROM BEGEMOT-IP-MIB; begemotMib2 MODULE-IDENTITY - LAST-UPDATED "200602130000Z" + LAST-UPDATED "200908030000Z" ORGANIZATION "German Aerospace Center" CONTACT-INFO " Hartmut Brandt @@ -54,6 +54,12 @@ begemotMib2 MODULE-IDENTITY E-mail: harti@freebsd.org" DESCRIPTION "The MIB for private mib2 stuff." + REVISION "200908030000Z" + DESCRIPTION + "Second edition adds begemotIfDataPoll object." + REVISION "200602130000Z" + DESCRIPTION + "Initial revision." ::= { begemotIp 1 } begemotIfMaxspeed OBJECT-TYPE @@ -87,4 +93,14 @@ begemotIfForcePoll OBJECT-TYPE bit rate in its MIB." ::= { begemotMib2 3 } +begemotIfDataPoll OBJECT-TYPE + SYNTAX TimeTicks + UNITS "deciseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The rate at which the mib2 module will poll interface data." + DEFVAL { 100 } + ::= { begemotMib2 4 } + END Modified: projects/ppc64/contrib/bsnmp/snmp_mibII/mibII.c ============================================================================== --- projects/ppc64/contrib/bsnmp/snmp_mibII/mibII.c Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/bsnmp/snmp_mibII/mibII.c Wed Dec 9 22:27:12 2009 (r200320) @@ -117,6 +117,15 @@ u_int mibif_hc_update_interval; /* HC update timer handle */ static void *hc_update_timer; +/* Idle poll timer */ +static void *mibII_poll_timer; + +/* interfaces' data poll interval */ +u_int mibII_poll_ticks; + +/* Idle poll hook */ +static void mibII_idle(void *arg __unused); + /*****************************/ static const struct asn_oid oid_ifMIB = OIDX_ifMIB; @@ -410,6 +419,20 @@ mibif_reset_hc_timer(void) mibif_hc_update_interval = ticks; } +/** + * Restart the idle poll timer. + */ +void +mibif_restart_mibII_poll_timer(void) +{ + if (mibII_poll_timer != NULL) + timer_stop(mibII_poll_timer); + + if ((mibII_poll_timer = timer_start_repeat(mibII_poll_ticks * 10, + mibII_poll_ticks * 10, mibII_idle, NULL, module)) == NULL) + syslog(LOG_ERR, "timer_start(%u): %m", mibII_poll_ticks); +} + /* * Fetch new MIB data. */ @@ -1553,7 +1576,7 @@ get_cloners(void) * Idle function */ static void -mibII_idle(void) +mibII_idle(void *arg __unused) { struct mibifa *ifa; @@ -1608,6 +1631,10 @@ mibII_start(void) ipForward_reg = or_register(&oid_ipForward, "The MIB module for the display of CIDR multipath IP Routes.", module); + + mibII_poll_timer = NULL; + mibII_poll_ticks = MIBII_POLL_TICKS; + mibif_restart_mibII_poll_timer(); } /* @@ -1651,6 +1678,11 @@ mibII_init(struct lmodule *mod, int argc static int mibII_fini(void) { + if (mibII_poll_timer != NULL ) { + timer_stop(mibII_poll_timer); + mibII_poll_timer = NULL; + } + if (route_fd != NULL) fd_deselect(route_fd); if (route != -1) @@ -1690,7 +1722,7 @@ const struct snmp_module config = { "This module implements the interface and ip groups.", mibII_init, mibII_fini, - mibII_idle, /* idle */ + NULL, /* idle */ NULL, /* dump */ NULL, /* config */ mibII_start, Modified: projects/ppc64/contrib/bsnmp/snmp_mibII/mibII.h ============================================================================== --- projects/ppc64/contrib/bsnmp/snmp_mibII/mibII.h Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/bsnmp/snmp_mibII/mibII.h Wed Dec 9 22:27:12 2009 (r200320) @@ -211,6 +211,14 @@ extern u_int mibif_hc_update_interval; /* re-compute update interval */ void mibif_reset_hc_timer(void); +/* interfaces' data poll interval */ +extern u_int mibII_poll_ticks; + +/* restart the data poll timer */ +void mibif_restart_mibII_poll_timer(void); + +#define MIBII_POLL_TICKS 100 + /* get interfaces and interface addresses. */ void mib_fetch_interfaces(void); Modified: projects/ppc64/contrib/bsnmp/snmp_mibII/mibII_begemot.c ============================================================================== --- projects/ppc64/contrib/bsnmp/snmp_mibII/mibII_begemot.c Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/bsnmp/snmp_mibII/mibII_begemot.c Wed Dec 9 22:27:12 2009 (r200320) @@ -59,6 +59,11 @@ op_begemot_mibII(struct snmp_context *ct ctx->scratch->int1 = mibif_force_hc_update_interval; mibif_force_hc_update_interval = value->v.uint32; return (SNMP_ERR_NOERROR); + + case LEAF_begemotIfDataPoll: + ctx->scratch->int1 = mibII_poll_ticks; + mibII_poll_ticks = value->v.uint32; + return (SNMP_ERR_NOERROR); } abort(); @@ -68,6 +73,10 @@ op_begemot_mibII(struct snmp_context *ct case LEAF_begemotIfForcePoll: mibif_force_hc_update_interval = ctx->scratch->int1; return (SNMP_ERR_NOERROR); + + case LEAF_begemotIfDataPoll: + mibII_poll_ticks = ctx->scratch->int1; + return (SNMP_ERR_NOERROR); } abort(); @@ -78,6 +87,10 @@ op_begemot_mibII(struct snmp_context *ct mibif_force_hc_update_interval = ctx->scratch->int1; mibif_reset_hc_timer(); return (SNMP_ERR_NOERROR); + + case LEAF_begemotIfDataPoll: + mibif_restart_mibII_poll_timer(); + return (SNMP_ERR_NOERROR); } abort(); } @@ -98,6 +111,10 @@ op_begemot_mibII(struct snmp_context *ct case LEAF_begemotIfForcePoll: value->v.uint32 = mibif_force_hc_update_interval; return (SNMP_ERR_NOERROR); + + case LEAF_begemotIfDataPoll: + value->v.uint32 = mibII_poll_ticks; + return (SNMP_ERR_NOERROR); } abort(); } Modified: projects/ppc64/contrib/bsnmp/snmp_mibII/mibII_tree.def ============================================================================== --- projects/ppc64/contrib/bsnmp/snmp_mibII/mibII_tree.def Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/bsnmp/snmp_mibII/mibII_tree.def Wed Dec 9 22:27:12 2009 (r200320) @@ -240,6 +240,7 @@ (1 begemotIfMaxspeed COUNTER64 op_begemot_mibII GET) (2 begemotIfPoll TIMETICKS op_begemot_mibII GET) (3 begemotIfForcePoll TIMETICKS op_begemot_mibII GET SET) + (4 begemotIfDataPoll TIMETICKS op_begemot_mibII GET SET) ) ) ) Modified: projects/ppc64/contrib/gcc/config/freebsd-spec.h ============================================================================== --- projects/ppc64/contrib/gcc/config/freebsd-spec.h Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/gcc/config/freebsd-spec.h Wed Dec 9 22:27:12 2009 (r200320) @@ -103,9 +103,10 @@ Boston, MA 02110-1301, USA. */ %{p:gcrt1.o%s} \ %{!p: \ %{profile:gcrt1.o%s} \ - %{!profile:crt1.o%s}}}} \ + %{!profile: \ + %{pie: Scrt1.o%s;:crt1.o%s}}}}} \ crti.o%s \ - %{static:crtbeginT.o%s;shared:crtbeginS.o%s;:crtbegin.o%s}" + %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}" /* Provide an ENDFILE_SPEC appropriate for FreeBSD/i386. Here we tack on our own magical crtend.o file (see crtstuff.c) which provides part of @@ -113,8 +114,7 @@ Boston, MA 02110-1301, USA. */ entering `main', followed by the normal "finalizer" file, `crtn.o'. */ #define FBSD_ENDFILE_SPEC "\ - %{!shared:crtend.o%s} \ - %{shared:crtendS.o%s} \ + %{shared|pie:crtendS.o%s;:crtend.o%s} \ crtn.o%s " /* Provide a LIB_SPEC appropriate for FreeBSD as configured and as Modified: projects/ppc64/contrib/groff/tmac/doc-syms ============================================================================== --- projects/ppc64/contrib/groff/tmac/doc-syms Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/groff/tmac/doc-syms Wed Dec 9 22:27:12 2009 (r200320) @@ -777,6 +777,7 @@ .ds doc-str-Lb-librt \*[Px] \*[doc-str-Lb]Real-time Library (librt, \-lrt) .ds doc-str-Lb-libtermcap Termcap Access Library (libtermcap, \-ltermcap) .ds doc-str-Lb-libusbhid USB Human Interface Devices Library (libusbhid, \-lusbhid) +.ds doc-str-Lb-libulog User Login Record Library (libulog, \-lulog) .ds doc-str-Lb-libutil System Utilities Library (libutil, \-lutil) .ds doc-str-Lb-libx86_64 x86_64 Architecture Library (libx86_64, \-lx86_64) .ds doc-str-Lb-libz Compression Library (libz, \-lz) Modified: projects/ppc64/contrib/netcat/FREEBSD-vendor ============================================================================== --- projects/ppc64/contrib/netcat/FREEBSD-vendor Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/netcat/FREEBSD-vendor Wed Dec 9 22:27:12 2009 (r200320) @@ -1,5 +1,5 @@ # $FreeBSD$ Project: netcat (aka src/usr.bin/nc in OpenBSD) ProjectURL: http://www.openbsd.org/ -Version: 4.4 +Version: 4.5 License: BSD Modified: projects/ppc64/contrib/ntp/ntpd/ntp_io.c ============================================================================== --- projects/ppc64/contrib/ntp/ntpd/ntp_io.c Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/contrib/ntp/ntpd/ntp_io.c Wed Dec 9 22:27:12 2009 (r200320) @@ -65,6 +65,12 @@ #endif /* IPV6 Multicast Support */ #endif /* IPv6 Support */ +#ifdef INCLUDE_IPV6_SUPPORT +#include +#include +#include +#endif /* !INCLUDE_IPV6_SUPPORT */ + extern int listen_to_virtual_ips; extern const char *specific_interface; @@ -1137,6 +1143,36 @@ set_wildcard_reuse(int family, int on) } #endif /* OS_NEEDS_REUSEADDR_FOR_IFADDRBIND */ +#ifdef INCLUDE_IPV6_SUPPORT +static isc_boolean_t +is_anycast(struct sockaddr *sa, char *name) +{ +#if defined(SIOCGIFAFLAG_IN6) && defined(IN6_IFF_ANYCAST) + struct in6_ifreq ifr6; + int fd; + u_int32_t flags6; + + if (sa->sa_family != AF_INET6) + return ISC_FALSE; + if ((fd = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) + return ISC_FALSE; + memset(&ifr6, 0, sizeof(ifr6)); + memcpy(&ifr6.ifr_addr, (struct sockaddr_in6 *)sa, + sizeof(struct sockaddr_in6)); + strlcpy(ifr6.ifr_name, name, IF_NAMESIZE); + if (ioctl(fd, SIOCGIFAFLAG_IN6, &ifr6) < 0) { + close(fd); + return ISC_FALSE; + } + close(fd); + flags6 = ifr6.ifr_ifru.ifru_flags6; + if ((flags6 & IN6_IFF_ANYCAST) != 0) + return ISC_TRUE; +#endif /* !SIOCGIFAFLAG_IN6 || !IN6_IFF_ANYCAST */ + return ISC_FALSE; +} +#endif /* !INCLUDE_IPV6_SUPPORT */ + /* * update_interface strategy * @@ -1276,6 +1312,11 @@ update_interfaces( if (is_wildcard_addr(&interface.sin)) continue; +#ifdef INCLUDE_IPV6_SUPPORT + if (is_anycast((struct sockaddr *)&interface.sin, isc_if.name)) + continue; +#endif /* !INCLUDE_IPV6_SUPPORT */ + /* * map to local *address* in order * to map all duplicate interfaces to an interface structure Modified: projects/ppc64/crypto/openssl/ssl/s3_lib.c ============================================================================== --- projects/ppc64/crypto/openssl/ssl/s3_lib.c Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/crypto/openssl/ssl/s3_lib.c Wed Dec 9 22:27:12 2009 (r200320) @@ -2592,6 +2592,9 @@ int ssl3_renegotiate(SSL *s) if (s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS) return(0); + if (1) + return(0); + s->s3->renegotiate=1; return(1); } Modified: projects/ppc64/crypto/openssl/ssl/s3_pkt.c ============================================================================== --- projects/ppc64/crypto/openssl/ssl/s3_pkt.c Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/crypto/openssl/ssl/s3_pkt.c Wed Dec 9 22:27:12 2009 (r200320) @@ -983,9 +983,7 @@ start: if (s->msg_callback) s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, s->s3->handshake_fragment, 4, s, s->msg_callback_arg); - if (SSL_is_init_finished(s) && - !(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS) && - !s->s3->renegotiate) + if (0) { ssl3_renegotiate(s); if (ssl3_renegotiate_check(s)) @@ -1116,8 +1114,7 @@ start: /* Unexpected handshake message (Client Hello, or protocol violation) */ if ((s->s3->handshake_fragment_len >= 4) && !s->in_handshake) { - if (((s->state&SSL_ST_MASK) == SSL_ST_OK) && - !(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS)) + if (0) { #if 0 /* worked only because C operator preferences are not as expected (and * because this is not really needed for clients except for detecting Modified: projects/ppc64/crypto/openssl/ssl/s3_srvr.c ============================================================================== --- projects/ppc64/crypto/openssl/ssl/s3_srvr.c Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/crypto/openssl/ssl/s3_srvr.c Wed Dec 9 22:27:12 2009 (r200320) @@ -718,6 +718,13 @@ int ssl3_get_client_hello(SSL *s) #endif STACK_OF(SSL_CIPHER) *ciphers=NULL; + if (s->new_session) + { + al=SSL_AD_HANDSHAKE_FAILURE; + SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, ERR_R_INTERNAL_ERROR); + goto f_err; + } + /* We do this so that we will respond with our native type. * If we are TLSv1 and we get SSLv3, we will respond with TLSv1, * This down switching should be handled by a different method. Modified: projects/ppc64/etc/Makefile ============================================================================== --- projects/ppc64/etc/Makefile Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/etc/Makefile Wed Dec 9 22:27:12 2009 (r200320) @@ -15,7 +15,7 @@ BIN1= auth.conf \ inetd.conf libalias.conf login.access login.conf mac.conf motd \ netconfig network.subr networks newsyslog.conf nsswitch.conf \ phones profile protocols \ - rc rc.bsdextended rc.firewall rc.firewall6 rc.initdiskless \ + rc rc.bsdextended rc.firewall rc.initdiskless \ rc.sendmail rc.shutdown \ rc.subr remote rpc services shells \ sysctl.conf syslog.conf Modified: projects/ppc64/etc/defaults/rc.conf ============================================================================== --- projects/ppc64/etc/defaults/rc.conf Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/etc/defaults/rc.conf Wed Dec 9 22:27:12 2009 (r200320) @@ -118,7 +118,10 @@ firewall_type="UNKNOWN" # Firewall type firewall_quiet="NO" # Set to YES to suppress rule display firewall_logging="NO" # Set to YES to enable events logging firewall_flags="" # Flags passed to ipfw when type is a file -firewall_client_net="192.0.2.0/24" # Network address for "client" firewall. +firewall_client_net="192.0.2.0/24" # IPv4 Network address for "client" + # firewall. +#firewall_client_net_ipv6="2001:db8:2:1::/64" # IPv6 network prefix for + # "client" firewall. firewall_simple_iif="ed1" # Inside network interface for "simple" # firewall. firewall_simple_inet="192.0.2.16/28" # Inside network address for "simple" @@ -127,12 +130,22 @@ firewall_simple_oif="ed0" # Outside netw # firewall. firewall_simple_onet="192.0.2.0/28" # Outside network address for "simple" # firewall. +#firewall_simple_iif_ipv6="ed1" # Inside IPv6 network interface for "simple" + # firewall. +#firewall_simple_inet_ipv6="2001:db8:2:800::/56" # Inside IPv6 network prefix + # for "simple" firewall. +#firewall_simple_oif_ipv6="ed0" # Outside IPv6 network interface for "simple" + # firewall. +#firewall_simple_onet_ipv6="2001:db8:2:0::/56" # Outside IPv6 network prefix + # for "simple" firewall. firewall_myservices="" # List of TCP ports on which this host # offers services for "workstation" firewall. firewall_allowservices="" # List of IPs which have access to # $firewall_myservices for "workstation" # firewall. -firewall_trusted="" # List of IPs which have full access to this +firewall_trusted="" # List of IPv4s which have full access to this + # host for "workstation" firewall. +firewall_trusted_ipv6="" # List of IPv6s which have full access to this # host for "workstation" firewall. firewall_logdeny="NO" # Set to YES to log default denied incoming # packets for "workstation" firewall. @@ -472,13 +485,6 @@ ipv6_faith_prefix="NO" # Set faith pref # faithd(8) setup. ipv6_ipv4mapping="NO" # Set to "YES" to enable IPv4 mapped IPv6 addr # communication. (like ::ffff:a.b.c.d) -ipv6_firewall_enable="NO" # Set to YES to enable IPv6 firewall - # functionality -ipv6_firewall_script="/etc/rc.firewall6" # Which script to run to set up the IPv6 firewall -ipv6_firewall_type="UNKNOWN" # IPv6 Firewall type (see /etc/rc.firewall6) -ipv6_firewall_quiet="NO" # Set to YES to suppress rule display -ipv6_firewall_logging="NO" # Set to YES to enable events logging -ipv6_firewall_flags="" # Flags passed to ip6fw when type is a file ipv6_ipfilter_rules="/etc/ipf6.rules" # rules definition file for ipfilter, # see /usr/src/contrib/ipfilter/rules # for examples Modified: projects/ppc64/etc/mtree/BSD.var.dist ============================================================================== --- projects/ppc64/etc/mtree/BSD.var.dist Wed Dec 9 22:10:45 2009 (r200319) +++ projects/ppc64/etc/mtree/BSD.var.dist Wed Dec 9 22:27:12 2009 (r200320) @@ -32,7 +32,7 @@ db entropy uname=operator gname=operator mode=0700 .. *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Wed Dec 9 22:28:08 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BB0CC1065695; Wed, 9 Dec 2009 22:28:08 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A91D18FC14; Wed, 9 Dec 2009 22:28:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id nB9MS89d041388; Wed, 9 Dec 2009 22:28:08 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id nB9MS8dp041383; Wed, 9 Dec 2009 22:28:08 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <200912092228.nB9MS8dp041383@svn.freebsd.org> From: Nathan Whitehorn Date: Wed, 9 Dec 2009 22:28:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r200321 - projects/ppc64/sys/compat/freebsd32 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Dec 2009 22:28:08 -0000 Author: nwhitehorn Date: Wed Dec 9 22:28:08 2009 New Revision: 200321 URL: http://svn.freebsd.org/changeset/base/200321 Log: Regen after addition of ACL syscalls. Modified: projects/ppc64/sys/compat/freebsd32/freebsd32_proto.h projects/ppc64/sys/compat/freebsd32/freebsd32_syscall.h projects/ppc64/sys/compat/freebsd32/freebsd32_syscalls.c projects/ppc64/sys/compat/freebsd32/freebsd32_sysent.c Modified: projects/ppc64/sys/compat/freebsd32/freebsd32_proto.h ============================================================================== --- projects/ppc64/sys/compat/freebsd32/freebsd32_proto.h Wed Dec 9 22:27:12 2009 (r200320) +++ projects/ppc64/sys/compat/freebsd32/freebsd32_proto.h Wed Dec 9 22:28:08 2009 (r200321) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: projects/ppc64/sys/compat/freebsd32/syscalls.master 199600 2009-11-20 17:16:33Z nwhitehorn + * created from FreeBSD: projects/ppc64/sys/compat/freebsd32/syscalls.master 200320 2009-12-09 22:27:12Z nwhitehorn */ #ifndef _FREEBSD32_SYSPROTO_H_ Modified: projects/ppc64/sys/compat/freebsd32/freebsd32_syscall.h ============================================================================== --- projects/ppc64/sys/compat/freebsd32/freebsd32_syscall.h Wed Dec 9 22:27:12 2009 (r200320) +++ projects/ppc64/sys/compat/freebsd32/freebsd32_syscall.h Wed Dec 9 22:28:08 2009 (r200321) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: projects/ppc64/sys/compat/freebsd32/syscalls.master 199600 2009-11-20 17:16:33Z nwhitehorn + * created from FreeBSD: projects/ppc64/sys/compat/freebsd32/syscalls.master 200320 2009-12-09 22:27:12Z nwhitehorn */ #define FREEBSD32_SYS_syscall 0 @@ -311,6 +311,10 @@ #define FREEBSD32_SYS_freebsd32_getcontext 421 #define FREEBSD32_SYS_freebsd32_setcontext 422 #define FREEBSD32_SYS_freebsd32_swapcontext 423 +#define FREEBSD32_SYS___acl_get_link 425 +#define FREEBSD32_SYS___acl_set_link 426 +#define FREEBSD32_SYS___acl_delete_link 427 +#define FREEBSD32_SYS___acl_aclcheck_link 428 #define FREEBSD32_SYS_sigwait 429 #define FREEBSD32_SYS_thr_exit 431 #define FREEBSD32_SYS_thr_self 432 Modified: projects/ppc64/sys/compat/freebsd32/freebsd32_syscalls.c ============================================================================== --- projects/ppc64/sys/compat/freebsd32/freebsd32_syscalls.c Wed Dec 9 22:27:12 2009 (r200320) +++ projects/ppc64/sys/compat/freebsd32/freebsd32_syscalls.c Wed Dec 9 22:28:08 2009 (r200321) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: projects/ppc64/sys/compat/freebsd32/syscalls.master 199600 2009-11-20 17:16:33Z nwhitehorn + * created from FreeBSD: projects/ppc64/sys/compat/freebsd32/syscalls.master 200320 2009-12-09 22:27:12Z nwhitehorn */ const char *freebsd32_syscallnames[] = { @@ -435,10 +435,10 @@ const char *freebsd32_syscallnames[] = { "freebsd32_setcontext", /* 422 = freebsd32_setcontext */ "freebsd32_swapcontext", /* 423 = freebsd32_swapcontext */ "#424", /* 424 = swapoff */ - "#425", /* 425 = __acl_get_link */ - "#426", /* 426 = __acl_set_link */ - "#427", /* 427 = __acl_delete_link */ - "#428", /* 428 = __acl_aclcheck_link */ + "__acl_get_link", /* 425 = __acl_get_link */ + "__acl_set_link", /* 426 = __acl_set_link */ + "__acl_delete_link", /* 427 = __acl_delete_link */ + "__acl_aclcheck_link", /* 428 = __acl_aclcheck_link */ "sigwait", /* 429 = sigwait */ "#430", /* 430 = thr_create; */ "thr_exit", /* 431 = thr_exit */ Modified: projects/ppc64/sys/compat/freebsd32/freebsd32_sysent.c ============================================================================== --- projects/ppc64/sys/compat/freebsd32/freebsd32_sysent.c Wed Dec 9 22:27:12 2009 (r200320) +++ projects/ppc64/sys/compat/freebsd32/freebsd32_sysent.c Wed Dec 9 22:28:08 2009 (r200321) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: projects/ppc64/sys/compat/freebsd32/syscalls.master 199600 2009-11-20 17:16:33Z nwhitehorn + * created from FreeBSD: projects/ppc64/sys/compat/freebsd32/syscalls.master 200320 2009-12-09 22:27:12Z nwhitehorn */ #include "opt_compat.h" @@ -472,10 +472,10 @@ struct sysent freebsd32_sysent[] = { { AS(freebsd32_setcontext_args), (sy_call_t *)freebsd32_setcontext, AUE_NULL, NULL, 0, 0, 0 }, /* 422 = freebsd32_setcontext */ { AS(freebsd32_swapcontext_args), (sy_call_t *)freebsd32_swapcontext, AUE_NULL, NULL, 0, 0, 0 }, /* 423 = freebsd32_swapcontext */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 424 = swapoff */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 425 = __acl_get_link */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 426 = __acl_set_link */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 427 = __acl_delete_link */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 428 = __acl_aclcheck_link */ + { AS(__acl_get_link_args), (sy_call_t *)__acl_get_link, AUE_NULL, NULL, 0, 0, 0 }, /* 425 = __acl_get_link */ + { AS(__acl_set_link_args), (sy_call_t *)__acl_set_link, AUE_NULL, NULL, 0, 0, 0 }, /* 426 = __acl_set_link */ + { AS(__acl_delete_link_args), (sy_call_t *)__acl_delete_link, AUE_NULL, NULL, 0, 0, 0 }, /* 427 = __acl_delete_link */ + { AS(__acl_aclcheck_link_args), (sy_call_t *)__acl_aclcheck_link, AUE_NULL, NULL, 0, 0, 0 }, /* 428 = __acl_aclcheck_link */ { AS(sigwait_args), (sy_call_t *)sigwait, AUE_SIGWAIT, NULL, 0, 0, 0 }, /* 429 = sigwait */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 430 = thr_create; */ { AS(thr_exit_args), (sy_call_t *)thr_exit, AUE_NULL, NULL, 0, 0, 0 }, /* 431 = thr_exit */ From owner-svn-src-projects@FreeBSD.ORG Thu Dec 10 01:42:44 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EB75D1065695; Thu, 10 Dec 2009 01:42:44 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C1D708FC08; Thu, 10 Dec 2009 01:42:44 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id nBA1giaF046939; Thu, 10 Dec 2009 01:42:44 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id nBA1gilB046936; Thu, 10 Dec 2009 01:42:44 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <200912100142.nBA1gilB046936@svn.freebsd.org> From: Warner Losh Date: Thu, 10 Dec 2009 01:42:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r200342 - projects/mips/sys/mips/mips X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Dec 2009 01:42:45 -0000 Author: imp Date: Thu Dec 10 01:42:44 2009 New Revision: 200342 URL: http://svn.freebsd.org/changeset/base/200342 Log: app_descriptor_addr is unused (I know it is referened still). And unnecessary since we pass in a3 unmodified to platform_start. Eliminate it from here and kill one more TARGET_OCTEON in the process. Modified: projects/mips/sys/mips/mips/locore.S projects/mips/sys/mips/mips/machdep.c Modified: projects/mips/sys/mips/mips/locore.S ============================================================================== --- projects/mips/sys/mips/mips/locore.S Thu Dec 10 01:01:53 2009 (r200341) +++ projects/mips/sys/mips/mips/locore.S Thu Dec 10 01:42:44 2009 (r200342) @@ -83,10 +83,6 @@ GLOBAL(cfe_handle) GLOBAL(cfe_vector) .space 4 #endif -#if defined(TARGET_OCTEON) -GLOBAL(app_descriptor_addr) - .space 8 -#endif GLOBAL(stackspace) .space NBPG /* Smaller than it should be since it's temp. */ .align 8 @@ -190,10 +186,6 @@ VECTOR(_locore, unknown) sw a2, _C_LABEL(cfe_vector)/* Firmware entry vector */ no_cfe: #endif -#if defined(TARGET_OCTEON) - PTR_LA a0, app_descriptor_addr - sw a3, 0(a0) /* Store app descriptor ptr */ -#endif /* * The following needs to be done differently for each platform and @@ -203,6 +195,7 @@ no_cfe: /* * Block all the slave CPUs */ + /* XXX a0, a1, a2 shouldn't be used here */ /* * Read the cpu id from the cp0 config register * cpuid[9:4], thrid[3: 0] Modified: projects/mips/sys/mips/mips/machdep.c ============================================================================== --- projects/mips/sys/mips/mips/machdep.c Thu Dec 10 01:01:53 2009 (r200341) +++ projects/mips/sys/mips/mips/machdep.c Thu Dec 10 01:42:44 2009 (r200342) @@ -154,7 +154,6 @@ extern char edata[], end[]; u_int32_t bootdev; struct bootinfo bootinfo; - static void cpu_startup(void *dummy) { @@ -259,17 +258,11 @@ SYSCTL_INT(_machdep, CPU_WALLCLOCK, wall void mips_proc0_init(void) { - proc_linkup(&proc0, &thread0); + proc_linkup0(&proc0, &thread0); thread0.td_kstack = kstack0; thread0.td_kstack_pages = KSTACK_PAGES - 1; thread0.td_md.md_realstack = roundup2(thread0.td_kstack, PAGE_SIZE * 2); - /* Initialize pcpu info of cpu-zero */ -#ifdef SMP - pcpu_init(&__pcpu[0], 0, sizeof(struct pcpu)); -#else - pcpu_init(pcpup, 0, sizeof(struct pcpu)); -#endif /* * Do not use cpu_thread_alloc to initialize these fields * thread0 is the only thread that has kstack located in KSEG0 @@ -279,6 +272,13 @@ mips_proc0_init(void) (thread0.td_kstack_pages - 1) * PAGE_SIZE) - 1; thread0.td_frame = &thread0.td_pcb->pcb_regs; + /* Initialize pcpu info of cpu-zero */ +#ifdef SMP + pcpu_init(&__pcpu[0], 0, sizeof(struct pcpu)); +#else + pcpu_init(pcpup, 0, sizeof(struct pcpu)); +#endif + /* Steal memory for the dynamic per-cpu area. */ dpcpu_init((void *)pmap_steal_memory(DPCPU_SIZE), 0); @@ -295,7 +295,7 @@ mips_proc0_init(void) void cpu_initclocks(void) { - platform_initclocks(); + platform_initclocks(); } struct msgbuf *msgbufp=0; From owner-svn-src-projects@FreeBSD.ORG Thu Dec 10 01:44:11 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 95FDB106566B; Thu, 10 Dec 2009 01:44:11 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 862358FC14; Thu, 10 Dec 2009 01:44:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id nBA1iBVg047012; Thu, 10 Dec 2009 01:44:11 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id nBA1iB15047010; Thu, 10 Dec 2009 01:44:11 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <200912100144.nBA1iB15047010@svn.freebsd.org> From: Warner Losh Date: Thu, 10 Dec 2009 01:44:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r200343 - projects/mips/sys/mips/include X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Dec 2009 01:44:11 -0000 Author: imp Date: Thu Dec 10 01:44:11 2009 New Revision: 200343 URL: http://svn.freebsd.org/changeset/base/200343 Log: Get the sense of this right. We use uintpr_t for bus_addr_t when we're building everything except octeon && 32-bit. As note before, we need a clearner way, but at least now the hack is right. Modified: projects/mips/sys/mips/include/_bus.h Modified: projects/mips/sys/mips/include/_bus.h ============================================================================== --- projects/mips/sys/mips/include/_bus.h Thu Dec 10 01:42:44 2009 (r200342) +++ projects/mips/sys/mips/include/_bus.h Thu Dec 10 01:44:11 2009 (r200343) @@ -35,7 +35,7 @@ * Bus address and size types */ #include "opt_cputype.h" -#if !(defined(TARGET_OCTEON) || defined(ISA_MIPS32)) +#if !(defined(TARGET_OCTEON) && defined(ISA_MIPS32)) typedef uintptr_t bus_addr_t; #else typedef uint64_t bus_addr_t; From owner-svn-src-projects@FreeBSD.ORG Thu Dec 10 01:45:06 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 56E29106566B; Thu, 10 Dec 2009 01:45:06 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 463B18FC16; Thu, 10 Dec 2009 01:45:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id nBA1j668047077; Thu, 10 Dec 2009 01:45:06 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id nBA1j60o047075; Thu, 10 Dec 2009 01:45:06 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <200912100145.nBA1j60o047075@svn.freebsd.org> From: Warner Losh Date: Thu, 10 Dec 2009 01:45:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r200344 - projects/mips/sys/mips/octeon1 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Dec 2009 01:45:06 -0000 Author: imp Date: Thu Dec 10 01:45:06 2009 New Revision: 200344 URL: http://svn.freebsd.org/changeset/base/200344 Log: Hook up parsing of the boot records. Modified: projects/mips/sys/mips/octeon1/octeon_machdep.c Modified: projects/mips/sys/mips/octeon1/octeon_machdep.c ============================================================================== --- projects/mips/sys/mips/octeon1/octeon_machdep.c Thu Dec 10 01:44:11 2009 (r200343) +++ projects/mips/sys/mips/octeon1/octeon_machdep.c Thu Dec 10 01:45:06 2009 (r200344) @@ -80,6 +80,8 @@ __FBSDID("$FreeBSD$"); extern int *edata; extern int *end; +static void octeon_boot_params_init(register_t ptr); + void platform_cpu_init() { @@ -669,7 +671,7 @@ void ciu_enable_interrupts (int core_num void platform_start(__register_t a0, __register_t a1, - __register_t a2 __unused, __register_t a3 __unused) + __register_t a2 __unused, __register_t a3) { uint64_t platform_counter_freq; vm_offset_t kernend; @@ -681,10 +683,11 @@ platform_start(__register_t a0, __regist kernend = round_page((vm_offset_t)&end); memset(&edata, 0, kernend - (vm_offset_t)(&edata)); + octeon_boot_params_init(a3); + /* XXX octeon boot decriptor has args in it... */ octeon_ciu_reset(); octeon_uart_write_string(0, "Platform Starting\n"); -/* From here on down likely is bogus */ /* * Looking for mem=XXM argument */ @@ -702,9 +705,8 @@ platform_start(__register_t a0, __regist else realmem = btoc(32 << 20); - for (i = 0; i < 10; i++) { + for (i = 0; i < 10; i++) phys_avail[i] = 0; - } /* phys_avail regions are in bytes */ phys_avail[0] = MIPS_KSEG0_TO_PHYS((vm_offset_t)&end); @@ -712,31 +714,20 @@ platform_start(__register_t a0, __regist physmem = realmem; - /* - * ns8250 uart code uses DELAY so ticker should be inititalized - * before cninit. And tick_init_params refers to hz, so * init_param1 - * should be called first. - */ + pmap_bootstrap(); + mips_proc0_init(); + init_param1(); /* TODO: parse argc,argv */ platform_counter_freq = 330000000UL; /* XXX: from idt */ mips_timer_init_params(platform_counter_freq, 1); cninit(); - /* Panic here, after cninit */ -#if 0 - if (mem == 0) - panic("No mem=XX parameter in arguments"); -#endif - printf("cmd line: "); for (i=0; i < argc; i++) printf("%s ", argv[i]); printf("\n"); - init_param2(physmem); mips_cpu_init(); - pmap_bootstrap(); - mips_proc0_init(); mutex_init(); #ifdef DDB kdb_init(); @@ -773,73 +764,71 @@ platform_start(__register_t a0, __regist typedef struct { - /* Start of block referenced by assembly code - do not change! */ - uint32_t desc_version; - uint32_t desc_size; - - uint64_t stack_top; - uint64_t heap_base; - uint64_t heap_end; - uint64_t entry_point; /* Only used by bootloader */ - uint64_t desc_vaddr; - /* End of This block referenced by assembly code - do not change! */ - - uint32_t exception_base_addr; - uint32_t stack_size; - uint32_t heap_size; - uint32_t argc; /* Argc count for application */ - uint32_t argv[OCTEON_ARGV_MAX_ARGS]; - uint32_t flags; - uint32_t core_mask; - uint32_t dram_size; /**< DRAM size in megabyes */ - uint32_t phy_mem_desc_addr; /**< physical address of free memory descriptor block*/ - uint32_t debugger_flags_base_addr; /**< used to pass flags from app to debugger */ - uint32_t eclock_hz; /**< CPU clock speed, in hz */ - uint32_t dclock_hz; /**< DRAM clock speed, in hz */ - uint32_t spi_clock_hz; /**< SPI4 clock in hz */ - uint16_t board_type; - uint8_t board_rev_major; - uint8_t board_rev_minor; - uint16_t chip_type; - uint8_t chip_rev_major; - uint8_t chip_rev_minor; - char board_serial_number[OCTOEN_SERIAL_LEN]; - uint8_t mac_addr_base[6]; - uint8_t mac_addr_count; - uint64_t cvmx_desc_vaddr; - + /* Start of block referenced by assembly code - do not change! */ + uint32_t desc_version; + uint32_t desc_size; + + uint64_t stack_top; + uint64_t heap_base; + uint64_t heap_end; + uint64_t entry_point; /* Only used by bootloader */ + uint64_t desc_vaddr; + /* End of This block referenced by assembly code - do not change! */ + + uint32_t exception_base_addr; + uint32_t stack_size; + uint32_t heap_size; + uint32_t argc; /* Argc count for application */ + uint32_t argv[OCTEON_ARGV_MAX_ARGS]; + uint32_t flags; + uint32_t core_mask; + uint32_t dram_size; /**< DRAM size in megabyes */ + uint32_t phy_mem_desc_addr; /**< physical address of free memory descriptor block*/ + uint32_t debugger_flags_base_addr; /**< used to pass flags from app to debugger */ + uint32_t eclock_hz; /**< CPU clock speed, in hz */ + uint32_t dclock_hz; /**< DRAM clock speed, in hz */ + uint32_t spi_clock_hz; /**< SPI4 clock in hz */ + uint16_t board_type; + uint8_t board_rev_major; + uint8_t board_rev_minor; + uint16_t chip_type; + uint8_t chip_rev_major; + uint8_t chip_rev_minor; + char board_serial_number[OCTOEN_SERIAL_LEN]; + uint8_t mac_addr_base[6]; + uint8_t mac_addr_count; + uint64_t cvmx_desc_vaddr; } octeon_boot_descriptor_t; typedef struct { - uint32_t major_version; - uint32_t minor_version; - - uint64_t stack_top; - uint64_t heap_base; - uint64_t heap_end; - uint64_t desc_vaddr; - - uint32_t exception_base_addr; - uint32_t stack_size; - uint32_t flags; - uint32_t core_mask; - uint32_t dram_size; /**< DRAM size in megabyes */ - uint32_t phy_mem_desc_addr; /**< physical address of free memory descriptor block*/ - uint32_t debugger_flags_base_addr; /**< used to pass flags from app to debugger */ - uint32_t eclock_hz; /**< CPU clock speed, in hz */ - uint32_t dclock_hz; /**< DRAM clock speed, in hz */ - uint32_t spi_clock_hz; /**< SPI4 clock in hz */ - uint16_t board_type; - uint8_t board_rev_major; - uint8_t board_rev_minor; - uint16_t chip_type; - uint8_t chip_rev_major; - uint8_t chip_rev_minor; - char board_serial_number[OCTOEN_SERIAL_LEN]; - uint8_t mac_addr_base[6]; - uint8_t mac_addr_count; + uint32_t major_version; + uint32_t minor_version; + uint64_t stack_top; + uint64_t heap_base; + uint64_t heap_end; + uint64_t desc_vaddr; + + uint32_t exception_base_addr; + uint32_t stack_size; + uint32_t flags; + uint32_t core_mask; + uint32_t dram_size; /**< DRAM size in megabyes */ + uint32_t phy_mem_desc_addr; /**< physical address of free memory descriptor block*/ + uint32_t debugger_flags_base_addr; /**< used to pass flags from app to debugger */ + uint32_t eclock_hz; /**< CPU clock speed, in hz */ + uint32_t dclock_hz; /**< DRAM clock speed, in hz */ + uint32_t spi_clock_hz; /**< SPI4 clock in hz */ + uint16_t board_type; + uint8_t board_rev_major; + uint8_t board_rev_minor; + uint16_t chip_type; + uint8_t chip_rev_major; + uint8_t chip_rev_minor; + char board_serial_number[OCTOEN_SERIAL_LEN]; + uint8_t mac_addr_base[6]; + uint8_t mac_addr_count; } cvmx_bootinfo_t; uint32_t octeon_cpu_clock; @@ -849,11 +838,7 @@ uint8_t octeon_mac_addr[6] = { 0 }; int octeon_core_mask, octeon_mac_addr_count; int octeon_chip_rev_major = 0, octeon_chip_rev_minor = 0, octeon_chip_type = 0; -#if defined(__mips_n64) -extern uint64_t app_descriptor_addr; -#else -extern uint32_t app_descriptor_addr; -#endif +extern int32_t app_descriptor_addr; static octeon_boot_descriptor_t *app_desc_ptr; static cvmx_bootinfo_t *cvmx_desc_ptr; @@ -867,47 +852,49 @@ static cvmx_bootinfo_t *cvmx_desc_ptr; #define OCTEON_DRAM_MAX 3000 -int octeon_board_real (void) +int +octeon_board_real(void) { - if ((octeon_board_type == OCTEON_BOARD_TYPE_NONE) || - (octeon_board_type == OCTEON_BOARD_TYPE_SIM) || - !octeon_board_rev_major) { - return 0; - } - return 1; + if ((octeon_board_type == OCTEON_BOARD_TYPE_NONE) || + (octeon_board_type == OCTEON_BOARD_TYPE_SIM) || + !octeon_board_rev_major) + return 0; + return 1; } -static void octeon_process_app_desc_ver_unknown (void) +static void +octeon_process_app_desc_ver_unknown(void) { printf(" Unknown Boot-Descriptor: Using Defaults\n"); octeon_cpu_clock = OCTEON_CLOCK_DEFAULT; octeon_dram = OCTEON_DRAM_DEFAULT; octeon_board_rev_major = octeon_board_rev_minor = octeon_board_type = 0; - octeon_core_mask = 1; octeon_cpu_clock = OCTEON_CLOCK_DEFAULT; octeon_chip_type = octeon_chip_rev_major = octeon_chip_rev_minor = 0; - octeon_mac_addr[0] = 0x00; octeon_mac_addr[1] = 0x0f; octeon_mac_addr[2] = 0xb7; octeon_mac_addr[3] = 0x10; octeon_mac_addr[4] = 0x09; octeon_mac_addr[5] = 0x06; octeon_mac_addr_count = 1; } -static int octeon_process_app_desc_ver_6 (void) +static int +octeon_process_app_desc_ver_6(void) { - cvmx_desc_ptr = (cvmx_bootinfo_t *) ((long) app_desc_ptr->cvmx_desc_vaddr); - - if ((cvmx_desc_ptr == NULL) || (cvmx_desc_ptr == (cvmx_bootinfo_t *)0xffffffff)) { + /* XXX Why is 0x00000000ffffffffULL a bad value? */ + if (app_desc_ptr->cvmx_desc_vaddr == 0 || + app_desc_ptr->cvmx_desc_vaddr == 0xfffffffful) { printf ("Bad cvmx_desc_ptr %p\n", cvmx_desc_ptr); return 1; - } - - cvmx_desc_ptr = (cvmx_bootinfo_t *) (((long) cvmx_desc_ptr) | MIPS_KSEG0_START); + } + cvmx_desc_ptr = + (cvmx_bootinfo_t *)(intptr_t)app_desc_ptr->cvmx_desc_vaddr; + cvmx_desc_ptr = + (cvmx_bootinfo_t *) ((intptr_t)cvmx_desc_ptr | MIPS_KSEG0_START); octeon_cvmx_bd_ver = (cvmx_desc_ptr->major_version * 100) + - cvmx_desc_ptr->minor_version; - + cvmx_desc_ptr->minor_version; + /* Too early for panic? */ if (cvmx_desc_ptr->major_version != 1) { printf("Incompatible CVMX descriptor from bootloader: %d.%d %p\n", (int) cvmx_desc_ptr->major_version, @@ -932,31 +919,28 @@ static int octeon_process_app_desc_ver_6 octeon_mac_addr[5] = cvmx_desc_ptr->mac_addr_base[5]; octeon_mac_addr_count = cvmx_desc_ptr->mac_addr_count; - if (app_desc_ptr->dram_size > 16*1024*1024) { + if (app_desc_ptr->dram_size > 16*1024*1024) octeon_dram = (uint64_t)app_desc_ptr->dram_size; - } else { - octeon_dram = (uint64_t)app_desc_ptr->dram_size * 1024 * 1024; - } + else + octeon_dram = (uint64_t)app_desc_ptr->dram_size << 20; return 0; } -static int octeon_process_app_desc_ver_3_4_5 (void) +static int +octeon_process_app_desc_ver_3_4_5(void) { octeon_cvmx_bd_ver = octeon_bd_ver; octeon_core_mask = app_desc_ptr->core_mask; - if (app_desc_ptr->desc_version > 3) { + if (app_desc_ptr->desc_version > 3) octeon_cpu_clock = app_desc_ptr->eclock_hz; - } else { + else octeon_cpu_clock = OCTEON_CLOCK_DEFAULT; - } - - if (app_desc_ptr->dram_size > 16*1024*1024) { + if (app_desc_ptr->dram_size > 16*1024*1024) octeon_dram = (uint64_t)app_desc_ptr->dram_size; - } else { - octeon_dram = (uint64_t)app_desc_ptr->dram_size * 1024 * 1024; - } + else + octeon_dram = (uint64_t)app_desc_ptr->dram_size << 20; if (app_desc_ptr->desc_version > 4) { octeon_board_type = app_desc_ptr->board_type; @@ -978,31 +962,21 @@ static int octeon_process_app_desc_ver_3 } -void mips_boot_params_init(void); - -void mips_boot_params_init (void) +static void +octeon_boot_params_init(register_t ptr) { - int descriptor_not_parsed = 1; - - if ((app_descriptor_addr == 0) || (app_descriptor_addr >= MAX_APP_DESC_ADDR)) { - - } else { + int bad_desc = 1; - app_desc_ptr = (octeon_boot_descriptor_t *) app_descriptor_addr; + if (ptr != 0 && ptr < MAX_APP_DESC_ADDR) { + app_desc_ptr = (octeon_boot_descriptor_t *)(intptr_t)ptr; octeon_bd_ver = app_desc_ptr->desc_version; - - if ((octeon_bd_ver >= 3) && (octeon_bd_ver <= 5)) { - descriptor_not_parsed = octeon_process_app_desc_ver_3_4_5(); - - } else if (app_desc_ptr->desc_version == 6) { - descriptor_not_parsed = octeon_process_app_desc_ver_6(); - } - + if ((octeon_bd_ver >= 3) && (octeon_bd_ver <= 5)) + bad_desc = octeon_process_app_desc_ver_3_4_5(); + else if (app_desc_ptr->desc_version == 6) + bad_desc = octeon_process_app_desc_ver_6(); } - - if (descriptor_not_parsed) { + if (bad_desc) octeon_process_app_desc_ver_unknown(); - } printf("Boot Descriptor Ver: %u -> %u/%u", octeon_bd_ver, octeon_cvmx_bd_ver/100, octeon_cvmx_bd_ver%100); From owner-svn-src-projects@FreeBSD.ORG Thu Dec 10 04:27:10 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B0573106566B; Thu, 10 Dec 2009 04:27:10 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9D4EC8FC0A; Thu, 10 Dec 2009 04:27:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id nBA4RATO050678; Thu, 10 Dec 2009 04:27:10 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id nBA4RAed050674; Thu, 10 Dec 2009 04:27:10 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <200912100427.nBA4RAed050674@svn.freebsd.org> From: Nathan Whitehorn Date: Thu, 10 Dec 2009 04:27:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r200347 - in projects/ppc64/sys: conf powerpc/aim X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Dec 2009 04:27:10 -0000 Author: nwhitehorn Date: Thu Dec 10 04:27:10 2009 New Revision: 200347 URL: http://svn.freebsd.org/changeset/base/200347 Log: Sprinkle about a little bit of naming symmetry between 32 and 64-bit assembly files. Added: projects/ppc64/sys/powerpc/aim/swtch32.S - copied unchanged from r200319, projects/ppc64/sys/powerpc/aim/swtch.S projects/ppc64/sys/powerpc/aim/trap_subr32.S - copied unchanged from r200319, projects/ppc64/sys/powerpc/aim/trap_subr.S Deleted: projects/ppc64/sys/powerpc/aim/swtch.S projects/ppc64/sys/powerpc/aim/trap_subr.S Modified: projects/ppc64/sys/conf/files.powerpc projects/ppc64/sys/powerpc/aim/locore32.S Modified: projects/ppc64/sys/conf/files.powerpc ============================================================================== --- projects/ppc64/sys/conf/files.powerpc Thu Dec 10 03:09:35 2009 (r200346) +++ projects/ppc64/sys/conf/files.powerpc Thu Dec 10 04:27:10 2009 (r200347) @@ -82,7 +82,7 @@ powerpc/aim/nexus.c optional aim powerpc/aim/ofw_machdep.c optional aim powerpc/aim/ofwmagic.S optional aim powerpc/aim/platform_chrp.c optional aim -powerpc/aim/swtch.S optional aim +powerpc/aim/swtch32.S optional aim powerpc/aim/trap.c optional aim powerpc/aim/uma_machdep.c optional aim powerpc/aim/vm_machdep.c optional aim Modified: projects/ppc64/sys/powerpc/aim/locore32.S ============================================================================== --- projects/ppc64/sys/powerpc/aim/locore32.S Thu Dec 10 03:09:35 2009 (r200346) +++ projects/ppc64/sys/powerpc/aim/locore32.S Thu Dec 10 04:27:10 2009 (r200347) @@ -206,4 +206,4 @@ setfault: xor 3,3,3 blr -#include +#include Copied: projects/ppc64/sys/powerpc/aim/swtch32.S (from r200319, projects/ppc64/sys/powerpc/aim/swtch.S) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ppc64/sys/powerpc/aim/swtch32.S Thu Dec 10 04:27:10 2009 (r200347, copy of r200319, projects/ppc64/sys/powerpc/aim/swtch.S) @@ -0,0 +1,202 @@ +/* $FreeBSD$ */ +/* $NetBSD: locore.S,v 1.24 2000/05/31 05:09:17 thorpej Exp $ */ + +/*- + * Copyright (C) 2001 Benno Rice + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY Benno Rice ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/*- + * Copyright (C) 1995, 1996 Wolfgang Solfrank. + * Copyright (C) 1995, 1996 TooLs GmbH. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by TooLs GmbH. + * 4. The name of TooLs GmbH may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "assym.s" +#include "opt_sched.h" + +#include + +#include +#include +#include +#include +#include + +/* + * void cpu_throw(struct thread *old, struct thread *new) + */ +ENTRY(cpu_throw) + mr %r15, %r4 + b cpu_switchin + +/* + * void cpu_switch(struct thread *old, + * struct thread *new, + * struct mutex *mtx); + * + * Switch to a new thread saving the current state in the old thread. + */ +ENTRY(cpu_switch) + lwz %r6,TD_PCB(%r3) /* Get the old thread's PCB ptr */ + 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(%r6) + mflr %r16 /* Save the link register */ + stw %r16,PCB_LR(%r6) + mfsr %r16,USER_SR /* Save USER_SR for copyin/out */ + isync + stw %r16,PCB_AIM_USR_VSID(%r6) + stw %r1,PCB_SP(%r6) /* Save the stack pointer */ + stw %r2,PCB_TOC(%r6) /* Save the TOC 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 %r7,PCB_FLAGS(%r17) + /* Save FPU context if needed */ + andi. %r7, %r7, PCB_FPU + beq .L1 + bl save_fpu + +.L1: + mr %r3,%r14 /* restore old thread ptr */ + lwz %r7,PCB_FLAGS(%r17) + /* Save Altivec context if needed */ + andi. %r7, %r7, PCB_VEC + beq .L2 + bl save_vec + +.L2: + 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@ha + addi %r6,%r6,blocked_lock@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 */ + stw %r17,PC_CURPCB(%r7) + + mr %r3,%r15 /* Get new thread ptr */ + bl pmap_activate /* Activate the new address space */ + + lwz %r6, PCB_FLAGS(%r17) + /* Restore FPU context if needed */ + andi. %r6, %r6, PCB_FPU + beq .L3 + mr %r3,%r15 /* Pass curthread to enable_fpu */ + bl enable_fpu + +.L3: + lwz %r6, PCB_FLAGS(%r17) + /* Restore Altivec context if needed */ + andi. %r6, %r6, PCB_VEC + beq .L4 + mr %r3,%r15 /* Pass curthread to enable_vec */ + bl enable_vec + + /* thread to restore is in r3 */ +.L4: + mr %r3,%r17 /* Recover PCB ptr */ + lmw %r12,PCB_CONTEXT(%r3) /* Load the non-volatile GP regs */ + lwz %r5,PCB_CR(%r3) /* Load the condition register */ + mtcr %r5 + lwz %r5,PCB_LR(%r3) /* Load the link register */ + mtlr %r5 + lwz %r5,PCB_AIM_USR_VSID(%r3) /* Load the USER_SR segment reg */ + mtsr USER_SR,%r5 + isync + lwz %r1,PCB_SP(%r3) /* Load the stack pointer */ + lwz %r2,PCB_TOC(%r3) /* Load the TOC pointer */ + /* + * Perform a dummy stwcx. to clear any reservations we may have + * inherited from the previous thread. It doesn't matter if the + * stwcx succeeds or not. pcb_context[0] can be clobbered. + */ + stwcx. %r1, 0, %r3 + blr + +/* + * savectx(pcb) + * Update pcb, saving current processor state + */ +ENTRY(savectx) + stmw %r12,PCB_CONTEXT(%r3) /* Save the non-volatile GP regs */ + mfcr %r4 /* Save the condition register */ + stw %r4,PCB_CR(%r3) + blr + +/* + * fork_trampoline() + * Set up the return from cpu_fork() + */ +ENTRY(fork_trampoline) + lwz %r3,CF_FUNC(%r1) + lwz %r4,CF_ARG0(%r1) + lwz %r5,CF_ARG1(%r1) + bl fork_exit + addi %r1,%r1,CF_SIZE-FSP /* Allow 8 bytes in front of + trapframe to simulate FRAME_SETUP + does when allocating space for + a frame pointer/saved LR */ + b trapexit Copied: projects/ppc64/sys/powerpc/aim/trap_subr32.S (from r200319, projects/ppc64/sys/powerpc/aim/trap_subr.S) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ppc64/sys/powerpc/aim/trap_subr32.S Thu Dec 10 04:27:10 2009 (r200347, copy of r200319, projects/ppc64/sys/powerpc/aim/trap_subr.S) @@ -0,0 +1,677 @@ +/* $FreeBSD$ */ +/* $NetBSD: trap_subr.S,v 1.20 2002/04/22 23:20:08 kleink Exp $ */ + +/*- + * Copyright (C) 1995, 1996 Wolfgang Solfrank. + * Copyright (C) 1995, 1996 TooLs GmbH. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by TooLs GmbH. + * 4. The name of TooLs GmbH may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * NOTICE: This is not a standalone file. to use it, #include it in + * your port's locore.S, like so: + * + * #include + */ + +/* + * Save/restore segment registers + */ +#define RESTORE_SRS(pmap,sr) mtsr 0,sr; \ + lwz sr,1*4(pmap); mtsr 1,sr; \ + lwz sr,2*4(pmap); mtsr 2,sr; \ + lwz sr,3*4(pmap); mtsr 3,sr; \ + lwz sr,4*4(pmap); mtsr 4,sr; \ + lwz sr,5*4(pmap); mtsr 5,sr; \ + lwz sr,6*4(pmap); mtsr 6,sr; \ + lwz sr,7*4(pmap); mtsr 7,sr; \ + lwz sr,8*4(pmap); mtsr 8,sr; \ + lwz sr,9*4(pmap); mtsr 9,sr; \ + lwz sr,10*4(pmap); mtsr 10,sr; \ + lwz sr,11*4(pmap); mtsr 11,sr; \ + lwz sr,12*4(pmap); mtsr 12,sr; \ + lwz sr,13*4(pmap); mtsr 13,sr; \ + lwz sr,14*4(pmap); mtsr 14,sr; \ + lwz sr,15*4(pmap); mtsr 15,sr; isync; + +/* + * User SRs are loaded through a pointer to the current pmap. + */ +#define RESTORE_USER_SRS(pmap,sr) \ + GET_CPUINFO(pmap); \ + lwz pmap,PC_CURPMAP(pmap); \ + lwzu sr,PM_SR(pmap); \ + RESTORE_SRS(pmap,sr) + +/* + * Kernel SRs are loaded directly from kernel_pmap_ + */ +#define RESTORE_KERN_SRS(pmap,sr) \ + lis pmap,CNAME(kernel_pmap_store)@ha; \ + lwzu sr,CNAME(kernel_pmap_store)+PM_SR@l(pmap); \ + RESTORE_SRS(pmap,sr) + +/* + * FRAME_SETUP assumes: + * SPRG1 SP (1) + * SPRG3 trap type + * savearea r28-r31,DAR,DSISR (DAR & DSISR only for DSI traps) + * r28 LR + * r29 CR + * r30 scratch + * r31 scratch + * r1 kernel stack + * SRR0/1 as at start of trap + */ +#define FRAME_SETUP(savearea) \ +/* Have to enable translation to allow access of kernel stack: */ \ + GET_CPUINFO(%r31); \ + mfsrr0 %r30; \ + stw %r30,(savearea+CPUSAVE_SRR0)(%r31); /* save SRR0 */ \ + mfsrr1 %r30; \ + stw %r30,(savearea+CPUSAVE_SRR1)(%r31); /* save SRR1 */ \ + mfmsr %r30; \ + ori %r30,%r30,(PSL_DR|PSL_IR|PSL_RI)@l; /* relocation on */ \ + mtmsr %r30; /* stack can now be accessed */ \ + isync; \ + mfsprg1 %r31; /* get saved SP */ \ + stwu %r31,-FRAMELEN(%r1); /* save it in the callframe */ \ + stw %r0, FRAME_0+8(%r1); /* save r0 in the trapframe */ \ + stw %r31,FRAME_1+8(%r1); /* save SP " " */ \ + stw %r2, FRAME_2+8(%r1); /* save r2 " " */ \ + stw %r28,FRAME_LR+8(%r1); /* save LR " " */ \ + stw %r29,FRAME_CR+8(%r1); /* save CR " " */ \ + GET_CPUINFO(%r2); \ + lwz %r28,(savearea+CPUSAVE_R28)(%r2); /* get saved r28 */ \ + lwz %r29,(savearea+CPUSAVE_R29)(%r2); /* get saved r29 */ \ + lwz %r30,(savearea+CPUSAVE_R30)(%r2); /* get saved r30 */ \ + lwz %r31,(savearea+CPUSAVE_R31)(%r2); /* get saved r31 */ \ + stw %r3, FRAME_3+8(%r1); /* save r3-r31 */ \ + stw %r4, FRAME_4+8(%r1); \ + stw %r5, FRAME_5+8(%r1); \ + stw %r6, FRAME_6+8(%r1); \ + stw %r7, FRAME_7+8(%r1); \ + stw %r8, FRAME_8+8(%r1); \ + stw %r9, FRAME_9+8(%r1); \ + stw %r10, FRAME_10+8(%r1); \ + stw %r11, FRAME_11+8(%r1); \ + stw %r12, FRAME_12+8(%r1); \ + stw %r13, FRAME_13+8(%r1); \ + stw %r14, FRAME_14+8(%r1); \ + stw %r15, FRAME_15+8(%r1); \ + stw %r16, FRAME_16+8(%r1); \ + stw %r17, FRAME_17+8(%r1); \ + stw %r18, FRAME_18+8(%r1); \ + stw %r19, FRAME_19+8(%r1); \ + stw %r20, FRAME_20+8(%r1); \ + stw %r21, FRAME_21+8(%r1); \ + stw %r22, FRAME_22+8(%r1); \ + stw %r23, FRAME_23+8(%r1); \ + stw %r24, FRAME_24+8(%r1); \ + stw %r25, FRAME_25+8(%r1); \ + stw %r26, FRAME_26+8(%r1); \ + stw %r27, FRAME_27+8(%r1); \ + stw %r28, FRAME_28+8(%r1); \ + stw %r29, FRAME_29+8(%r1); \ + stw %r30, FRAME_30+8(%r1); \ + stw %r31, FRAME_31+8(%r1); \ + lwz %r28,(savearea+CPUSAVE_AIM_DAR)(%r2); /* saved DAR */ \ + lwz %r29,(savearea+CPUSAVE_AIM_DSISR)(%r2);/* saved DSISR */\ + lwz %r30,(savearea+CPUSAVE_SRR0)(%r2); /* saved SRR0 */ \ + lwz %r31,(savearea+CPUSAVE_SRR1)(%r2); /* saved SRR1 */ \ + mfxer %r3; \ + mfctr %r4; \ + mfsprg3 %r5; \ + stw %r3, FRAME_XER+8(1); /* save xer/ctr/exc */ \ + stw %r4, FRAME_CTR+8(1); \ + stw %r5, FRAME_EXC+8(1); \ + stw %r28,FRAME_AIM_DAR+8(1); \ + stw %r29,FRAME_AIM_DSISR+8(1); /* save dsisr/srr0/srr1 */ \ + stw %r30,FRAME_SRR0+8(1); \ + stw %r31,FRAME_SRR1+8(1) + +#define FRAME_LEAVE(savearea) \ +/* Now restore regs: */ \ + lwz %r2,FRAME_SRR0+8(%r1); \ + lwz %r3,FRAME_SRR1+8(%r1); \ + lwz %r4,FRAME_CTR+8(%r1); \ + lwz %r5,FRAME_XER+8(%r1); \ + lwz %r6,FRAME_LR+8(%r1); \ + GET_CPUINFO(%r7); \ + stw %r2,(savearea+CPUSAVE_SRR0)(%r7); /* save SRR0 */ \ + stw %r3,(savearea+CPUSAVE_SRR1)(%r7); /* save SRR1 */ \ + lwz %r7,FRAME_CR+8(%r1); \ + mtctr %r4; \ + mtxer %r5; \ + mtlr %r6; \ + mtsprg1 %r7; /* save cr */ \ + lwz %r31,FRAME_31+8(%r1); /* restore r0-31 */ \ + lwz %r30,FRAME_30+8(%r1); \ + lwz %r29,FRAME_29+8(%r1); \ + lwz %r28,FRAME_28+8(%r1); \ + lwz %r27,FRAME_27+8(%r1); \ + lwz %r26,FRAME_26+8(%r1); \ + lwz %r25,FRAME_25+8(%r1); \ + lwz %r24,FRAME_24+8(%r1); \ + lwz %r23,FRAME_23+8(%r1); \ + lwz %r22,FRAME_22+8(%r1); \ + lwz %r21,FRAME_21+8(%r1); \ + lwz %r20,FRAME_20+8(%r1); \ + lwz %r19,FRAME_19+8(%r1); \ + lwz %r18,FRAME_18+8(%r1); \ + lwz %r17,FRAME_17+8(%r1); \ + lwz %r16,FRAME_16+8(%r1); \ + lwz %r15,FRAME_15+8(%r1); \ + lwz %r14,FRAME_14+8(%r1); \ + lwz %r13,FRAME_13+8(%r1); \ + lwz %r12,FRAME_12+8(%r1); \ + lwz %r11,FRAME_11+8(%r1); \ + lwz %r10,FRAME_10+8(%r1); \ + lwz %r9, FRAME_9+8(%r1); \ + lwz %r8, FRAME_8+8(%r1); \ + lwz %r7, FRAME_7+8(%r1); \ + lwz %r6, FRAME_6+8(%r1); \ + lwz %r5, FRAME_5+8(%r1); \ + lwz %r4, FRAME_4+8(%r1); \ + lwz %r3, FRAME_3+8(%r1); \ + lwz %r2, FRAME_2+8(%r1); \ + lwz %r0, FRAME_0+8(%r1); \ + lwz %r1, FRAME_1+8(%r1); \ +/* Can't touch %r1 from here on */ \ + mtsprg2 %r2; /* save r2 & r3 */ \ + mtsprg3 %r3; \ +/* Disable translation, machine check and recoverability: */ \ + mfmsr %r2; \ + andi. %r2,%r2,~(PSL_DR|PSL_IR|PSL_EE|PSL_ME|PSL_RI)@l; \ + mtmsr %r2; \ + isync; \ +/* Decide whether we return to user mode: */ \ + GET_CPUINFO(%r2); \ + lwz %r3,(savearea+CPUSAVE_SRR1)(%r2); \ + mtcr %r3; \ + bf 17,1f; /* branch if PSL_PR is false */ \ +/* Restore user SRs */ \ + RESTORE_USER_SRS(%r2,%r3); \ +1: mfsprg1 %r2; /* restore cr */ \ + mtcr %r2; \ + GET_CPUINFO(%r2); \ + lwz %r3,(savearea+CPUSAVE_SRR0)(%r2); /* restore srr0 */ \ + mtsrr0 %r3; \ + lwz %r3,(savearea+CPUSAVE_SRR1)(%r2); /* restore srr1 */ \ + \ + /* Make sure HV bit of MSR propagated to SRR1 */ \ + mfmsr %r2; \ + or %r3,%r2,%r3; \ + \ + mtsrr1 %r3; \ + mfsprg2 %r2; /* restore r2 & r3 */ \ + mfsprg3 %r3 + +/* + * The next two routines are 64-bit glue code. The first is used to test if + * we are on a 64-bit system. By copying it to the illegal instruction + * handler, we can test for 64-bit mode by trying to execute a 64-bit + * instruction and seeing what happens. The second gets copied in front + * of all the other handlers to restore 32-bit bridge mode when traps + * are taken. + */ + +/* 64-bit test code. Sets SPRG2 to 0 if an illegal instruction is executed */ + + .globl CNAME(testppc64),CNAME(testppc64size) +CNAME(testppc64): + mtsprg1 %r31 + mfsrr0 %r31 + addi %r31, %r31, 4 + mtsrr0 %r31 + + li %r31, 0 + mtsprg2 %r31 + mfsprg1 %r31 + + rfi +CNAME(testppc64size) = .-CNAME(testppc64) + + +/* 64-bit bridge mode restore snippet. Gets copied in front of everything else + * on 64-bit systems. */ + + .globl CNAME(restorebridge),CNAME(restorebridgesize) +CNAME(restorebridge): + mtsprg1 %r31 + mfmsr %r31 + clrldi %r31,%r31,1 + mtmsrd %r31 + mfsprg1 %r31 + isync +CNAME(restorebridgesize) = .-CNAME(restorebridge) + +#ifdef SMP +/* + * Processor reset exception handler. These are typically + * the first instructions the processor executes after a + * software reset. We do this in two bits so that we are + * not still hanging around in the trap handling region + * once the MMU is turned on. + */ + .globl CNAME(rstcode), CNAME(rstsize) +CNAME(rstcode): + ba cpu_reset +CNAME(rstsize) = . - CNAME(rstcode) + +cpu_reset: + bl 1f + + .space 124 + +1: + mflr %r1 + addi %r1,%r1,(124-16)@l + + lis %r3,1@l + bla CNAME(pmap_cpu_bootstrap) + bla CNAME(cpudep_ap_bootstrap) + mr %r1,%r3 + bla CNAME(machdep_ap_bootstrap) + + /* Should not be reached */ +9: + b 9b +#endif + +/* + * This code gets copied to all the trap vectors + * (except ISI/DSI, ALI, and the interrupts) + */ + + .globl CNAME(trapcode),CNAME(trapsize) +CNAME(trapcode): + mtsprg1 %r1 /* save SP */ + mflr %r1 /* Save the old LR in r1 */ + mtsprg2 %r1 /* And then in SPRG2 */ + li %r1, 0x20 /* How to get the vector from LR */ + bla generictrap /* LR & SPRG3 is exception # */ +CNAME(trapsize) = .-CNAME(trapcode) + +/* + * 64-bit version of trapcode. Identical, except it calls generictrap64. + */ + .globl CNAME(trapcode64) +CNAME(trapcode64): + mtsprg1 %r1 /* save SP */ + mflr %r1 /* Save the old LR in r1 */ + mtsprg2 %r1 /* And then in SPRG2 */ + li %r1, 0x20 /* How to get the vector from LR */ + bla generictrap64 /* LR & SPRG3 is exception # */ + +/* + * For ALI: has to save DSISR and DAR + */ + .globl CNAME(alitrap),CNAME(alisize) +CNAME(alitrap): + mtsprg1 %r1 /* save SP */ + GET_CPUINFO(%r1) + stw %r28,(PC_TEMPSAVE+CPUSAVE_R28)(%r1) /* free r28-r31 */ + stw %r29,(PC_TEMPSAVE+CPUSAVE_R29)(%r1) + stw %r30,(PC_TEMPSAVE+CPUSAVE_R30)(%r1) + stw %r31,(PC_TEMPSAVE+CPUSAVE_R31)(%r1) + mfdar %r30 + mfdsisr %r31 + stw %r30,(PC_TEMPSAVE+CPUSAVE_AIM_DAR)(%r1) + stw %r31,(PC_TEMPSAVE+CPUSAVE_AIM_DSISR)(%r1) + mfsprg1 %r1 /* restore SP, in case of branch */ + mflr %r28 /* save LR */ + mfcr %r29 /* save CR */ + + /* Put our exception vector in SPRG3 */ + li %r31, EXC_ALI + mtsprg3 %r31 + + /* Test whether we already had PR set */ + mfsrr1 %r31 + mtcr %r31 + bla s_trap +CNAME(alisize) = .-CNAME(alitrap) + +/* + * Similar to the above for DSI + * Has to handle BAT spills + * and standard pagetable spills + */ + .globl CNAME(dsitrap),CNAME(dsisize) +CNAME(dsitrap): + mtsprg1 %r1 /* save SP */ + GET_CPUINFO(%r1) + stw %r28,(PC_DISISAVE+CPUSAVE_R28)(%r1) /* free r28-r31 */ + stw %r29,(PC_DISISAVE+CPUSAVE_R29)(%r1) + stw %r30,(PC_DISISAVE+CPUSAVE_R30)(%r1) + stw %r31,(PC_DISISAVE+CPUSAVE_R31)(%r1) + mfsprg1 %r1 /* restore SP */ + mfcr %r29 /* save CR */ + mfxer %r30 /* save XER */ + mtsprg2 %r30 /* in SPRG2 */ + mfsrr1 %r31 /* test kernel mode */ + mtcr %r31 + bt 17,1f /* branch if PSL_PR is set */ + mfdar %r31 /* get fault address */ + rlwinm %r31,%r31,7,25,28 /* get segment * 8 */ + + /* get batu */ + addis %r31,%r31,CNAME(battable)@ha + lwz %r30,CNAME(battable)@l(31) + mtcr %r30 + bf 30,1f /* branch if supervisor valid is + false */ + /* get batl */ + lwz %r31,CNAME(battable)+4@l(31) +/* We randomly use the highest two bat registers here */ + mftb %r28 + andi. %r28,%r28,1 + bne 2f + mtdbatu 2,%r30 + mtdbatl 2,%r31 + b 3f +2: + mtdbatu 3,%r30 + mtdbatl 3,%r31 +3: + mfsprg2 %r30 /* restore XER */ + mtxer %r30 + mtcr %r29 /* restore CR */ + mtsprg1 %r1 + GET_CPUINFO(%r1) + lwz %r28,(PC_DISISAVE+CPUSAVE_R28)(%r1) /* restore r28-r31 */ + lwz %r29,(PC_DISISAVE+CPUSAVE_R29)(%r1) + lwz %r30,(PC_DISISAVE+CPUSAVE_R30)(%r1) + lwz %r31,(PC_DISISAVE+CPUSAVE_R31)(%r1) + mfsprg1 %r1 + rfi /* return to trapped code */ +1: + mflr %r28 /* save LR (SP already saved) */ + bla disitrap +CNAME(dsisize) = .-CNAME(dsitrap) + +/* + * Preamble code for DSI/ISI traps + */ +disitrap: + /* Write the trap vector to SPRG3 by computing LR & 0xff00 */ + mflr %r1 + andi. %r1,%r1,0xff00 + mtsprg3 %r1 + + GET_CPUINFO(%r1) + lwz %r30,(PC_DISISAVE+CPUSAVE_R28)(%r1) + stw %r30,(PC_TEMPSAVE+CPUSAVE_R28)(%r1) + lwz %r31,(PC_DISISAVE+CPUSAVE_R29)(%r1) + stw %r31,(PC_TEMPSAVE+CPUSAVE_R29)(%r1) + lwz %r30,(PC_DISISAVE+CPUSAVE_R30)(%r1) + stw %r30,(PC_TEMPSAVE+CPUSAVE_R30)(%r1) + lwz %r31,(PC_DISISAVE+CPUSAVE_R31)(%r1) + stw %r31,(PC_TEMPSAVE+CPUSAVE_R31)(%r1) + mfdar %r30 + mfdsisr %r31 + stw %r30,(PC_TEMPSAVE+CPUSAVE_AIM_DAR)(%r1) + stw %r31,(PC_TEMPSAVE+CPUSAVE_AIM_DSISR)(%r1) + +#ifdef KDB + /* Try and detect a kernel stack overflow */ + mfsrr1 %r31 + mtcr %r31 + bt 17,realtrap /* branch is user mode */ + mfsprg1 %r31 /* get old SP */ + sub. %r30,%r31,%r30 /* SP - DAR */ + bge 1f + neg %r30,%r30 /* modulo value */ +1: cmplwi %cr0,%r30,4096 /* is DAR within a page of SP? */ + bge %cr0,realtrap /* no, too far away. */ + + /* Now convert this DSI into a DDB trap. */ + GET_CPUINFO(%r1) + lwz %r30,(PC_TEMPSAVE+CPUSAVE_AIM_DAR)(%r1) /* get DAR */ + stw %r30,(PC_DBSAVE +CPUSAVE_AIM_DAR)(%r1) /* save DAR */ + lwz %r30,(PC_TEMPSAVE+CPUSAVE_AIM_DSISR)(%r1) /* get DSISR */ + stw %r30,(PC_DBSAVE +CPUSAVE_AIM_DSISR)(%r1) /* save DSISR */ + lwz %r30,(PC_DISISAVE+CPUSAVE_R28)(%r1) /* get r28 */ + stw %r30,(PC_DBSAVE +CPUSAVE_R28)(%r1) /* save r28 */ + lwz %r31,(PC_DISISAVE+CPUSAVE_R29)(%r1) /* get r29 */ + stw %r31,(PC_DBSAVE +CPUSAVE_R29)(%r1) /* save r29 */ + lwz %r30,(PC_DISISAVE+CPUSAVE_R30)(%r1) /* get r30 */ + stw %r30,(PC_DBSAVE +CPUSAVE_R30)(%r1) /* save r30 */ + lwz %r31,(PC_DISISAVE+CPUSAVE_R31)(%r1) /* get r31 */ + stw %r31,(PC_DBSAVE +CPUSAVE_R31)(%r1) /* save r31 */ + b dbtrap +#endif + + /* XXX need stack probe here */ +realtrap: +/* Test whether we already had PR set */ + mfsrr1 %r1 + mtcr %r1 + mfsprg1 %r1 /* restore SP (might have been + overwritten) */ + bf 17,k_trap /* branch if PSL_PR is false */ + GET_CPUINFO(%r1) + lwz %r1,PC_CURPCB(%r1) + RESTORE_KERN_SRS(%r30,%r31) /* enable kernel mapping */ + ba s_trap + +/* + * generictrap does some standard setup for trap handling to minimize + * the code that need be installed in the actual vectors. It expects + * the following conditions. + * + * R1 - Trap vector = LR & (0xff00 | R1) + * SPRG1 - Original R1 contents + * SPRG2 - Original LR + */ + +generictrap64: + mtsprg3 %r31 + mfmsr %r31 + clrldi %r31,%r31,1 + mtmsrd %r31 + mfsprg3 %r31 + isync + +generictrap: + /* Save R1 for computing the exception vector */ + mtsprg3 %r1 + + /* Save interesting registers */ + GET_CPUINFO(%r1) + stw %r28,(PC_TEMPSAVE+CPUSAVE_R28)(%r1) /* free r28-r31 */ + stw %r29,(PC_TEMPSAVE+CPUSAVE_R29)(%r1) + stw %r30,(PC_TEMPSAVE+CPUSAVE_R30)(%r1) + stw %r31,(PC_TEMPSAVE+CPUSAVE_R31)(%r1) + mfsprg1 %r1 /* restore SP, in case of branch */ + mfsprg2 %r28 /* save LR */ + mfcr %r29 /* save CR */ + + /* Compute the exception vector from the link register */ + mfsprg3 %r31 + ori %r31,%r31,0xff00 + mflr %r30 + and %r30,%r30,%r31 + mtsprg3 %r30 + + /* Test whether we already had PR set */ + mfsrr1 %r31 + mtcr %r31 + +s_trap: + bf 17,k_trap /* branch if PSL_PR is false */ + GET_CPUINFO(%r1) +u_trap: + lwz %r1,PC_CURPCB(%r1) + RESTORE_KERN_SRS(%r30,%r31) /* enable kernel mapping */ + +/* + * Now the common trap catching code. + */ +k_trap: + FRAME_SETUP(PC_TEMPSAVE) +/* Call C interrupt dispatcher: */ +trapagain: + addi %r3,%r1,8 + bl CNAME(powerpc_interrupt) + .globl CNAME(trapexit) /* backtrace code sentinel */ +CNAME(trapexit): + +/* Disable interrupts: */ + mfmsr %r3 + andi. %r3,%r3,~PSL_EE@l + mtmsr %r3 +/* Test AST pending: */ + lwz %r5,FRAME_SRR1+8(%r1) + mtcr %r5 + bf 17,1f /* branch if PSL_PR is false */ + + GET_CPUINFO(%r3) /* get per-CPU pointer */ + lwz %r4, PC_CURTHREAD(%r3) /* deref to get curthread */ + lwz %r4, TD_FLAGS(%r4) /* get thread flags value */ + lis %r5, (TDF_ASTPENDING|TDF_NEEDRESCHED)@h + ori %r5,%r5, (TDF_ASTPENDING|TDF_NEEDRESCHED)@l + and. %r4,%r4,%r5 + beq 1f + mfmsr %r3 /* re-enable interrupts */ + ori %r3,%r3,PSL_EE@l + mtmsr %r3 + isync + addi %r3,%r1,8 + bl CNAME(ast) + .globl CNAME(asttrapexit) /* backtrace code sentinel #2 */ +CNAME(asttrapexit): + b trapexit /* test ast ret value ? */ +1: + FRAME_LEAVE(PC_TEMPSAVE) + + .globl CNAME(rfi_patch1) /* replace rfi with rfid on ppc64 */ +CNAME(rfi_patch1): + rfi + + .globl CNAME(rfid_patch) +CNAME(rfid_patch): + rfid + +#if defined(KDB) +/* + * Deliberate entry to dbtrap + */ + .globl CNAME(breakpoint) +CNAME(breakpoint): + mtsprg1 %r1 + mfmsr %r3 + mtsrr1 %r3 + andi. %r3,%r3,~(PSL_EE|PSL_ME)@l + mtmsr %r3 /* disable interrupts */ + isync + GET_CPUINFO(%r3) + stw %r28,(PC_DBSAVE+CPUSAVE_R28)(%r3) + stw %r29,(PC_DBSAVE+CPUSAVE_R29)(%r3) + stw %r30,(PC_DBSAVE+CPUSAVE_R30)(%r3) + stw %r31,(PC_DBSAVE+CPUSAVE_R31)(%r3) + mflr %r28 + li %r29,EXC_BPT + mtlr %r29 + mfcr %r29 + mtsrr0 %r28 + +/* + * Now the kdb trap catching code. + */ +dbtrap: + /* Write the trap vector to SPRG3 by computing LR & 0xff00 */ + mflr %r1 + andi. %r1,%r1,0xff00 + mtsprg3 %r1 + + lis %r1,(tmpstk+TMPSTKSZ-16)@ha /* get new SP */ + addi %r1,%r1,(tmpstk+TMPSTKSZ-16)@l + + FRAME_SETUP(PC_DBSAVE) +/* Call C trap code: */ + addi %r3,%r1,8 + bl CNAME(db_trap_glue) + or. %r3,%r3,%r3 + bne dbleave +/* This wasn't for KDB, so switch to real trap: */ + lwz %r3,FRAME_EXC+8(%r1) /* save exception */ + GET_CPUINFO(%r4) + stw %r3,(PC_DBSAVE+CPUSAVE_R31)(%r4) + FRAME_LEAVE(PC_DBSAVE) + mtsprg1 %r1 /* prepare for entrance to realtrap */ + GET_CPUINFO(%r1) + stw %r28,(PC_TEMPSAVE+CPUSAVE_R28)(%r1) + stw %r29,(PC_TEMPSAVE+CPUSAVE_R29)(%r1) + stw %r30,(PC_TEMPSAVE+CPUSAVE_R30)(%r1) + stw %r31,(PC_TEMPSAVE+CPUSAVE_R31)(%r1) + mflr %r28 + mfcr %r29 + lwz %r31,(PC_DBSAVE+CPUSAVE_R31)(%r1) + mtsprg3 %r31 /* SPRG3 was clobbered by FRAME_LEAVE */ + mfsprg1 %r1 + b realtrap +dbleave: + FRAME_LEAVE(PC_DBSAVE) + .globl CNAME(rfi_patch2) /* replace rfi with rfid on ppc64 */ +CNAME(rfi_patch2): + rfi + +/* + * In case of KDB we want a separate trap catcher for it + */ + .globl CNAME(dblow),CNAME(dbsize) +CNAME(dblow): + mtsprg1 %r1 /* save SP */ + mtsprg2 %r29 /* save r29 */ + mfcr %r29 /* save CR in r29 */ + mfsrr1 %r1 + mtcr %r1 + bf 17,1f /* branch if privileged */ + + /* Unprivileged case */ + mtcr %r29 /* put the condition register back */ + mfsprg2 %r29 /* ... and r29 */ + mflr %r1 /* save LR */ + mtsprg2 %r1 /* And then in SPRG2 */ + li %r1, 0 /* How to get the vector from LR */ + + bla generictrap /* and we look like a generic trap */ +1: + /* Privileged, so drop to KDB */ + GET_CPUINFO(%r1) + stw %r28,(PC_DBSAVE+CPUSAVE_R28)(%r1) /* free r28 */ + mfsprg2 %r28 /* r29 holds cr... */ + stw %r28,(PC_DBSAVE+CPUSAVE_R29)(%r1) /* free r29 */ + stw %r30,(PC_DBSAVE+CPUSAVE_R30)(%r1) /* free r30 */ + stw %r31,(PC_DBSAVE+CPUSAVE_R31)(%r1) /* free r31 */ + mflr %r28 /* save LR */ + bla dbtrap +CNAME(dbsize) = .-CNAME(dblow) +#endif /* KDB */ From owner-svn-src-projects@FreeBSD.ORG Thu Dec 10 05:08:58 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D10641065670; Thu, 10 Dec 2009 05:08:58 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C05AA8FC19; Thu, 10 Dec 2009 05:08:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id nBA58w1j051542; Thu, 10 Dec 2009 05:08:58 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id nBA58wYM051539; Thu, 10 Dec 2009 05:08:58 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <200912100508.nBA58wYM051539@svn.freebsd.org> From: Nathan Whitehorn Date: Thu, 10 Dec 2009 05:08:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r200348 - projects/ppc64/sys/powerpc/include X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Dec 2009 05:08:58 -0000 Author: nwhitehorn Date: Thu Dec 10 05:08:58 2009 New Revision: 200348 URL: http://svn.freebsd.org/changeset/base/200348 Log: Fix some module building. Long way to go here. Modified: projects/ppc64/sys/powerpc/include/elf.h projects/ppc64/sys/powerpc/include/reg.h Modified: projects/ppc64/sys/powerpc/include/elf.h ============================================================================== --- projects/ppc64/sys/powerpc/include/elf.h Thu Dec 10 04:27:10 2009 (r200347) +++ projects/ppc64/sys/powerpc/include/elf.h Thu Dec 10 05:08:58 2009 (r200348) @@ -134,7 +134,9 @@ __ElfType(Auxinfo); #include #include +#ifndef KLD_MODULE #include "opt_compat.h" +#endif #ifdef COMPAT_PPC32 /* Modified: projects/ppc64/sys/powerpc/include/reg.h ============================================================================== --- projects/ppc64/sys/powerpc/include/reg.h Thu Dec 10 04:27:10 2009 (r200347) +++ projects/ppc64/sys/powerpc/include/reg.h Thu Dec 10 05:08:58 2009 (r200348) @@ -4,7 +4,7 @@ #ifndef _POWERPC_REG_H_ #define _POWERPC_REG_H_ -#ifdef _KERNEL +#if defined(_KERNEL) && !defined(KLD_MODULE) #include "opt_compat.h" #endif