PERFORCE change 171237 for review
Andrew Thompson
thompsa at FreeBSD.org
Tue Dec 1 22:04:43 UTC 2009
http://p4web.freebsd.org/chv.cgi?CH=171237
Change 171237 by thompsa at thompsa_pea on 2009/12/01 22:04:19
IFC @171233
Affected files ...
.. //depot/projects/usb/src/lib/libusb/libusb10.c#19 integrate
.. //depot/projects/usb/src/lib/libusb/libusb10.h#11 integrate
.. //depot/projects/usb/src/lib/libusb/libusb20.3#6 integrate
.. //depot/projects/usb/src/lib/libusb/libusb20.c#12 integrate
.. //depot/projects/usb/src/lib/libusb/libusb20.h#9 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/bpf_jit_machdep.c#4 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/bpf_jit_machdep.h#4 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/identcpu.c#19 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/initcpu.c#10 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/machdep.c#28 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/trap.c#20 integrate
.. //depot/projects/usb/src/sys/amd64/conf/NOTES#23 integrate
.. //depot/projects/usb/src/sys/amd64/include/md_var.h#10 integrate
.. //depot/projects/usb/src/sys/amd64/include/param.h#10 integrate
.. //depot/projects/usb/src/sys/amd64/include/specialreg.h#16 integrate
.. //depot/projects/usb/src/sys/arm/arm/trap.c#10 integrate
.. //depot/projects/usb/src/sys/arm/at91/if_ate.c#16 integrate
.. //depot/projects/usb/src/sys/boot/Makefile#11 integrate
.. //depot/projects/usb/src/sys/boot/common/Makefile.inc#4 integrate
.. //depot/projects/usb/src/sys/boot/common/boot.c#3 integrate
.. //depot/projects/usb/src/sys/boot/forth/loader.conf.5#3 integrate
.. //depot/projects/usb/src/sys/boot/i386/Makefile#6 integrate
.. //depot/projects/usb/src/sys/boot/i386/libi386/Makefile#6 integrate
.. //depot/projects/usb/src/sys/boot/i386/libi386/elf32_freebsd.c#3 integrate
.. //depot/projects/usb/src/sys/boot/i386/libi386/elf64_freebsd.c#3 integrate
.. //depot/projects/usb/src/sys/boot/i386/libi386/spinconsole.c#1 branch
.. //depot/projects/usb/src/sys/boot/i386/libi386/vidconsole.c#2 integrate
.. //depot/projects/usb/src/sys/boot/i386/loader/Makefile#8 integrate
.. //depot/projects/usb/src/sys/boot/i386/loader/conf.c#4 integrate
.. //depot/projects/usb/src/sys/boot/i386/zfsboot/zfsboot.c#6 integrate
.. //depot/projects/usb/src/sys/boot/i386/zfsboot/zfsldr.S#2 integrate
.. //depot/projects/usb/src/sys/boot/i386/zfsloader/Makefile#1 branch
.. //depot/projects/usb/src/sys/boot/pc98/loader/conf.c#2 integrate
.. //depot/projects/usb/src/sys/boot/uboot/common/metadata.c#2 integrate
.. //depot/projects/usb/src/sys/cam/ata/ata_all.c#5 integrate
.. //depot/projects/usb/src/sys/cam/ata/ata_all.h#4 integrate
.. //depot/projects/usb/src/sys/cam/ata/ata_pmp.c#2 integrate
.. //depot/projects/usb/src/sys/cam/ata/ata_xpt.c#7 integrate
.. //depot/projects/usb/src/sys/cam/cam_ccb.h#10 integrate
.. //depot/projects/usb/src/sys/cam/cam_periph.c#15 integrate
.. //depot/projects/usb/src/sys/cam/cam_queue.c#3 integrate
.. //depot/projects/usb/src/sys/cam/cam_queue.h#3 integrate
.. //depot/projects/usb/src/sys/cam/cam_xpt.c#26 integrate
.. //depot/projects/usb/src/sys/cam/scsi/scsi_cd.c#13 integrate
.. //depot/projects/usb/src/sys/cam/scsi/scsi_ch.c#8 integrate
.. //depot/projects/usb/src/sys/cddl/boot/zfs/zfssubr.c#5 integrate
.. //depot/projects/usb/src/sys/compat/svr4/svr4_termios.c#2 integrate
.. //depot/projects/usb/src/sys/conf/NOTES#50 integrate
.. //depot/projects/usb/src/sys/conf/files#87 integrate
.. //depot/projects/usb/src/sys/conf/files.amd64#27 integrate
.. //depot/projects/usb/src/sys/conf/files.i386#32 integrate
.. //depot/projects/usb/src/sys/conf/options#43 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/changes.txt#4 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/compiler/aslcompile.c#5 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/compiler/aslerror.c#4 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/compiler/asllookup.c#5 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/compiler/asloperands.c#4 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/compiler/asltransform.c#4 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/compiler/asltypes.h#5 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/debugger/dbcmds.c#4 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/debugger/dbexec.c#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/debugger/dbstats.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/dispatcher/dsinit.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/dispatcher/dsmthdat.c#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/dispatcher/dsobject.c#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/events/evgpeblk.c#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/events/evregion.c#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/executer/exconfig.c#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/executer/exconvrt.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/executer/exfield.c#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/executer/exoparg1.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/executer/exoparg6.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/executer/exregion.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/include/acconfig.h#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/include/acmacros.h#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/include/acnamesp.h#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/include/acpixf.h#4 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/include/acutils.h#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/namespace/nsdump.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/namespace/nsdumpdv.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/namespace/nseval.c#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/namespace/nsinit.c#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/namespace/nspredef.c#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/namespace/nsrepair.c#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/namespace/nsrepair2.c#1 branch
.. //depot/projects/usb/src/sys/contrib/dev/acpica/namespace/nswalk.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/namespace/nsxfeval.c#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/parser/psloop.c#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/parser/psparse.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/parser/psxface.c#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/utilities/utmisc.c#3 integrate
.. //depot/projects/usb/src/sys/contrib/dev/acpica/utilities/utobject.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/rdma/krping/krping.c#2 integrate
.. //depot/projects/usb/src/sys/ddb/db_command.c#7 integrate
.. //depot/projects/usb/src/sys/dev/acpica/acpi.c#25 integrate
.. //depot/projects/usb/src/sys/dev/acpica/acpi_dock.c#8 integrate
.. //depot/projects/usb/src/sys/dev/acpica/acpi_pci.c#5 integrate
.. //depot/projects/usb/src/sys/dev/acpica/acpi_video.c#5 integrate
.. //depot/projects/usb/src/sys/dev/adb/adb.h#3 integrate
.. //depot/projects/usb/src/sys/dev/adb/adb_bus.c#6 integrate
.. //depot/projects/usb/src/sys/dev/adb/adb_mouse.c#4 integrate
.. //depot/projects/usb/src/sys/dev/ahci/ahci.c#7 integrate
.. //depot/projects/usb/src/sys/dev/ahci/ahci.h#5 integrate
.. //depot/projects/usb/src/sys/dev/aic7xxx/ahd_pci.c#4 integrate
.. //depot/projects/usb/src/sys/dev/aic7xxx/aic79xx.c#3 integrate
.. //depot/projects/usb/src/sys/dev/aic7xxx/aic79xx.h#4 integrate
.. //depot/projects/usb/src/sys/dev/aic7xxx/aic79xx_osm.c#7 integrate
.. //depot/projects/usb/src/sys/dev/aic7xxx/aic79xx_osm.h#5 integrate
.. //depot/projects/usb/src/sys/dev/amdsbwd/amdsbwd.c#1 branch
.. //depot/projects/usb/src/sys/dev/an/if_an.c#9 integrate
.. //depot/projects/usb/src/sys/dev/an/if_an_isa.c#4 integrate
.. //depot/projects/usb/src/sys/dev/an/if_an_pccard.c#4 integrate
.. //depot/projects/usb/src/sys/dev/an/if_an_pci.c#5 integrate
.. //depot/projects/usb/src/sys/dev/an/if_anreg.h#6 integrate
.. //depot/projects/usb/src/sys/dev/ata/ata-all.c#21 integrate
.. //depot/projects/usb/src/sys/dev/ata/ata-disk.c#18 integrate
.. //depot/projects/usb/src/sys/dev/ata/ata-pci.c#16 integrate
.. //depot/projects/usb/src/sys/dev/ata/ata-pci.h#24 integrate
.. //depot/projects/usb/src/sys/dev/ata/ata-usb.c#47 delete
.. //depot/projects/usb/src/sys/dev/ata/chipsets/ata-ahci.c#11 integrate
.. //depot/projects/usb/src/sys/dev/ata/chipsets/ata-intel.c#9 integrate
.. //depot/projects/usb/src/sys/dev/ata/chipsets/ata-jmicron.c#5 integrate
.. //depot/projects/usb/src/sys/dev/ata/chipsets/ata-marvell.c#10 integrate
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ah_regdomain.c#6 integrate
.. //depot/projects/usb/src/sys/dev/bge/if_bge.c#24 integrate
.. //depot/projects/usb/src/sys/dev/bge/if_bgereg.h#13 integrate
.. //depot/projects/usb/src/sys/dev/bwi/if_bwi.c#5 integrate
.. //depot/projects/usb/src/sys/dev/bwi/if_bwivar.h#3 integrate
.. //depot/projects/usb/src/sys/dev/ce/if_ce.c#9 integrate
.. //depot/projects/usb/src/sys/dev/cm/smc90cx6.c#6 integrate
.. //depot/projects/usb/src/sys/dev/cm/smc90cx6var.h#3 integrate
.. //depot/projects/usb/src/sys/dev/cp/if_cp.c#9 integrate
.. //depot/projects/usb/src/sys/dev/ctau/if_ct.c#9 integrate
.. //depot/projects/usb/src/sys/dev/cx/if_cx.c#8 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/common/cxgb_ael1002.c#12 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/common/cxgb_aq100x.c#2 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/common/cxgb_xgmac.c#11 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/cxgb_main.c#25 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/ulp/tom/cxgb_vm.c#4 integrate
.. //depot/projects/usb/src/sys/dev/de/if_de.c#9 integrate
.. //depot/projects/usb/src/sys/dev/de/if_devar.h#5 integrate
.. //depot/projects/usb/src/sys/dev/dpms/dpms.c#4 integrate
.. //depot/projects/usb/src/sys/dev/ed/if_ed.c#10 integrate
.. //depot/projects/usb/src/sys/dev/ed/if_ed_pccard.c#11 integrate
.. //depot/projects/usb/src/sys/dev/ed/if_edvar.h#5 integrate
.. //depot/projects/usb/src/sys/dev/ep/if_ep.c#6 integrate
.. //depot/projects/usb/src/sys/dev/ep/if_epvar.h#3 integrate
.. //depot/projects/usb/src/sys/dev/et/if_et.c#4 integrate
.. //depot/projects/usb/src/sys/dev/et/if_etreg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/et/if_etvar.h#2 integrate
.. //depot/projects/usb/src/sys/dev/fatm/if_fatm.c#5 integrate
.. //depot/projects/usb/src/sys/dev/fatm/if_fatmvar.h#2 integrate
.. //depot/projects/usb/src/sys/dev/fb/vesa.c#6 integrate
.. //depot/projects/usb/src/sys/dev/fb/vgareg.h#4 integrate
.. //depot/projects/usb/src/sys/dev/fe/if_fe_pccard.c#6 integrate
.. //depot/projects/usb/src/sys/dev/hatm/if_hatm.c#4 integrate
.. //depot/projects/usb/src/sys/dev/hwpmc/hwpmc_logging.c#9 integrate
.. //depot/projects/usb/src/sys/dev/hwpmc/hwpmc_mod.c#15 integrate
.. //depot/projects/usb/src/sys/dev/ixgb/if_ixgb.c#9 integrate
.. //depot/projects/usb/src/sys/dev/ixgb/if_ixgb.h#3 integrate
.. //depot/projects/usb/src/sys/dev/lge/if_lge.c#8 integrate
.. //depot/projects/usb/src/sys/dev/lge/if_lgereg.h#3 integrate
.. //depot/projects/usb/src/sys/dev/lmc/if_lmc.c#13 integrate
.. //depot/projects/usb/src/sys/dev/lmc/if_lmc.h#8 integrate
.. //depot/projects/usb/src/sys/dev/malo/if_malo.c#6 integrate
.. //depot/projects/usb/src/sys/dev/malo/if_malo.h#4 integrate
.. //depot/projects/usb/src/sys/dev/msk/if_msk.c#18 integrate
.. //depot/projects/usb/src/sys/dev/mwl/if_mwl.c#8 integrate
.. //depot/projects/usb/src/sys/dev/mwl/if_mwlvar.h#3 integrate
.. //depot/projects/usb/src/sys/dev/my/if_my.c#9 integrate
.. //depot/projects/usb/src/sys/dev/my/if_myreg.h#3 integrate
.. //depot/projects/usb/src/sys/dev/nve/if_nve.c#10 integrate
.. //depot/projects/usb/src/sys/dev/nve/if_nvereg.h#4 integrate
.. //depot/projects/usb/src/sys/dev/nxge/if_nxge.c#4 integrate
.. //depot/projects/usb/src/sys/dev/pci/pci.c#30 integrate
.. //depot/projects/usb/src/sys/dev/pci/vga_pci.c#6 integrate
.. //depot/projects/usb/src/sys/dev/pcn/if_pcn.c#5 integrate
.. //depot/projects/usb/src/sys/dev/pcn/if_pcnreg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/pdq/if_fea.c#3 integrate
.. //depot/projects/usb/src/sys/dev/pdq/if_fpa.c#4 integrate
.. //depot/projects/usb/src/sys/dev/pdq/pdq_freebsd.h#2 integrate
.. //depot/projects/usb/src/sys/dev/pdq/pdq_ifsubr.c#4 integrate
.. //depot/projects/usb/src/sys/dev/re/if_re.c#24 integrate
.. //depot/projects/usb/src/sys/dev/siis/siis.c#7 integrate
.. //depot/projects/usb/src/sys/dev/siis/siis.h#3 integrate
.. //depot/projects/usb/src/sys/dev/sn/if_sn.c#4 integrate
.. //depot/projects/usb/src/sys/dev/sn/if_sn_pccard.c#2 integrate
.. //depot/projects/usb/src/sys/dev/sn/if_snvar.h#2 integrate
.. //depot/projects/usb/src/sys/dev/sound/pci/hda/hdac.c#38 integrate
.. //depot/projects/usb/src/sys/dev/sound/usb/uaudio.c#63 integrate
.. //depot/projects/usb/src/sys/dev/ste/if_ste.c#4 integrate
.. //depot/projects/usb/src/sys/dev/ste/if_stereg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/syscons/scterm-teken.c#11 integrate
.. //depot/projects/usb/src/sys/dev/syscons/scvidctl.c#6 integrate
.. //depot/projects/usb/src/sys/dev/syscons/sysmouse.c#7 integrate
.. //depot/projects/usb/src/sys/dev/ti/if_ti.c#9 integrate
.. //depot/projects/usb/src/sys/dev/ti/if_tireg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/tl/if_tl.c#4 integrate
.. //depot/projects/usb/src/sys/dev/tl/if_tlreg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/tsec/if_tsec.c#7 integrate
.. //depot/projects/usb/src/sys/dev/uart/uart_core.c#7 integrate
.. //depot/projects/usb/src/sys/dev/uart/uart_tty.c#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/at91dci.c#30 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/atmegadci.c#42 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/avr32dci.c#15 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/ehci.c#46 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/musb_otg.c#30 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/musb_otg.h#9 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/ohci.c#32 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/uhci.c#29 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/uhci_pci.c#14 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/uhcireg.h#3 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/usb_controller.c#36 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/uss820dci.c#30 integrate
.. //depot/projects/usb/src/sys/dev/usb/input/atp.c#4 integrate
.. //depot/projects/usb/src/sys/dev/usb/input/ukbd.c#38 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_aue.c#18 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_axe.c#20 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_cdce.c#24 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_cue.c#15 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_kue.c#15 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_rue.c#15 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_udav.c#15 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/u3g.c#23 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uark.c#13 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/ubser.c#17 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/ucycom.c#16 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/ufoma.c#15 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uftdi.c#19 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/ugensa.c#16 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/umct.c#19 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/umodem.c#19 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uplcom.c#16 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/usb_serial.h#9 integrate
.. //depot/projects/usb/src/sys/dev/usb/storage/umass.c#39 integrate
.. //depot/projects/usb/src/sys/dev/usb/template/usb_template.c#11 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_busdma.c#18 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_core.h#32 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_debug.c#12 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_debug.h#10 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_dev.c#39 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_device.c#59 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_generic.c#24 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_hid.c#41 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_hub.c#38 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_hub.h#16 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_msctest.c#12 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_process.c#15 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_request.c#28 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#174 integrate
.. //depot/projects/usb/src/sys/dev/usb/usbdevs#85 integrate
.. //depot/projects/usb/src/sys/dev/usb/usbdi.h#16 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_upgt.c#18 integrate
.. //depot/projects/usb/src/sys/dev/vge/if_vge.c#12 integrate
.. //depot/projects/usb/src/sys/dev/vge/if_vgevar.h#3 integrate
.. //depot/projects/usb/src/sys/dev/vx/if_vx.c#3 integrate
.. //depot/projects/usb/src/sys/dev/vx/if_vxvar.h#2 integrate
.. //depot/projects/usb/src/sys/dev/wb/if_wb.c#4 integrate
.. //depot/projects/usb/src/sys/dev/wb/if_wbreg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/wl/if_wl.c#6 integrate
.. //depot/projects/usb/src/sys/dev/xen/blkfront/blkfront.c#8 integrate
.. //depot/projects/usb/src/sys/dev/xen/blkfront/block.h#3 integrate
.. //depot/projects/usb/src/sys/dev/xen/console/console.c#10 integrate
.. //depot/projects/usb/src/sys/dev/xen/netfront/netfront.c#13 integrate
.. //depot/projects/usb/src/sys/fs/nfs/nfs_var.h#5 integrate
.. //depot/projects/usb/src/sys/fs/nfsserver/nfs_nfsdport.c#8 integrate
.. //depot/projects/usb/src/sys/fs/nfsserver/nfs_nfsdserv.c#4 integrate
.. //depot/projects/usb/src/sys/geom/label/g_label.c#7 integrate
.. //depot/projects/usb/src/sys/geom/label/g_label.h#4 integrate
.. //depot/projects/usb/src/sys/geom/label/g_label_ext2fs.c#2 integrate
.. //depot/projects/usb/src/sys/geom/label/g_label_gpt.c#2 integrate
.. //depot/projects/usb/src/sys/geom/label/g_label_iso9660.c#2 integrate
.. //depot/projects/usb/src/sys/geom/label/g_label_msdosfs.c#5 integrate
.. //depot/projects/usb/src/sys/geom/label/g_label_ntfs.c#2 integrate
.. //depot/projects/usb/src/sys/geom/label/g_label_reiserfs.c#3 integrate
.. //depot/projects/usb/src/sys/geom/label/g_label_ufs.c#4 integrate
.. //depot/projects/usb/src/sys/geom/part/g_part_gpt.c#16 integrate
.. //depot/projects/usb/src/sys/i386/conf/NOTES#28 integrate
.. //depot/projects/usb/src/sys/i386/cpufreq/est.c#8 integrate
.. //depot/projects/usb/src/sys/i386/i386/bpf_jit_machdep.c#4 integrate
.. //depot/projects/usb/src/sys/i386/i386/bpf_jit_machdep.h#4 integrate
.. //depot/projects/usb/src/sys/i386/i386/identcpu.c#17 integrate
.. //depot/projects/usb/src/sys/i386/i386/initcpu.c#11 integrate
.. //depot/projects/usb/src/sys/i386/i386/trap.c#17 integrate
.. //depot/projects/usb/src/sys/i386/include/specialreg.h#16 integrate
.. //depot/projects/usb/src/sys/i386/xen/exception.s#3 integrate
.. //depot/projects/usb/src/sys/i386/xen/pmap.c#17 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/db_machdep.c#6 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/exception.S#5 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/interrupt.c#11 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/machdep.c#15 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/trap.c#9 integrate
.. //depot/projects/usb/src/sys/ia64/include/param.h#7 integrate
.. //depot/projects/usb/src/sys/ia64/include/pcpu.h#6 integrate
.. //depot/projects/usb/src/sys/isa/vga_isa.c#4 integrate
.. //depot/projects/usb/src/sys/kern/kern_descrip.c#27 integrate
.. //depot/projects/usb/src/sys/kern/kern_jail.c#33 integrate
.. //depot/projects/usb/src/sys/kern/kern_linker.c#22 integrate
.. //depot/projects/usb/src/sys/kern/kern_sig.c#21 integrate
.. //depot/projects/usb/src/sys/kern/sched_ule.c#21 integrate
.. //depot/projects/usb/src/sys/kern/subr_bus.c#34 integrate
.. //depot/projects/usb/src/sys/kern/sys_process.c#16 integrate
.. //depot/projects/usb/src/sys/kern/tty.c#33 integrate
.. //depot/projects/usb/src/sys/kern/vfs_mount.c#32 integrate
.. //depot/projects/usb/src/sys/kern/vfs_subr.c#27 integrate
.. //depot/projects/usb/src/sys/libkern/inet_aton.c#1 branch
.. //depot/projects/usb/src/sys/mips/adm5120/if_admsw.c#6 integrate
.. //depot/projects/usb/src/sys/mips/adm5120/if_admswvar.h#3 integrate
.. //depot/projects/usb/src/sys/mips/mips/trap.c#5 integrate
.. //depot/projects/usb/src/sys/modules/Makefile#46 integrate
.. //depot/projects/usb/src/sys/modules/acpi/acpi/Makefile#11 integrate
.. //depot/projects/usb/src/sys/modules/amdsbwd/Makefile#1 branch
.. //depot/projects/usb/src/sys/modules/ata/atausb/Makefile#5 delete
.. //depot/projects/usb/src/sys/net/bpf_jitter.c#3 integrate
.. //depot/projects/usb/src/sys/net/bpf_jitter.h#3 integrate
.. //depot/projects/usb/src/sys/net/if.c#42 integrate
.. //depot/projects/usb/src/sys/net/if.h#13 integrate
.. //depot/projects/usb/src/sys/net/if_dead.c#2 integrate
.. //depot/projects/usb/src/sys/net/if_var.h#30 integrate
.. //depot/projects/usb/src/sys/net/route.c#26 integrate
.. //depot/projects/usb/src/sys/netinet/in.h#14 integrate
.. //depot/projects/usb/src/sys/netinet/in_mcast.c#20 integrate
.. //depot/projects/usb/src/sys/netinet/libalias/alias_proxy.c#6 integrate
.. //depot/projects/usb/src/sys/netinet/raw_ip.c#31 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_asconf.c#13 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_auth.c#11 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_constants.h#16 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_input.c#21 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_os_bsd.h#22 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_output.c#26 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_pcb.c#21 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_structs.h#14 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_usrreq.c#18 integrate
.. //depot/projects/usb/src/sys/netinet/sctputil.c#26 integrate
.. //depot/projects/usb/src/sys/netinet6/in6_mcast.c#8 integrate
.. //depot/projects/usb/src/sys/netinet6/nd6.c#28 integrate
.. //depot/projects/usb/src/sys/netinet6/raw_ip6.c#26 integrate
.. //depot/projects/usb/src/sys/netipsec/ipcomp_var.h#4 integrate
.. //depot/projects/usb/src/sys/netipsec/ipsec_mbuf.c#8 integrate
.. //depot/projects/usb/src/sys/netipsec/key.c#27 integrate
.. //depot/projects/usb/src/sys/netipsec/xform_ipcomp.c#11 integrate
.. //depot/projects/usb/src/sys/nfsserver/nfs_fha.c#5 integrate
.. //depot/projects/usb/src/sys/opencrypto/crypto.c#5 integrate
.. //depot/projects/usb/src/sys/opencrypto/cryptosoft.c#8 integrate
.. //depot/projects/usb/src/sys/opencrypto/deflate.c#3 integrate
.. //depot/projects/usb/src/sys/opencrypto/deflate.h#2 integrate
.. //depot/projects/usb/src/sys/pc98/cbus/cbus_dma.c#2 integrate
.. //depot/projects/usb/src/sys/pc98/conf/NOTES#19 integrate
.. //depot/projects/usb/src/sys/powerpc/aim/machdep.c#14 integrate
.. //depot/projects/usb/src/sys/powerpc/aim/mmu_oea64.c#8 integrate
.. //depot/projects/usb/src/sys/powerpc/aim/ofw_machdep.c#6 integrate
.. //depot/projects/usb/src/sys/powerpc/aim/trap.c#6 integrate
.. //depot/projects/usb/src/sys/powerpc/booke/machdep.c#14 integrate
.. //depot/projects/usb/src/sys/powerpc/booke/trap.c#5 integrate
.. //depot/projects/usb/src/sys/powerpc/conf/GENERIC#24 integrate
.. //depot/projects/usb/src/sys/powerpc/include/cpu.h#4 integrate
.. //depot/projects/usb/src/sys/powerpc/include/md_var.h#9 integrate
.. //depot/projects/usb/src/sys/powerpc/mpc85xx/pci_ocp.c#4 integrate
.. //depot/projects/usb/src/sys/powerpc/powerpc/cpu.c#13 integrate
.. //depot/projects/usb/src/sys/sparc64/sparc64/machdep.c#18 integrate
.. //depot/projects/usb/src/sys/sparc64/sparc64/trap.c#11 integrate
.. //depot/projects/usb/src/sys/sun4v/sun4v/trap.c#8 integrate
.. //depot/projects/usb/src/sys/sys/_termios.h#1 branch
.. //depot/projects/usb/src/sys/sys/ata.h#9 integrate
.. //depot/projects/usb/src/sys/sys/elf_common.h#14 integrate
.. //depot/projects/usb/src/sys/sys/param.h#47 integrate
.. //depot/projects/usb/src/sys/sys/priv.h#22 integrate
.. //depot/projects/usb/src/sys/sys/sdt.h#3 integrate
.. //depot/projects/usb/src/sys/sys/signal.h#4 integrate
.. //depot/projects/usb/src/sys/sys/signalvar.h#8 integrate
.. //depot/projects/usb/src/sys/sys/sockio.h#7 integrate
.. //depot/projects/usb/src/sys/sys/termios.h#8 integrate
.. //depot/projects/usb/src/sys/sys/tty.h#13 integrate
.. //depot/projects/usb/src/sys/vm/vm.h#9 integrate
.. //depot/projects/usb/src/sys/vm/vm_extern.h#12 integrate
.. //depot/projects/usb/src/sys/vm/vm_fault.c#20 integrate
.. //depot/projects/usb/src/sys/vm/vm_map.c#23 integrate
.. //depot/projects/usb/src/sys/vm/vm_map.h#11 integrate
Differences ...
==== //depot/projects/usb/src/lib/libusb/libusb10.c#19 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/lib/libusb/libusb10.c,v 1.4 2009/11/08 20:03:52 thompsa Exp $ */
+/* $FreeBSD: src/lib/libusb/libusb10.c,v 1.5 2009/11/20 08:57:25 thompsa Exp $ */
/*-
* Copyright (c) 2009 Sylvestre Gallon. All rights reserved.
* Copyright (c) 2009 Hans Petter Selasky. All rights reserved.
==== //depot/projects/usb/src/lib/libusb/libusb10.h#11 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/lib/libusb/libusb10.h,v 1.3 2009/07/30 00:11:41 alfred Exp $ */
+/* $FreeBSD: src/lib/libusb/libusb10.h,v 1.4 2009/11/20 08:57:25 thompsa Exp $ */
/*-
* Copyright (c) 2009 Sylvestre Gallon. All rights reserved.
*
==== //depot/projects/usb/src/lib/libusb/libusb20.3#6 (text+ko) ====
@@ -24,7 +24,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD: src/lib/libusb/libusb20.3,v 1.4 2009/07/30 00:11:41 alfred Exp $
+.\" $FreeBSD: src/lib/libusb/libusb20.3,v 1.5 2009/11/20 08:57:25 thompsa Exp $
.\"
.Dd November 18, 2009
.Dt LIBUSB20 3
==== //depot/projects/usb/src/lib/libusb/libusb20.c#12 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/lib/libusb/libusb20.c,v 1.5 2009/11/08 20:03:52 thompsa Exp $ */
+/* $FreeBSD: src/lib/libusb/libusb20.c,v 1.6 2009/11/20 08:57:25 thompsa Exp $ */
/*-
* Copyright (c) 2008-2009 Hans Petter Selasky. All rights reserved.
*
==== //depot/projects/usb/src/lib/libusb/libusb20.h#9 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/lib/libusb/libusb20.h,v 1.5 2009/06/12 16:07:06 thompsa Exp $ */
+/* $FreeBSD: src/lib/libusb/libusb20.h,v 1.6 2009/11/20 08:57:25 thompsa Exp $ */
/*-
* Copyright (c) 2008-2009 Hans Petter Selasky. All rights reserved.
* Copyright (c) 2007-2008 Daniel Drake. All rights reserved.
==== //depot/projects/usb/src/sys/amd64/amd64/bpf_jit_machdep.c#4 (text+ko) ====
@@ -1,6 +1,6 @@
/*-
* Copyright (C) 2002-2003 NetGroup, Politecnico di Torino (Italy)
- * Copyright (C) 2005-2008 Jung-uk Kim <jkim at FreeBSD.org>
+ * Copyright (C) 2005-2009 Jung-uk Kim <jkim at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/bpf_jit_machdep.c,v 1.14 2008/08/26 21:06:31 jkim Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/bpf_jit_machdep.c,v 1.21 2009/11/23 22:23:19 jkim Exp $");
#ifdef _KERNEL
#include "opt_bpf.h"
@@ -42,6 +42,9 @@
#include <net/if.h>
#else
#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <sys/param.h>
#endif
#include <sys/types.h>
@@ -51,21 +54,22 @@
#include <amd64/amd64/bpf_jit_machdep.h>
-bpf_filter_func bpf_jit_compile(struct bpf_insn *, u_int, int *);
+bpf_filter_func bpf_jit_compile(struct bpf_insn *, u_int, size_t *);
/*
- * emit routine to update the jump table
+ * Emit routine to update the jump table.
*/
static void
emit_length(bpf_bin_stream *stream, __unused u_int value, u_int len)
{
- (stream->refs)[stream->bpf_pc] += len;
+ if (stream->refs != NULL)
+ (stream->refs)[stream->bpf_pc] += len;
stream->cur_ip += len;
}
/*
- * emit routine to output the actual binary code
+ * Emit routine to output the actual binary code.
*/
static void
emit_code(bpf_bin_stream *stream, u_int value, u_int len)
@@ -92,53 +96,120 @@
}
/*
- * Function that does the real stuff
+ * Scan the filter program and find possible optimization.
+ */
+static int
+bpf_jit_optimize(struct bpf_insn *prog, u_int nins)
+{
+ int flags;
+ u_int i;
+
+ /* Do we return immediately? */
+ if (BPF_CLASS(prog[0].code) == BPF_RET)
+ return (BPF_JIT_FRET);
+
+ for (flags = 0, i = 0; i < nins; i++) {
+ switch (prog[i].code) {
+ case BPF_LD|BPF_W|BPF_ABS:
+ case BPF_LD|BPF_H|BPF_ABS:
+ case BPF_LD|BPF_B|BPF_ABS:
+ case BPF_LD|BPF_W|BPF_IND:
+ case BPF_LD|BPF_H|BPF_IND:
+ case BPF_LD|BPF_B|BPF_IND:
+ case BPF_LDX|BPF_MSH|BPF_B:
+ flags |= BPF_JIT_FPKT;
+ break;
+ case BPF_LD|BPF_MEM:
+ case BPF_LDX|BPF_MEM:
+ case BPF_ST:
+ case BPF_STX:
+ flags |= BPF_JIT_FMEM;
+ break;
+ case BPF_LD|BPF_W|BPF_LEN:
+ case BPF_LDX|BPF_W|BPF_LEN:
+ flags |= BPF_JIT_FLEN;
+ break;
+ case BPF_JMP|BPF_JA:
+ case BPF_JMP|BPF_JGT|BPF_K:
+ case BPF_JMP|BPF_JGE|BPF_K:
+ case BPF_JMP|BPF_JEQ|BPF_K:
+ case BPF_JMP|BPF_JSET|BPF_K:
+ case BPF_JMP|BPF_JGT|BPF_X:
+ case BPF_JMP|BPF_JGE|BPF_X:
+ case BPF_JMP|BPF_JEQ|BPF_X:
+ case BPF_JMP|BPF_JSET|BPF_X:
+ flags |= BPF_JIT_FJMP;
+ break;
+ }
+ if (flags == BPF_JIT_FLAG_ALL)
+ break;
+ }
+
+ return (flags);
+}
+
+/*
+ * Function that does the real stuff.
*/
bpf_filter_func
-bpf_jit_compile(struct bpf_insn *prog, u_int nins, int *mem)
+bpf_jit_compile(struct bpf_insn *prog, u_int nins, size_t *size)
{
+ bpf_bin_stream stream;
struct bpf_insn *ins;
+ int flags, fret, fpkt, fmem, fjmp, flen;
u_int i, pass;
- bpf_bin_stream stream;
/*
- * NOTE: do not modify the name of this variable, as it's used by
+ * NOTE: Do not modify the name of this variable, as it's used by
* the macros to emit code.
*/
emit_func emitm;
- /* Allocate the reference table for the jumps */
+ flags = bpf_jit_optimize(prog, nins);
+ fret = (flags & BPF_JIT_FRET) != 0;
+ fpkt = (flags & BPF_JIT_FPKT) != 0;
+ fmem = (flags & BPF_JIT_FMEM) != 0;
+ fjmp = (flags & BPF_JIT_FJMP) != 0;
+ flen = (flags & BPF_JIT_FLEN) != 0;
+
+ if (fret)
+ nins = 1;
+
+ memset(&stream, 0, sizeof(stream));
+
+ /* Allocate the reference table for the jumps. */
+ if (fjmp) {
#ifdef _KERNEL
- stream.refs = (u_int *)malloc((nins + 1) * sizeof(u_int),
- M_BPFJIT, M_NOWAIT);
+ stream.refs = malloc((nins + 1) * sizeof(u_int), M_BPFJIT,
+ M_NOWAIT | M_ZERO);
#else
- stream.refs = (u_int *)malloc((nins + 1) * sizeof(u_int));
+ stream.refs = calloc(nins + 1, sizeof(u_int));
#endif
- if (stream.refs == NULL)
- return (NULL);
+ if (stream.refs == NULL)
+ return (NULL);
+ }
- /* Reset the reference table */
- for (i = 0; i < nins + 1; i++)
- stream.refs[i] = 0;
-
- stream.cur_ip = 0;
- stream.bpf_pc = 0;
-
/*
- * the first pass will emit the lengths of the instructions
- * to create the reference table
+ * The first pass will emit the lengths of the instructions
+ * to create the reference table.
*/
emitm = emit_length;
- pass = 0;
- for (;;) {
+ for (pass = 0; pass < 2; pass++) {
ins = prog;
- /* create the procedure header */
- MOVrq2(RBX, R8);
- MOVrq(RDI, RBX);
- MOVrd2(ESI, R9D);
- MOVrd(EDX, EDI);
+ /* Create the procedure header. */
+ if (fmem) {
+ PUSH(RBP);
+ MOVrq(RSP, RBP);
+ SUBib(BPF_MEMWORDS * sizeof(uint32_t), RSP);
+ }
+ if (flen)
+ MOVrd2(ESI, R9D);
+ if (fpkt) {
+ MOVrq2(RDI, R8);
+ MOVrd(EDX, EDI);
+ }
for (i = 0; i < nins; i++) {
stream.bpf_pc++;
@@ -153,12 +224,14 @@
case BPF_RET|BPF_K:
MOVid(ins->k, EAX);
- MOVrq3(R8, RBX);
+ if (fmem)
+ LEAVE();
RET();
break;
case BPF_RET|BPF_A:
- MOVrq3(R8, RBX);
+ if (fmem)
+ LEAVE();
RET();
break;
@@ -169,11 +242,17 @@
MOVrd(EDI, ECX);
SUBrd(ESI, ECX);
CMPid(sizeof(int32_t), ECX);
- JAEb(6);
- ZEROrd(EAX);
- MOVrq3(R8, RBX);
+ if (fmem) {
+ JAEb(4);
+ ZEROrd(EAX);
+ LEAVE();
+ } else {
+ JAEb(3);
+ ZEROrd(EAX);
+ }
RET();
- MOVobd(RBX, RSI, EAX);
+ MOVrq3(R8, RCX);
+ MOVobd(RCX, RSI, EAX);
BSWAP(EAX);
break;
@@ -185,10 +264,14 @@
MOVrd(EDI, ECX);
SUBrd(ESI, ECX);
CMPid(sizeof(int16_t), ECX);
- JAEb(4);
- MOVrq3(R8, RBX);
+ if (fmem) {
+ JAEb(2);
+ LEAVE();
+ } else
+ JAEb(1);
RET();
- MOVobw(RBX, RSI, AX);
+ MOVrq3(R8, RCX);
+ MOVobw(RCX, RSI, AX);
SWAP_AX();
break;
@@ -196,10 +279,14 @@
ZEROrd(EAX);
MOVid(ins->k, ESI);
CMPrd(EDI, ESI);
- JBb(4);
- MOVrq3(R8, RBX);
+ if (fmem) {
+ JBb(2);
+ LEAVE();
+ } else
+ JBb(1);
RET();
- MOVobb(RBX, RSI, AL);
+ MOVrq3(R8, RCX);
+ MOVobb(RCX, RSI, AL);
break;
case BPF_LD|BPF_W|BPF_LEN:
@@ -222,11 +309,17 @@
MOVrd(EDI, ECX);
SUBrd(ESI, ECX);
CMPid(sizeof(int32_t), ECX);
- JAEb(6);
- ZEROrd(EAX);
- MOVrq3(R8, RBX);
+ if (fmem) {
+ JAEb(4);
+ ZEROrd(EAX);
+ LEAVE();
+ } else {
+ JAEb(3);
+ ZEROrd(EAX);
+ }
RET();
- MOVobd(RBX, RSI, EAX);
+ MOVrq3(R8, RCX);
+ MOVobd(RCX, RSI, EAX);
BSWAP(EAX);
break;
@@ -243,10 +336,14 @@
MOVrd(EDI, ECX);
SUBrd(ESI, ECX);
CMPid(sizeof(int16_t), ECX);
- JAEb(4);
- MOVrq3(R8, RBX);
+ if (fmem) {
+ JAEb(2);
+ LEAVE();
+ } else
+ JAEb(1);
RET();
- MOVobw(RBX, RSI, AX);
+ MOVrq3(R8, RCX);
+ MOVobw(RCX, RSI, AX);
SWAP_AX();
break;
@@ -258,22 +355,32 @@
MOVrd(EDI, ECX);
SUBrd(EDX, ECX);
CMPrd(ESI, ECX);
- JAb(4);
- MOVrq3(R8, RBX);
+ if (fmem) {
+ JAb(2);
+ LEAVE();
+ } else
+ JAb(1);
RET();
+ MOVrq3(R8, RCX);
ADDrd(EDX, ESI);
- MOVobb(RBX, RSI, AL);
+ MOVobb(RCX, RSI, AL);
break;
case BPF_LDX|BPF_MSH|BPF_B:
MOVid(ins->k, ESI);
CMPrd(EDI, ESI);
- JBb(6);
- ZEROrd(EAX);
- MOVrq3(R8, RBX);
+ if (fmem) {
+ JBb(4);
+ ZEROrd(EAX);
+ LEAVE();
+ } else {
+ JBb(3);
+ ZEROrd(EAX);
+ }
RET();
ZEROrd(EDX);
- MOVobb(RBX, RSI, DL);
+ MOVrq3(R8, RCX);
+ MOVobb(RCX, RSI, DL);
ANDib(0x0f, DL);
SHLib(2, EDX);
break;
@@ -287,15 +394,13 @@
break;
case BPF_LD|BPF_MEM:
- MOViq((uintptr_t)mem, RCX);
- MOVid(ins->k * 4, ESI);
- MOVobd(RCX, RSI, EAX);
+ MOVid(ins->k * sizeof(uint32_t), ESI);
+ MOVobd(RSP, RSI, EAX);
break;
case BPF_LDX|BPF_MEM:
- MOViq((uintptr_t)mem, RCX);
- MOVid(ins->k * 4, ESI);
- MOVobd(RCX, RSI, EDX);
+ MOVid(ins->k * sizeof(uint32_t), ESI);
+ MOVobd(RSP, RSI, EDX);
break;
case BPF_ST:
@@ -304,15 +409,13 @@
* be optimized if the previous instruction
* was already of this type
*/
- MOViq((uintptr_t)mem, RCX);
- MOVid(ins->k * 4, ESI);
- MOVomd(EAX, RCX, RSI);
+ MOVid(ins->k * sizeof(uint32_t), ESI);
+ MOVomd(EAX, RSP, RSI);
break;
case BPF_STX:
- MOViq((uintptr_t)mem, RCX);
- MOVid(ins->k * 4, ESI);
- MOVomd(EDX, RCX, RSI);
+ MOVid(ins->k * sizeof(uint32_t), ESI);
+ MOVomd(EDX, RSP, RSI);
break;
case BPF_JMP|BPF_JA:
@@ -392,9 +495,14 @@
case BPF_ALU|BPF_DIV|BPF_X:
TESTrd(EDX, EDX);
- JNEb(6);
- ZEROrd(EAX);
- MOVrq3(R8, RBX);
+ if (fmem) {
+ JNEb(4);
+ ZEROrd(EAX);
+ LEAVE();
+ } else {
+ JNEb(3);
+ ZEROrd(EAX);
+ }
RET();
MOVrd(EDX, ECX);
ZEROrd(EDX);
@@ -474,47 +582,56 @@
ins++;
}
- pass++;
- if (pass == 2)
- break;
+ if (pass > 0)
+ continue;
+ *size = stream.cur_ip;
#ifdef _KERNEL
- stream.ibuf = (char *)malloc(stream.cur_ip, M_BPFJIT, M_NOWAIT);
- if (stream.ibuf == NULL) {
- free(stream.refs, M_BPFJIT);
- return (NULL);
- }
+ stream.ibuf = malloc(*size, M_BPFJIT, M_NOWAIT);
+ if (stream.ibuf == NULL)
+ break;
#else
- stream.ibuf = (char *)malloc(stream.cur_ip);
- if (stream.ibuf == NULL) {
- free(stream.refs);
- return (NULL);
+ stream.ibuf = mmap(NULL, *size, PROT_READ | PROT_WRITE,
+ MAP_ANON, -1, 0);
+ if (stream.ibuf == MAP_FAILED) {
+ stream.ibuf = NULL;
+ break;
}
#endif
/*
- * modify the reference table to contain the offsets and
- * not the lengths of the instructions
+ * Modify the reference table to contain the offsets and
+ * not the lengths of the instructions.
*/
- for (i = 1; i < nins + 1; i++)
- stream.refs[i] += stream.refs[i - 1];
+ if (fjmp)
+ for (i = 1; i < nins + 1; i++)
+ stream.refs[i] += stream.refs[i - 1];
- /* Reset the counters */
+ /* Reset the counters. */
stream.cur_ip = 0;
stream.bpf_pc = 0;
- /* the second pass creates the actual code */
+ /* The second pass creates the actual code. */
emitm = emit_code;
}
/*
- * the reference table is needed only during compilation,
- * now we can free it
+ * The reference table is needed only during compilation,
+ * now we can free it.
*/
+ if (fjmp)
#ifdef _KERNEL
- free(stream.refs, M_BPFJIT);
+ free(stream.refs, M_BPFJIT);
#else
- free(stream.refs);
+ free(stream.refs);
+#endif
+
+#ifndef _KERNEL
+ if (stream.ibuf != NULL &&
+ mprotect(stream.ibuf, *size, PROT_READ | PROT_EXEC) != 0) {
+ munmap(stream.ibuf, *size);
+ stream.ibuf = NULL;
+ }
#endif
return ((bpf_filter_func)stream.ibuf);
==== //depot/projects/usb/src/sys/amd64/amd64/bpf_jit_machdep.h#4 (text+ko) ====
@@ -1,6 +1,6 @@
/*-
* Copyright (C) 2002-2003 NetGroup, Politecnico di Torino (Italy)
- * Copyright (C) 2005-2008 Jung-uk Kim <jkim at FreeBSD.org>
+ * Copyright (C) 2005-2009 Jung-uk Kim <jkim at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -28,7 +28,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/amd64/amd64/bpf_jit_machdep.h,v 1.10 2008/08/25 20:43:13 jkim Exp $
+ * $FreeBSD: src/sys/amd64/amd64/bpf_jit_machdep.h,v 1.14 2009/11/23 22:23:19 jkim Exp $
*/
#ifndef _BPF_JIT_MACHDEP_H_
@@ -85,7 +85,17 @@
#define DL 2
#define BL 3
-/* A stream of native binary code.*/
+/* Optimization flags */
+#define BPF_JIT_FRET 0x01
+#define BPF_JIT_FPKT 0x02
+#define BPF_JIT_FMEM 0x04
+#define BPF_JIT_FJMP 0x08
+#define BPF_JIT_FLEN 0x10
+
+#define BPF_JIT_FLAG_ALL \
+ (BPF_JIT_FPKT | BPF_JIT_FMEM | BPF_JIT_FJMP | BPF_JIT_FLEN)
+
+/* A stream of native binary code */
typedef struct bpf_bin_stream {
/* Current native instruction pointer. */
int cur_ip;
@@ -117,7 +127,7 @@
typedef void (*emit_func)(bpf_bin_stream *stream, u_int value, u_int n);
/*
- * native Instruction Macros
+ * Native instruction macros
*/
/* movl i32,r32 */
@@ -215,8 +225,18 @@
emitm(&stream, 0xc486, 2); \
} while (0)
-/* ret */
-#define RET() do { \
+/* pushq r64 */
+#define PUSH(r64) do { \
+ emitm(&stream, (5 << 4) | (0 << 3) | (r64 & 0x7), 1); \
+} while (0)
+
+/* leaveq */
+#define LEAVE() do { \
+ emitm(&stream, 0xc9, 1); \
+} while (0)
+
+/* retq */
+#define RET() do { \
emitm(&stream, 0xc3, 1); \
} while (0)
@@ -253,6 +273,13 @@
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list