diff -Nur -x compile sys.orig/arch/i386/conf/a sys/arch/i386/conf/a --- sys.orig/arch/i386/conf/a Thu Jan 1 00:00:00 1970 +++ sys/arch/i386/conf/a Wed Apr 13 15:17:28 2005 @@ -0,0 +1,1082 @@ +# $NetBSD: GENERIC,v 1.491.4.6 2003/10/05 11:49:20 tron Exp $ +# +# GENERIC machine description file +# +# This machine description file is used to generate the default NetBSD +# kernel. The generic kernel does not include all options, subsystems +# and device drivers, but should be useful for most applications. +# +# The machine description file can be customised for your specific +# machine to reduce the kernel size and improve its performance. +# +# For further information on compiling NetBSD kernels, see the config(8) +# man page. +# +# For further information on hardware support for this architecture, see +# the intro(4) man page. For further information about kernel options +# for this architecture, see the options(4) man page. For an explanation +# of each device driver in this file see the section 4 man page for the +# device. + +include "arch/i386/conf/std.i386" + +options INCLUDE_CONFIG_FILE # embed config file in kernel binary + +#ident "GENERIC-$Revision: 1.1 $" + +maxusers 32 # estimated number of users + +# CPU support. At least one is REQUIRED. +options I386_CPU +options I486_CPU +options I586_CPU +options I686_CPU + +# CPU-related options. +options MATH_EMULATE # floating point emulation +options VM86 # virtual 8086 emulation +options USER_LDT # user-settable LDT; used by WINE +# eliminate delay no-ops in I/O; recommended on all but very old machines +#options DUMMY_NOPS + +options MTRR # memory-type range register syscall support +options PERFCTRS # performance-monitoring counters support + +# delay between "rebooting ..." message and hardware reset, in milliseconds +#options CPURESET_DELAY=2000 + +# This option allows you to force a serial console at the specified +# I/O address. see console(4) for details. +#options CONSDEVNAME="\"com\"",CONADDR=0x2f8,CONSPEED=57600 +# you don't want the option below ON iff you are using the +# serial console option of the new boot strap code. +#options CONS_OVERRIDE # Always use above! independent of boot info + +# The following options override the memory sizes passed in from the boot +# block. Use them *only* if the boot block is unable to determine the correct +# values. Note that the BIOS may *correctly* report less than 640k of base +# memory if the extended BIOS data area is located at the top of base memory +# (as is the case on most recent systems). +#options REALBASEMEM=639 # size of base memory (in KB) +#options REALEXTMEM=15360 # size of extended memory (in KB) + +# Standard system options + +options UCONSOLE # users can use TIOCCONS (for xconsole) +options INSECURE # disable kernel security levels + +options RTC_OFFSET=0 # hardware clock is this many mins. west of GMT +options NTP # NTP phase/frequency locked loop + +options KTRACE # system call tracing via ktrace(1) + +options SYSVMSG # System V-like message queues +options SYSVSEM # System V-like semaphores +#options SEMMNI=10 # number of semaphore identifiers +#options SEMMNS=60 # number of semaphores in system +#options SEMUME=10 # max number of undo entries per process +#options SEMMNU=30 # number of undo structures in system +options SYSVSHM # System V-like memory sharing +#options SHMMAXPGS=1024 # 1024 pages is the default + +options LKM # loadable kernel modules + +options USERCONF # userconf(4) support +#options PIPE_SOCKETPAIR # smaller, but slower pipe(2) + +# Diagnostic/debugging support options +#options DIAGNOSTIC # expensive kernel consistency checks +#options DEBUG # expensive debugging checks/support +#options KMEMSTATS # kernel memory statistics (vmstat -m) +options DDB # in-kernel debugger +options DDB_HISTORY_SIZE=512 # enable history editing in DDB +#options KGDB # remote debugger +#options KGDB_DEVNAME="\"com\"",KGDB_DEVADDR=0x3f8,KGDB_DEVRATE=9600 +#makeoptions DEBUG="-g" # compile full symbol table + +# Compatibility options +options COMPAT_NOMID # compatibility with 386BSD, BSDI, NetBSD 0.8, +options COMPAT_09 # NetBSD 0.9, +options COMPAT_10 # NetBSD 1.0, +options COMPAT_11 # NetBSD 1.1, +options COMPAT_12 # NetBSD 1.2, +options COMPAT_13 # NetBSD 1.3, +options COMPAT_14 # NetBSD 1.4, +options COMPAT_15 # NetBSD 1.5, +options COMPAT_43 # and 4.3BSD +options COMPAT_386BSD_MBRPART # recognize old partition ID +#options TCP_COMPAT_42 # 4.2BSD TCP/IP bug compat. Not recommended. + +options COMPAT_SVR4 # binary compatibility with SVR4 +options COMPAT_IBCS2 # binary compatibility with SCO and ISC +options COMPAT_LINUX # binary compatibility with Linux +options COMPAT_FREEBSD # binary compatibility with FreeBSD +#options COMPAT_MACH # binary compatibility with Mach binaries +#options EXEC_MACHO # exec MACH-O binaries +#options COMPAT_PECOFF # kernel support to run Win32 apps + +# File systems +file-system FFS # UFS +file-system EXT2FS # second extended file system (linux) +file-system LFS # log-structured file system +file-system MFS # memory file system +file-system NFS # Network File System client +file-system NTFS # Windows/NT file system (experimental) +file-system CD9660 # ISO 9660 + Rock Ridge file system +file-system MSDOSFS # MS-DOS file system +file-system FDESC # /dev/fd +file-system KERNFS # /kern +file-system NULLFS # loopback file system +file-system OVERLAY # overlay file system +file-system PORTAL # portal filesystem (still experimental) +file-system PROCFS # /proc +file-system UMAPFS # NULLFS + uid and gid remapping +file-system UNION # union file system +file-system CODA # Coda File System; also needs vcoda (below) + +# File system options +options QUOTA # UFS quotas +#options FFS_EI # FFS Endian Independent support +options SOFTDEP # FFS soft updates support. +options NFSSERVER # Network File System server +#options EXT2FS_SYSTEM_FLAGS # makes ext2fs file flags (append and + # immutable) behave as system flags. + +# Networking options +#options GATEWAY # packet forwarding +options INET # IP + ICMP + TCP + UDP +options INET6 # IPV6 +#options IPSEC # IP security +#options IPSEC_ESP # IP security (encryption part; define w/IPSEC) +#options IPSEC_DEBUG # debug for IP security +#options MROUTING # IP multicast routing +options NS # XNS +#options NSIP # XNS tunneling over IP +options ISO,TPIP # OSI +#options EON # OSI tunneling over IP +options CCITT,LLC,HDLC # X.25 +options NETATALK # AppleTalk networking protocols +options PPP_BSDCOMP # BSD-Compress compression support for PPP +options PPP_DEFLATE # Deflate compression support for PPP +options PPP_FILTER # Active filter support for PPP (requires bpf) +options PFIL_HOOKS # pfil(9) packet filter hooks +options IPFILTER_LOG # ipmon(8) log support +#options IPFILTER_DEFAULT_BLOCK # block all packets by default +#options TCP_DEBUG # Record last TCP_NDEBUG packets with SO_DEBUG + +# These options enable verbose messages for several subsystems. +# Warning, these may compile large string tables into the kernel! +options EISAVERBOSE # verbose EISA device autoconfig messages +options MIIVERBOSE # verbose PHY autoconfig messages +options PCIVERBOSE # verbose PCI device autoconfig messages +#options PCI_CONFIG_DUMP # verbosely dump PCI config space +#options PCMCIAVERBOSE # verbose PCMCIA configuration messages +options SCSIVERBOSE # human readable SCSI error messages +options USBVERBOSE # verbose USB device autoconfig messages +#options PNPBIOSVERBOSE # verbose PnP BIOS messages +#options PNPBIOSDEBUG # more fulsome PnP BIOS debugging messages +options I2OVERBOSE # verbose I2O driver messages +options MCAVERBOSE # verbose MCA device autoconfig messages + +options NFS_BOOT_DHCP,NFS_BOOT_BOOTPARAM + +# +# wscons options +# +# builtin terminal emulations +#options WSEMUL_SUN # sun terminal emulation +options WSEMUL_VT100 # VT100 / VT220 emulation +# different kernel output - see dev/wscons/wsdisplayvar.h +options WS_KERNEL_FG=WSCOL_GREEN +#options WS_KERNEL_BG=WSCOL_BLACK +# compatibility to other console drivers +options WSDISPLAY_COMPAT_PCVT # emulate some ioctls +options WSDISPLAY_COMPAT_SYSCONS # emulate some ioctls +options WSDISPLAY_COMPAT_USL # VT handling +options WSDISPLAY_COMPAT_RAWKBD # can get raw scancodes +# see dev/pckbc/wskbdmap_mfii.c for implemented layouts +#options PCKBD_LAYOUT="(KB_DE | KB_NODEAD)" +# allocate a number of virtual screens at autoconfiguration time +#options WSDISPLAY_DEFAULTSCREENS=4 +# use a large software cursor that doesn't blink +options PCDISPLAY_SOFTCURSOR +# modify the screen type of the console; defaults to "80x25" +#options VGA_CONSOLE_SCREENTYPE="\"80x24\"" + +# Kernel root file system and dump configuration. +config netbsd root on ? type ? +#config netbsd root on sd0a type ffs +#config netbsd root on ? type nfs + +# +# Device configuration +# + +mainbus0 at root + +#apm0 at mainbus0 # Advanced power management + +# Tuning for power management, see apm(4) for more details. +#options APM_NO_IDLE # Don't call BIOS CPU idle function +#options APM_V10_ONLY # Use only the APM 1.0 calls +#options APM_NO_POWEROFF # Don't power off on halt(8) +#options APM_POWER_PRINT # Print stats on the console +#options APM_DISABLE_INTERRUPTS=0 # Don't disable interrupts + + +# Basic Bus Support + +# Plug-and-Play BIOS and attached devices + +#pnpbios* at mainbus? + +# mainboard audio chips +#ess* at pnpbios? index ? # ESS AudioDrive +#sb* at pnpbios? index ? # NeoMagic 256AV in sb mode +#wss* at pnpbios? index ? # NeoMagic 256AV in wss mode +#ym* at pnpbios? index ? # OPL3-SA3 + +# com port +# If enabled, consider changing "com0", "com1", and "com2" under "ISA Serial +# Interfaces" to "com*", otherwise com2 will attach at pnpbios? and there +# will be no com0. A side effect is pcmcia (and other) com? previously +# starting at com3 may attach as com1 or com2. +#com* at pnpbios? index ? # serial ports + +# parallel port +# The above "com*" comments apply, cf. "lpt0" under "ISA parallel +# "printer interfaces". +#lpt* at pnpbios? index ? # parallel ports + +#pckbc* at pnpbios? index ? # PC keyboard/mouse controller +#fdc* at pnpbios? index ? # floppy controller + +# IDE controller on Toshiba Portege 3000 series (crippled PCI device) +#pciide* at pnpbios? index ? + +# PCI bus support +pci* at mainbus? bus ? +pci* at pchb? bus ? +pci* at ppb? bus ? + +# Configure PCI using BIOS information +#options PCIBIOS # PCI BIOS support +#options PCIBIOSVERBOSE # PCI BIOS verbose info +#options PCIBIOS_ADDR_FIXUP # fixup PCI I/O addresses +#options PCIBIOS_BUS_FIXUP # fixup PCI bus numbering +#options PCIBIOS_INTR_FIXUP # fixup PCI interrupt routing +#options PCIBIOS_IRQS_HINT=0x0a00 # PCI interrupts hint. IRQ 9 or 11 +#options PCIBIOS_INTR_GUESS # see pcibios(4) +#options PCIINTR_DEBUG # super-verbose PCI interrupt fixup + +# PCI bridges +pchb* at pci? dev ? function ? # PCI-Host bridges +pceb* at pci? dev ? function ? # PCI-EISA bridges +pcib* at pci? dev ? function ? # PCI-ISA bridges +pcmb* at pci? dev ? function ? # PCI-MCA bridges +ppb* at pci? dev ? function ? # PCI-PCI bridges +# XXX 'puc's aren't really bridges, but there's no better place for them here +puc* at pci? dev ? function ? # PCI "universal" comm. cards + +agp* at pchb? + +# EISA bus support +eisa0 at mainbus? +eisa0 at pceb? + +# ISA bus support +isa0 at mainbus? +isa0 at pceb? +isa0 at pcib? + +# PCMCIA bus support +pcmcia* at pcic? controller ? socket ? +pcmcia* at tcic? controller ? socket ? + +# MCA bus support +mca0 at mainbus? + +# ISA PCMCIA controllers +pcic0 at isa? port 0x3e0 iomem 0xd0000 iosiz 0x10000 +pcic1 at isa? port 0x3e2 iomem 0xe0000 iosiz 0x4000 +pcic2 at isa? port 0x3e4 iomem 0xe0000 iosiz 0x4000 +tcic0 at isa? port 0x240 iomem 0xd0000 iosiz 0x10000 + +# PCI PCMCIA controllers +pcic0 at pci? dev? function ? + +# ISA Plug-and-Play bus support +isapnp0 at isa? + +# ISA Plug-and-Play PCMCIA controllers +pcic* at isapnp? + +# CardBus bridge support +#cbb* at pci? dev ? function ? +#cardslot* at cbb? + +# CardBus bus support +#cardbus* at cardslot? +#pcmcia* at cardslot? + +# Coprocessor Support + +# Math Coprocessor support +npx0 at isa? port 0xf0 irq 13 # x86 math coprocessor + + +# Console Devices + +# ISA console +#pc0 at isa? port 0x60 irq 1 # pccons generic PC console driver +# Keyboard layout configuration for pccons +#options FRENCH_KBD +#options FINNISH_KBD +#options GERMAN_KBD +#options NORWEGIAN_KBD +# pccons-specific options: +#options XSERVER_DDB # PF12 gets you into DDB when X is running +#options XSERVER # X server support + + +# wscons +pckbc0 at isa? # pc keyboard controller +pckbd* at pckbc? # PC keyboard +pms* at pckbc? # PS/2 mouse for wsmouse +#options PMS_DISABLE_POWERHOOK +vga0 at isa? +vga* at pci? dev ? function ? +pcdisplay0 at isa? # CGA, MDA, EGA, HGA +wsdisplay* at vga? console ? +wsdisplay* at pcdisplay? console ? +wskbd* at pckbd? console ? +wsmouse* at pms? mux 0 + +pcppi0 at isa? +sysbeep0 at pcppi? + +# Serial Devices + +# PCI serial interfaces +com* at puc? port ? # 16x50s on "universal" comm boards +cy* at pci? dev ? function ? # Cyclades Cyclom-Y serial boards +cz* at pci? dev ? function ? # Cyclades-Z multi-port serial boards + +# ISA Plug-and-Play serial interfaces +com* at isapnp? # Modems and serial boards + +# PCMCIA serial interfaces +com* at pcmcia? function ? # Modems and serial cards + +pcmcom* at pcmcia? function ? # PCMCIA multi-port serial cards +com* at pcmcom? slave ? # ...and the slave devices + +# CardBus serial interfaces +#com* at cardbus? dev ? function ? # Modems and serial cards + +# ISA serial interfaces +#options COM_HAYESP # adds Hayes ESP serial board support +com0 at isa? port 0x3f8 irq 4 # Standard PC serial ports +com1 at isa? port 0x2f8 irq 3 +com2 at isa? port 0x3e8 irq 5 +#com3 at isa? port 0x2e8 irq 9 +#ast0 at isa? port 0x1a0 irq 5 # AST 4-port serial cards +#com* at ast? slave ? +#boca0 at isa? port 0x100 irq 5 # BOCA 8-port serial cards +#boca0 at isa? port 0x100 irq 5 # BOCA 16-port serial cards (BB2016) +#boca1 at isa? port 0x140 irq 5 # this line is also needed for BB2016 +#com* at boca? slave ? +#tcom0 at isa? port 0x100 irq 7 # TC-800 8-port serial cards +#com* at tcom? slave ? +#rtfps0 at isa? port 0x1230 irq 10 # RT 4-port serial cards +#com* at rtfps? slave ? +#cy0 at isa? iomem 0xd4000 irq 12 # Cyclades serial cards +#addcom0 at isa? port 0x108 irq 5 # Addonics FlexPort 8S +#com* at addcom? slave ? +#moxa0 at isa? port 0x100 irq 5 # MOXA C168H serial card (experimental) +#com* at moxa? slave ? + +# MCA serial interfaces +com* at mca? slot ? # 16x50s on comm boards + +# Parallel Printer Interfaces + +# PCI parallel printer interfaces +lpt* at puc? port ? # || ports on "universal" comm boards + +# ISA parallel printer interfaces +lpt0 at isa? port 0x378 irq 7 # standard PC parallel ports +lpt1 at isa? port 0x278 +lpt2 at isa? port 0x3bc + +# Hardware monitors + +# LM7[89] and compatible hardware monitors +#lm0 at isa? port 0x290 # other common ports: 0x280, 0x310 + +# VIA VT82C686A hardware monitor +#viapm* at pci? dev ? function ? +#viaenv* at viapm? + + +# I2O devices +iop* at pci? dev ? function ? # I/O processor +iopsp* at iop? tid ? # SCSI/FC-AL ports +ld* at iop? tid ? # block devices +dpti* at iop? tid 0 # DPT/Adaptec control interface + + +# SCSI Controllers and Devices + +# PCI SCSI controllers +adv* at pci? dev ? function ? # AdvanSys 1200[A,B], 9xx[U,UA] SCSI +adw* at pci? dev ? function ? # AdvanSys 9x0UW[D], 3940U[2,3]W SCSI +ahc* at pci? dev ? function ? # Adaptec [23]94x, aic78x0 SCSI +bha* at pci? dev ? function ? # BusLogic 9xx SCSI +dpt* at pci? dev ? function ? # DPT SmartCache/SmartRAID +iha* at pci? dev ? function ? # Initio INIC-940/950 SCSI +isp* at pci? dev ? function ? # Qlogic ISP [12]0x0 SCSI/FibreChannel +mly* at pci? dev ? function ? # Mylex AcceleRAID and eXtremeRAID +pcscp* at pci? dev ? function ? # AMD 53c974 PCscsi-PCI SCSI +siop* at pci? dev ? function ? # Symbios 53c8xx SCSI +#options SIOP_SYMLED # drive the act. LED in software +trm* at pci? dev ? function ? # Tekram DC-395U/UW/F, DC-315/U SCSI + +# EISA SCSI controllers +ahb* at eisa? slot ? # Adaptec 174[02] SCSI +ahc* at eisa? slot ? # Adaptec 274x, aic7770 SCSI +bha* at eisa? slot ? # BusLogic 7xx SCSI +dpt* at eisa? slot ? # DPT EATA SCSI +uha* at eisa? slot ? # UltraStor 24f SCSI + +# PCMCIA SCSI controllers +aic* at pcmcia? function ? # Adaptec APA-1460 SCSI +esp* at pcmcia? function ? # Qlogic ESP406/FAS408 SCSI + +# ISA Plug-and-Play SCSI controllers +aha* at isapnp? # Adaptec AHA-154[02 +aic* at isapnp? # Adaptec AHA-1520B + +# ISA SCSI controllers +adv0 at isa? port ? irq ? drq ? # AdvanSys APB-514[02] SCSI +aha0 at isa? port 0x330 irq ? drq ? # Adaptec 154[02] SCSI +aha1 at isa? port 0x334 irq ? drq ? +ahc0 at isa? port ? irq ? # Adaptec 284x SCSI +aic0 at isa? port 0x340 irq 11 # Adaptec 152[02] SCSI +bha0 at isa? port 0x330 irq ? drq ? # BusLogic [457]4X SCSI +bha1 at isa? port 0x334 irq ? drq ? +# The "nca" and "dpt" probes might give false hits or hang your machine. +#dpt0 at isa? port 0x170 irq ? drq ? # DPT SmartCache/SmartRAID +#nca0 at isa? port 0x360 irq 15 # Port-mapped NCR 53C80 controller +#nca1 at isa? iomem 0xd8000 irq 5 # Memory-mapped controller (T128, etc.) +sea0 at isa? iomem 0xc8000 irq 5 # Seagate/Future Domain SCSI +uha0 at isa? port 0x330 irq ? drq ? # UltraStor [13]4f SCSI +uha1 at isa? port 0x340 irq ? drq ? +wds0 at isa? port 0x350 irq 15 drq 6 # WD7000 and TMC-7000 controllers +wds1 at isa? port 0x358 irq 11 drq 5 + +# CardBus SCSI cards +#adv* at cardbus? dev ? function ? # AdvanSys 1200[A,B], 9xx[U,UA] SCSI +#ahc* at cardbus? dev ? function ? # Adaptec ADP-1480 + +# MCA SCSI cards +aha* at mca? slot ? # Adaptec AHA-1640 + +# SCSI bus support +scsibus* at adv? +scsibus* at adw? +scsibus* at aha? +scsibus* at ahb? +scsibus* at ahc? +scsibus* at aic? +scsibus* at bha? +scsibus* at dpt? +scsibus* at esp? +scsibus* at iha? +scsibus* at iopsp? +scsibus* at isp? +scsibus* at mly? +#scsibus* at nca? +scsibus* at pcscp? +scsibus* at sea? +scsibus* at siop? +scsibus* at trm? +scsibus* at uha? +scsibus* at wds? + +# SCSI devices +sd* at scsibus? target ? lun ? # SCSI disk drives +st* at scsibus? target ? lun ? # SCSI tape drives +cd* at scsibus? target ? lun ? # SCSI CD-ROM drives +ch* at scsibus? target ? lun ? # SCSI autochangers +ses* at scsibus? target ? lun ? # SCSI Enclosure Services devices +ss* at scsibus? target ? lun ? # SCSI scanners +uk* at scsibus? target ? lun ? # SCSI unknown + + +# RAID controllers and devices +aac* at pci? dev ? function ? # Adaptec AAC family +cac* at eisa? slot ? # Compaq EISA array controllers +cac* at pci? dev ? function ? # Compaq PCI array controllers +icp* at pci? dev ? function ? # ICP-Vortex GDT & Intel RAID +mlx* at pci? dev ? function ? # Mylex DAC960 & DEC SWXCR family +mlx* at eisa? slot ? # Mylex DAC960 & DEC SWXCR family +twe* at pci? dev ? function ? # 3ware Escalade RAID controllers + +ld* at aac? unit ? # logical disk devices +ld* at cac? unit ? +ld* at icp? unit ? +ld* at twe? unit ? +ld* at mlx? unit ? + +icpsp* at icp? unit ? # SCSI pass-through +scsibus* at icpsp? + +# IDE and related devices +# PCI IDE controllers - see pciide(4) for supported hardware. +# The 0x0001 flag force the driver to use DMA, even if the driver doesn't know +# how to set up DMA modes for this chip. This may work, or may cause +# a machine hang with some controllers. +pciide* at pci? dev ? function ? flags 0x0000 + +# ISA Plug-and-Play IDE controllers +wdc* at isapnp? + +# PCMCIA IDE controllers +wdc* at pcmcia? function ? + +# ISA ST506, ESDI, and IDE controllers +# Use flags 0x01 if you want to try to use 32bits data I/O (the driver will +# fall back to 16bits I/O if 32bits I/O are not functional). +# Some controllers pass the initial 32bit test, but will fail later. +wdc0 at isa? port 0x1f0 irq 14 flags 0x00 +wdc1 at isa? port 0x170 irq 15 flags 0x00 + +# IDE drives +# Flags are used only with controllers that support DMA operations +# and mode settings (e.g. some pciide controllers) +# The lowest order four bits (rightmost digit) of the flags define the PIO +# mode to use, the next set of four bits the DMA mode and the third set the +# UltraDMA mode. For each set of four bits, the 3 lower bits define the mode +# to use, and the last bit must be 1 for this setting to be used. +# For DMA and UDMA, 0xf (1111) means 'disable'. +# 0x0fac means 'use PIO mode 4, DMA mode 2, disable UltraDMA'. +# (0xc=1100, 0xa=1010, 0xf=1111) +# 0x0000 means "use whatever the drive claims to support". +wd* at wdc? channel ? drive ? flags 0x0000 +wd* at pciide? channel ? drive ? flags 0x0000 + +# ATAPI bus support +atapibus* at wdc? channel ? +atapibus* at pciide? channel ? + +# ATAPI devices +# flags have the same meaning as for IDE drives. +cd* at atapibus? drive ? flags 0x0000 # ATAPI CD-ROM drives +sd* at atapibus? drive ? flags 0x0000 # ATAPI disk drives +st* at atapibus? drive ? flags 0x0000 # ATAPI tape drives +uk* at atapibus? drive ? flags 0x0000 # ATAPI unknown + + +# Miscellaneous mass storage devices + +# ISA floppy +fdc0 at isa? port 0x3f0 irq 6 drq 2 # standard PC floppy controllers +#fdc1 at isa? port 0x370 irq ? drq ? +fd* at fdc? drive ? # the drives themselves +# some machines need you to do this instead of fd* +#fd0 at fdc0 drive 0 + +# ISA CD-ROM devices +#mcd0 at isa? port 0x300 irq 10 # Mitsumi CD-ROM drives + +# ISA tape devices +# note: the wt driver conflicts unpleasantly with SMC boards at the +# same I/O address. The probe reprograms their EEPROMs. Don't +# uncomment it unless you are actually using it. +#wt0 at isa? port 0x308 irq 5 drq 1 # Archive and Wangtek QIC tape drives + +# MCA ESDI devices +edc* at mca? slot ? # IBM ESDI Disk Controllers +ed* at edc? + + +# Network Interfaces + +# PCI network interfaces +an* at pci? dev ? function ? # Aironet PC4500/PC4800 (802.11) +bce* at pci? dev ? function ? # Broadcom 4401 10/100 Ethernet +bge* at pci? dev ? function ? # Broadcom 570x gigabit Ethernet +en* at pci? dev ? function ? # ENI/Adaptec ATM +ep* at pci? dev ? function ? # 3Com 3c59x +epic* at pci? dev ? function ? # SMC EPIC/100 Ethernet +esh* at pci? dev ? function ? # Essential HIPPI card +ex* at pci? dev ? function ? # 3Com 90x[BC] +fpa* at pci? dev ? function ? # DEC DEFPA FDDI +fxp* at pci? dev ? function ? # Intel EtherExpress PRO 10+/100B +gsip* at pci? dev ? function ? # NS83820 Gigabit Ethernet +#hme* at pci? dev ? function ? # Sun Microelectronics STP2002-STQ +le* at pci? dev ? function ? # PCnet-PCI Ethernet +lmc* at pci? dev ? function ? # Lan Media Corp SSI/HSSI/DS3 +ne* at pci? dev ? function ? # NE2000-compatible Ethernet +ntwoc* at pci? dev ? function ? # Riscom/N2 PCI Sync Serial +pcn* at pci? dev ? function ? # AMD PCnet-PCI Ethernet +rtk* at pci? dev ? function ? # Realtek 8129/8139 +sf* at pci? dev ? function ? # Adaptec AIC-6915 Ethernet +sip* at pci? dev ? function ? # SiS 900/DP83815 Ethernet +ste* at pci? dev ? function ? # Sundance ST-201 Ethernet +stge* at pci? dev ? function ? # Sundance/Tamarack TC9021 Gigabit +ti* at pci? dev ? function ? # Alteon ACEnic gigabit Ethernet +tl* at pci? dev ? function ? # ThunderLAN-based Ethernet +tlp* at pci? dev ? function ? # DECchip 21x4x and clones +vr* at pci? dev ? function ? # VIA Rhine Fast Ethernet +wi* at pci? dev ? function ? # Intersil Prism Mini-PCI (802.11b) +wm* at pci? dev ? function ? # Intel 82543/82544 gigabit + +# EISA network interfaces +ep* at eisa? slot ? # 3Com 3c579 Ethernet +fea* at eisa? slot ? # DEC DEFEA FDDI +tlp* at eisa? slot ? # DEC DE-425 Ethernet + +# ISA Plug-and-Play network interfaces +an* at isapnp? # Aironet 802.11 +ep* at isapnp? # 3Com 3c509 Ethernet +ne* at isapnp? # NE2000-compatible Ethernet +tr* at isapnp? # IBM/3COM TROPIC Token-Ring + +# PCMCIA network interfaces +an* at pcmcia? function ? # Aironet PC4500/PC4800 (802.11) +awi* at pcmcia? function ? # BayStack 650/660 (802.11FH/DS) +cnw* at pcmcia? function ? # Xircom/Netwave AirSurfer +ep* at pcmcia? function ? # 3Com 3c589 and 3c562 Ethernet +mbe* at pcmcia? function ? # MB8696x based Ethernet +ne* at pcmcia? function ? # NE2000-compatible Ethernet +ray* at pcmcia? function ? # Raytheon Raylink (802.11) +sm* at pcmcia? function ? # Megahertz Ethernet +# tr at pcmcia has problems with Cardbus bridges +#tr* at pcmcia? function ? # TROPIC based Token-Ring +wi* at pcmcia? function ? # Lucent WaveLan IEEE (802.11) +xi* at pcmcia? function ? # Xircom CreditCard Ethernet + +mhzc* at pcmcia? function ? # Megahertz Ethernet/Modem combo cards +com* at mhzc? +sm* at mhzc? + +# ISA network interfaces +ate0 at isa? port 0x2a0 irq ? # AT1700 +cs0 at isa? port 0x300 iomem ? irq ? drq ? # CS8900 Ethernet +ec0 at isa? port 0x250 iomem 0xd8000 irq 9 # 3Com 3c503 Ethernet +eg0 at isa? port 0x280 irq 9 # 3C505 ethernet cards +el0 at isa? port 0x300 irq 9 # 3C501 ethernet cards +ep* at isa? port ? irq ? # 3C509 ethernet cards +ef0 at isa? port 0x360 iomem 0xd0000 irq 7 # 3C507 +ai0 at isa? port 0x360 iomem 0xd0000 irq 7 # StarLAN +fmv0 at isa? port 0x2a0 irq ? # FMV-180 series +ix0 at isa? port 0x300 irq 10 # EtherExpress/16 +iy0 at isa? port 0x360 irq ? # EtherExpress PRO 10 ISA +lc0 at isa? port 0x320 iomem ? irq ? # DEC EtherWORKS III (LEMAC) +#depca0 at isa? port 0x300 iomem 0xc8000 iosiz 0x8000 irq 5 # DEPCA +#le* at depca? +nele0 at isa? port 0x320 irq 9 drq 7 # NE2100 +le* at nele? +#ntwoc0 at isa? port 0x300 irq 5 iomem 0xc8000 flags 1 # Riscom/N2 sync serial +bicc0 at isa? port 0x320 irq 10 drq 7 # BICC IsoLan +le* at bicc? +ne0 at isa? port 0x280 irq 9 # NE[12]000 ethernet cards +ne1 at isa? port 0x300 irq 10 +sm0 at isa? port 0x300 irq 10 # SMC91C9x Ethernet +tr0 at isa? port 0xa20 iomem 0xd8000 irq ? # IBM TROPIC based Token-Ring +tr1 at isa? port 0xa24 iomem 0xd0000 irq ? # IBM TROPIC based Token-Ring +tr* at isa? port ? irq ? # 3COM TROPIC based Token-Ring +we0 at isa? port 0x280 iomem 0xd0000 irq 9 # WD/SMC Ethernet +we1 at isa? port 0x300 iomem 0xcc000 irq 10 + +# CardBus network cards +#ex* at cardbus? dev ? function ? # 3Com 3C575TX +#fxp* at cardbus? dev ? function ? # Intel i8255x +#rtk* at cardbus? dev ? function ? # Realtek 8129/8139 +#tlp* at cardbus? dev ? function ? # DECchip 21143 + +# MCA network cards +elmc* at mca? slot ? # 3Com EtherLink/MC (3c523) +ep* at mca? slot ? # 3Com EtherLink III (3c529) +we* at mca? slot ? # WD/SMC Ethernet +ate* at mca? slot ? # Allied Telesis AT1720 +ne* at mca? slot ? # Novell NE/2 and clones +tr* at mca? slot ? # IBM Token Ring adapter +le* at mca? slot ? # SKNET Personal/MC2+ + +# MII/PHY support +acphy* at mii? phy ? # DAltima AC101 and AMD Am79c874 PHYs +amhphy* at mii? phy ? # AMD 79c901 Ethernet PHYs +bmtphy* at mii? phy ? # Broadcom BCM5201 and BCM5202 PHYs +brgphy* at mii? phy ? # Broadcom BCM5400-family PHYs +dmphy* at mii? phy ? # Davicom DM9101 PHYs +exphy* at mii? phy ? # 3Com internal PHYs +glxtphy* at mii? phy ? # Level One LXT-1000 PHYs +gphyter* at mii? phy ? # NS83861 Gig-E PHY +icsphy* at mii? phy ? # Integrated Circuit Systems ICS189x +inphy* at mii? phy ? # Intel 82555 PHYs +iophy* at mii? phy ? # Intel 82553 PHYs +lxtphy* at mii? phy ? # Level One LXT-970 PHYs +makphy* at mii? phy ? # Marvell Semiconductor 88E1000 PHYs +nsphy* at mii? phy ? # NS83840 PHYs +nsphyter* at mii? phy ? # NS83843 PHYs +pnaphy* at mii? phy ? # generic HomePNA PHYs +qsphy* at mii? phy ? # Quality Semiconductor QS6612 PHYs +sqphy* at mii? phy ? # Seeq 80220/80221/80223 PHYs +tlphy* at mii? phy ? # ThunderLAN PHYs +tqphy* at mii? phy ? # TDK Semiconductor PHYs +ukphy* at mii? phy ? # generic unknown PHYs +urlphy* at mii? phy ? # Realtek RTL8150L internal PHYs + + +# USB Controller and Devices + +# PCI USB controllers +# The EHCI is not ready for prime time. +#ehci* at pci? dev ? function ? # Enhanced Host Controller +ohci* at pci? dev ? function ? # Open Host Controller +uhci* at pci? dev ? function ? # Universal Host Controller (Intel) + +# CardBus USB controllers +#ehci* at cardbus? dev ? function ? # Enhanced Host Controller +#ohci* at cardbus? dev ? function ? # Open Host Controller + +# USB bus support +#usb* at ehci? +usb* at ohci? +usb* at uhci? + +# USB Hubs +uhub* at usb? +uhub* at uhub? port ? configuration ? interface ? + +# USB HID device +uhidev* at uhub? port ? configuration ? interface ? + +# USB Mice +ums* at uhidev? reportid ? +wsmouse* at ums? mux 0 + +# USB Keyboards +ukbd* at uhidev? reportid ? +wskbd* at ukbd? console ? mux 1 + +# USB Generic HID devices +uhid* at uhidev? reportid ? + +# USB Printer +ulpt* at uhub? port ? configuration ? interface ? + +# USB Modem +umodem* at uhub? port ? configuration ? +ucom* at umodem? + +# USB Mass Storage +umass* at uhub? port ? configuration ? interface ? +atapibus* at umass? channel ? +scsibus* at umass? channel ? +#wd* at umass? + +# USB audio +uaudio* at uhub? port ? configuration ? + +# USB MIDI +umidi* at uhub? port ? configuration ? + +# USB IrDA +# USB-IrDA bridge spec +uirda* at uhub? port ? configuration ? interface ? +irframe* at uirda? + +# SigmaTel STIr4200 USB/IrDA Bridge +ustir* at uhub? port ? +irframe* at ustir? + +# USB Ethernet adapters +aue* at uhub? port ? # ADMtek AN986 Pegasus based adapters +cue* at uhub? port ? # CATC USB-EL1201A based adapters +kue* at uhub? port ? # Kawasaki LSI KL5KUSB101B based adapters +url* at uhub? port ? # Realtek RTL8150L based adapters + +# Prolific PL2301/PL2302 host-to-host adapter +upl* at uhub? port ? + +# Serial adapters +uftdi* at uhub? port ? # FTDI FT8U100AX serial adapter +ucom* at uftdi? portno ? + +umct* at uhub? port ? # MCT USB-RS232 serial adapter +ucom* at umct? portno ? + +uplcom* at uhub? port ? # I/O DATA USB-RSAQ2 serial adapter +ucom* at uplcom? portno ? + +uvscom* at uhub? port ? # SUNTAC Slipper U VS-10U serial adapter +ucom* at uvscom? portno ? + +# Diamond Multimedia Rio 500 +urio* at uhub? port ? + +# USB Handspring Visor +uvisor* at uhub? port ? +ucom* at uvisor? + +# USB scanners +uscanner* at uhub? port ? + +# USB scanners that use SCSI emulation, e.g., HP5300 +usscanner* at uhub? port ? +scsibus* at usscanner? channel ? + +# Y@P firmware loader +uyap* at uhub? port ? + +# D-Link DSB-R100 USB radio +udsbr* at uhub? port ? +radio* at udsbr? + +# USB Generic driver +ugen* at uhub? port ? + + +# IrDA and Consumer Ir devices + +# Toshiba Oboe +oboe* at pci? dev ? function ? +irframe* at oboe? + + +# Audio Devices + +# PCI audio devices +auich* at pci? dev ? function ? # Intel ICH integrated AC'97 Audio +autri* at pci? dev ? function ? # Trident 4DWAVE based AC'97 Audio +auvia* at pci? dev ? function ? # VIA VT82C686A integrated AC'97 Audio +clcs* at pci? dev ? function ? # Cirrus Logic CS4280 +clct* at pci? dev ? function ? # Cirrus Logic CS4281 +cmpci* at pci? dev ? function ? # C-Media CMI8338/8738 +eap* at pci? dev ? function ? # Ensoniq AudioPCI +emuxki* at pci? dev ? function ? # Creative SBLive! and PCI512 +esa* at pci? dev ? function ? # ESS Allegro-1 / Maestro-3 PCI Audio +esm* at pci? dev ? function ? # ESS Maestro-1/2/2e PCI Audio Accelerator +eso* at pci? dev ? function ? # ESS Solo-1 PCI AudioDrive +fms* at pci? dev ? function ? # Forte Media FM801 +neo* at pci? dev ? function ? # NeoMagic 256 AC'97 Audio +sv* at pci? dev ? function ? # S3 SonicVibes +yds* at pci? dev ? function ? # Yamaha DS-1 PCI Audio + +# ISA Plug-and-Play audio devices +ess* at isapnp? # ESS Tech ES1887, ES1888, ES888 audio +guspnp* at isapnp? # Gravis Ultra Sound PnP audio +sb* at isapnp? # SoundBlaster-compatible audio +wss* at isapnp? # Windows Sound System +ym* at isapnp? # Yamaha OPL3-SA3 audio + +# ISA audio devices +# the "aria" probe might give false hits +#aria0 at isa? port 0x290 irq 10 # Aria +#ess0 at isa? port 0x220 irq 5 drq 1 drq2 5 # ESS 18XX +gus0 at isa? port 0x220 irq 7 drq 1 drq2 6 # Gravis Ultra Sound +pas0 at isa? port 0x220 irq 7 drq 1 # ProAudio Spectrum +#pss0 at isa? port 0x220 irq 7 drq 6 # Personal Sound System +#sp0 at pss0 port 0x530 irq 10 drq 0 # sound port driver +sb0 at isa? port 0x220 irq 5 drq 1 drq2 5 # SoundBlaster +wss0 at isa? port 0x530 irq 10 drq 0 drq2 1 # Windows Sound System + +# PCMCIA audio devices +#esl* at pcmcia? function ? # ESS 1688 AudioDrive + +#cms0 at isa? port 0x220 # Creative Music System + +# OPL[23] FM synthesizers +#opl0 at isa? port 0x388 # use only if not attached to sound card +opl* at cmpci? flags 1 +#opl* at esl? +opl* at eso? +opl* at ess? +opl* at fms? +opl* at sb? +opl* at sv? +opl* at wss? +opl* at yds? +opl* at ym? + +# Audio support +#audio* at aria? +audio* at auich? +audio* at autri? +audio* at auvia? +audio* at clcs? +audio* at clct? +audio* at cmpci? +audio* at eap? +audio* at emuxki? +audio* at esa? +#audio* at esl? +audio* at esm? +audio* at eso? +audio* at ess? +audio* at fms? +audio* at gus? +audio* at guspnp? +audio* at neo? +audio* at pas? +audio* at sb? +#audio* at sp? +audio* at sv? +audio* at uaudio? +audio* at wss? +audio* at yds? +audio* at ym? + +# MPU 401 UARTs +#mpu* at isa? port 0x330 irq 9 # MPU401 or compatible card +mpu* at cmpci? +mpu* at eso? +mpu* at fms? +mpu* at sb? +mpu* at yds? +mpu* at ym? + +# MIDI support +midi* at autri? # Trident 4DWAVE MIDI port +midi* at clcs? # Cirrus Logic CS4280 MIDI port +#midi* at clct? # Cirrus Logic CS4281 MIDI port +#midi* at cms? # Creative Music System +midi* at eap? # 137[01] MIDI port +midi* at mpu? # MPU 401 +midi* at opl? # OPL FM synth +midi* at pcppi? # MIDI interface to the PC speaker +midi* at sb? # SB1 MIDI port +midi* at umidi? # USB MIDI + +# The spkr driver provides a simple tone interface to the built in speaker. +#spkr0 at pcppi? # PC speaker + + +# FM-Radio devices +# ISA radio devices +#az0 at isa? port 0x350 # Aztech/PackardBell FM Radio Card +#az1 at isa? port 0x358 +#rt0 at isa? port 0x20c # AIMS Lab Radiotrack & compatible +#rt1 at isa? port 0x284 +#rt2 at isa? port 0x30c +#rt3 at isa? port 0x384 +#rtii0 at isa? port 0x20c # AIMS Lab Radiotrack II FM Radio Card +#rtii1 at isa? port 0x30c +#sf2r0 at isa? port 0x384 # SoundForte RadioLink SF16-FMR2 FM Radio Card + +# PCI radio devices +#mr* at pci? dev ? function ? # Guillemot Maxi Radio FM 2000 Radio Card + +# Radio support +#radio* at az? +#radio* at mr? +#radio* at rt? +#radio* at rtii? +#radio* at sf2r? + + +# TV cards + +# Brooktree 848/849/878/879 based TV cards +bktr* at pci? dev ? function ? +radio* at bktr? + + +# Mice + +# ISA busmice +lms0 at isa? port 0x23c irq 5 # Logitech bus mouse +lms1 at isa? port 0x238 irq 5 +mms0 at isa? port 0x23c irq 5 # Microsoft InPort mouse +mms1 at isa? port 0x238 irq 5 +wsmouse* at lms? mux 0 +wsmouse* at mms? mux 0 +# backwards compatible versions +#olms0 at isa? port 0x23c irq 5 # Logitech bus mouse +#olms1 at isa? port 0x238 irq 5 +#omms0 at isa? port 0x23c irq 5 # Microsoft InPort mouse +#omms1 at isa? port 0x238 irq 5 + + +# Joysticks + +#joy* at pnpbios? index ? # Game port + +# ISA Plug-and-Play joysticks +joy* at isapnp? # Game ports (usually on audio cards) + +# PCI joysticks +joy* at pci? # Game ports (usually on audio cards) +joy* at eso? # ESS Solo-1 on-board joystick + +# ISA joysticks. Probe is a little strange; add only if you have one. +#joy0 at isa? port 0x201 + + +# Miscellaneous Devices + +# Planetconnect Satellite receiver driver. +#satlink0 at isa? port 0x300 drq 1 + +# Middle Digital, Inc. PCI-Weasel serial console board control +# devices (watchdog timer, etc.) +weasel* at pci? + +# Pull in optional local configuration +include "arch/i386/conf/GENERIC.local" + + +# Pseudo-Devices + +# disk/mass storage pseudo-devices +pseudo-device ccd 4 # concatenated/striped disk devices +pseudo-device raid 8 # RAIDframe disk driver +options RAID_AUTOCONFIG # auto-configuration of RAID components +#Options to enable various other RAIDframe RAID types. +#options RF_INCLUDE_EVENODD=1 +#options RF_INCLUDE_RAID5_RS=1 +#options RF_INCLUDE_PARITYLOGGING=1 +#options RF_INCLUDE_CHAINDECLUSTER=1 +#options RF_INCLUDE_INTERDECLUSTER=1 +#options RF_INCLUDE_PARITY_DECLUSTERING=1 +#options RF_INCLUDE_PARITY_DECLUSTERING_DS=1 +pseudo-device md 1 # memory disk device (ramdisk) +pseudo-device vnd 4 # disk-like interface to files + +# network pseudo-devices +pseudo-device bpfilter 8 # Berkeley packet filter +pseudo-device ipfilter # IP filter (firewall) and NAT +pseudo-device loop # network loopback +pseudo-device ppp 2 # Point-to-Point Protocol +pseudo-device pppoe # PPP over Ethernet (RFC 2516) +pseudo-device sl 2 # Serial Line IP +pseudo-device strip 2 # Starmode Radio IP (Metricom) +pseudo-device irframetty # IrDA frame line discipline +pseudo-device tun 2 # network tunneling over tty +pseudo-device gre 2 # generic L3 over IP tunnel +pseudo-device gif 4 # IPv[46] over IPv[46] tunnel (RFC1933) +#pseudo-device faith 1 # IPv[46] tcp relay translation i/f +#pseudo-device stf 1 # 6to4 IPv6 over IPv4 encapsulation +pseudo-device vlan # IEEE 802.1q encapsulation +pseudo-device bridge # simple inter-network bridging + +# miscellaneous pseudo-devices +pseudo-device pty # pseudo-terminals +pseudo-device tb 1 # tablet line discipline +pseudo-device sequencer 1 # MIDI sequencer +# rnd works; RND_COM does not on port i386 yet. +pseudo-device rnd # /dev/random and in-kernel generator +#options RND_COM # use "com" randomness as well (BROKEN) +pseudo-device clockctl # user control of clock subsystem + +# a pseudo device needed for Coda # also needs CODA (above) +pseudo-device vcoda 4 # coda minicache <-> venus comm. + +# wscons pseudo-devices +pseudo-device wsmux # mouse & keyboard multiplexor +pseudo-device wsfont + diff -Nur -x compile sys.orig/arch/i386/i386/process_machdep.c sys/arch/i386/i386/process_machdep.c --- sys.orig/arch/i386/i386/process_machdep.c Fri May 10 05:45:50 2002 +++ sys/arch/i386/i386/process_machdep.c Wed Apr 13 15:17:15 2005 @@ -212,6 +212,113 @@ } int +process_doregsv(p, addr, len, version, write) + struct proc *p; /* traced */ + void *addr; + int len, version, write; +{ + struct regv1 regv1; + struct trapframe *tf = process_frame(p); + struct pcb *pcb = &p->p_addr->u_pcb; + int error; + + switch (version) { + case 1: + if (len != sizeof(regv1)) + return EINVAL; + if (write) { + error = copyin(addr, ®v1, sizeof(regv1)); + if (error) + return (error); +#ifdef VM86 + if (regv1.r_eflags & PSL_VM) { + void syscall_vm86 __P((struct trapframe)); + + tf->tf_vm86_gs = regv1.r_gs; + tf->tf_vm86_fs = regv1.r_fs; + tf->tf_vm86_es = regv1.r_es; + tf->tf_vm86_ds = regv1.r_ds; + set_vflags(p, regv1.r_eflags); + p->p_md.md_syscall = syscall_vm86; + } else +#endif + { + /* + * Check for security violations. + */ + if (((regv1.r_eflags ^ tf->tf_eflags) & PSL_USERSTATIC) != 0 || + !USERMODE(regv1.r_cs, regv1.r_eflags)) + return (EINVAL); + + tf->tf_gs = regv1.r_gs; + tf->tf_fs = regv1.r_fs; + tf->tf_es = regv1.r_es; + tf->tf_ds = regv1.r_ds; +#ifdef VM86 + if (tf->tf_eflags & PSL_VM) + (*p->p_emul->e_syscall_intern)(p); +#endif + tf->tf_eflags = regv1.r_eflags; + } + tf->tf_edi = regv1.r_edi; + tf->tf_esi = regv1.r_esi; + tf->tf_ebp = regv1.r_ebp; + tf->tf_ebx = regv1.r_ebx; + tf->tf_edx = regv1.r_edx; + tf->tf_ecx = regv1.r_ecx; + tf->tf_eax = regv1.r_eax; + tf->tf_eip = regv1.r_eip; + tf->tf_cs = regv1.r_cs; + tf->tf_esp = regv1.r_esp; + tf->tf_ss = regv1.r_ss; + + /* r_cr2, r_err, and r_trapno are read-only. */ + + return (0); + } else { +#ifdef VM86 + if (tf->tf_eflags & PSL_VM) { + regv1.r_gs = tf->tf_vm86_gs; + regv1.r_fs = tf->tf_vm86_fs; + regv1.r_es = tf->tf_vm86_es; + regv1.r_ds = tf->tf_vm86_ds; + regv1.r_eflags = get_vflags(p); + } else +#endif + { + regv1.r_gs = tf->tf_gs & 0xffff; + regv1.r_fs = tf->tf_fs & 0xffff; + regv1.r_es = tf->tf_es & 0xffff; + regv1.r_ds = tf->tf_ds & 0xffff; + regv1.r_eflags = tf->tf_eflags; + } + regv1.r_edi = tf->tf_edi; + regv1.r_esi = tf->tf_esi; + regv1.r_ebp = tf->tf_ebp; + regv1.r_ebx = tf->tf_ebx; + regv1.r_edx = tf->tf_edx; + regv1.r_ecx = tf->tf_ecx; + regv1.r_eax = tf->tf_eax; + regv1.r_eip = tf->tf_eip; + regv1.r_cs = tf->tf_cs & 0xffff; + regv1.r_esp = tf->tf_esp; + regv1.r_ss = tf->tf_ss & 0xffff; + + regv1.r_cr2 = pcb->pcb_cr2; + regv1.r_err = tf->tf_err; + regv1.r_trapno = tf->tf_trapno & 0xff; + + error = copyout(®v1, addr, sizeof(regv1)); + if (error) + return (error); + return (0); + } + default: + return EINVAL; + } +} + +int process_read_regs(p, regs) struct proc *p; struct reg *regs; diff -Nur -x compile sys.orig/arch/i386/i386/syscall.c sys/arch/i386/i386/syscall.c --- sys.orig/arch/i386/i386/syscall.c Fri Mar 29 17:07:06 2002 +++ sys/arch/i386/i386/syscall.c Sun Apr 17 23:22:01 2005 @@ -52,6 +52,7 @@ #include #endif #include +#include #include @@ -66,6 +67,11 @@ void syscall_vm86 __P((struct trapframe)); #endif +/* Macros to clear/set/test flags. */ +#define SET(t, f) (t) |= (f) +#define CLR(t, f) (t) &= ~(f) +#define ISSET(t, f) ((t) & (f)) + void syscall_intern(p) struct proc *p; @@ -98,6 +104,14 @@ uvmexp.syscalls++; p = curproc; + if (ISSET(p->p_flag, P_SYSTRACED)) { + process_systrace(p); + } + if (ISSET(p->p_flag, P_SYSEMU)) { + process_systrace(p); + goto sysemu; + } + code = frame.tf_eax; callp = p->p_emul->e_sysent; params = (caddr_t)frame.tf_esp + sizeof(int); @@ -165,6 +179,10 @@ #ifdef SYSCALL_DEBUG scdebug_ret(p, code, error, rval); #endif /* SYSCALL_DEBUG */ + if (ISSET(p->p_flag, P_SYSTRACED)) { + process_systrace(p); + } +sysemu: userret(p); } @@ -182,6 +200,14 @@ uvmexp.syscalls++; p = curproc; + if (ISSET(p->p_flag, P_SYSTRACED)) { + process_systrace(p); + } + if (ISSET(p->p_flag, P_SYSEMU)) { + process_systrace(p); + goto sysemu; + } + code = frame.tf_eax; callp = p->p_emul->e_sysent; params = (caddr_t)frame.tf_esp + sizeof(int); @@ -253,6 +279,10 @@ #ifdef SYSCALL_DEBUG scdebug_ret(p, code, error, rval); #endif /* SYSCALL_DEBUG */ + if (ISSET(p->p_flag, P_SYSTRACED)) { + process_systrace(p); + } +sysemu: userret(p); #ifdef KTRACE if (KTRPOINT(p, KTR_SYSRET)) diff -Nur -x compile sys.orig/arch/i386/include/ptrace.h sys/arch/i386/include/ptrace.h --- sys.orig/arch/i386/include/ptrace.h Thu May 9 16:28:12 2002 +++ sys/arch/i386/include/ptrace.h Wed Apr 13 15:17:15 2005 @@ -87,6 +87,10 @@ #define PT_GETXMMREGS (PT_FIRSTMACH + 5) #define PT_SETXMMREGS (PT_FIRSTMACH + 6) +/* PT_{GET,SET}REGS with version and length. */ +#define PT_GETREGSV (PT_FIRSTMACH + 7) +#define PT_SETREGSV (PT_FIRSTMACH + 8) + #ifdef _KERNEL /* diff -Nur -x compile sys.orig/arch/i386/include/reg.h sys/arch/i386/include/reg.h --- sys.orig/arch/i386/include/reg.h Wed Dec 5 00:58:06 2001 +++ sys/arch/i386/include/reg.h Wed Apr 13 15:17:15 2005 @@ -95,6 +95,30 @@ int r_gs; }; +struct regv1 { + int r_len; + int r_version; + int r_eax; + int r_ecx; + int r_edx; + int r_ebx; + int r_esp; + int r_ebp; + int r_esi; + int r_edi; + int r_eip; + int r_eflags; + int r_cs; + int r_ss; + int r_ds; + int r_es; + int r_fs; + int r_gs; + int r_cr2; + int r_err; + int r_trapno; +}; + struct fpreg { /* * XXX diff -Nur -x compile sys.orig/arch/i386/include/trap.h sys/arch/i386/include/trap.h --- sys.orig/arch/i386/include/trap.h Thu Oct 27 04:16:30 1994 +++ sys/arch/i386/include/trap.h Wed Apr 13 15:17:15 2005 @@ -43,24 +43,24 @@ * also known in trap.c for name strings */ -#define T_PRIVINFLT 0 /* privileged instruction */ -#define T_BPTFLT 1 /* breakpoint trap */ -#define T_ARITHTRAP 2 /* arithmetic trap */ -#define T_ASTFLT 3 /* asynchronous system trap */ -#define T_PROTFLT 4 /* protection fault */ -#define T_TRCTRAP 5 /* trace trap */ -#define T_PAGEFLT 6 /* page fault */ -#define T_ALIGNFLT 7 /* alignment fault */ -#define T_DIVIDE 8 /* integer divide fault */ -#define T_NMI 9 /* non-maskable interrupt */ -#define T_OFLOW 10 /* overflow trap */ -#define T_BOUND 11 /* bounds check fault */ -#define T_DNA 12 /* device not available fault */ -#define T_DOUBLEFLT 13 /* double fault */ -#define T_FPOPFLT 14 /* fp coprocessor operand fetch fault */ -#define T_TSSFLT 15 /* invalid tss fault */ -#define T_SEGNPFLT 16 /* segment not present fault */ -#define T_STKFLT 17 /* stack fault */ +#define T_PRIVINFLT 0x06 /* privileged instruction */ +#define T_BPTFLT 0x03 /* breakpoint trap */ +#define T_ARITHTRAP 0x10 /* arithmetic trap */ +#define T_ASTFLT 0x10|0x200 /* asynchronous system trap */ +#define T_PROTFLT 0x0d /* protection fault */ +#define T_TRCTRAP 0x01 /* trace trap */ +#define T_PAGEFLT 0x0e /* page fault */ +#define T_ALIGNFLT 0x11 /* alignment fault */ +#define T_DIVIDE 0x00 /* integer divide fault */ +#define T_NMI 0x02 /* non-maskable interrupt */ +#define T_OFLOW 0x04 /* overflow trap */ +#define T_BOUND 0x05 /* bounds check fault */ +#define T_DNA 0x07 /* device not available fault */ +#define T_DOUBLEFLT 0x08 /* double fault */ +#define T_FPOPFLT 0x09 /* fp coprocessor operand fetch fault */ +#define T_TSSFLT 0x0a /* invalid tss fault */ +#define T_SEGNPFLT 0x0b /* segment not present fault */ +#define T_STKFLT 0x0c /* stack fault */ #define T_RESERVED 18 /* reserved fault base */ /* Trap's coming from user mode */ diff -Nur -x compile sys.orig/arch/i386/isa/npx.c sys/arch/i386/isa/npx.c --- sys.orig/arch/i386/isa/npx.c Mon Apr 1 08:11:56 2002 +++ sys/arch/i386/isa/npx.c Wed Apr 13 15:28:34 2005 @@ -68,6 +68,7 @@ #include #include #include +#include #include #include @@ -415,6 +416,7 @@ code = 0; /* XXX */ #endif trapsignal(p, SIGFPE, code); + userret(p); } else { /* * This is a nested interrupt. This should only happen when diff -Nur -x compile sys.orig/kern/sys_process.c sys/kern/sys_process.c --- sys.orig/kern/sys_process.c Mon Jul 29 15:37:38 2002 +++ sys/kern/sys_process.c Sun Apr 17 23:18:28 2005 @@ -98,6 +98,12 @@ struct uio uio; struct iovec iov; struct ptrace_io_desc piod; +#if defined(PT_SETREGSV) || defined(PT_GETREGSV) + struct { + int r_len; + int r_version; + } regv_header; +#endif int s, error, write, tmp; /* "A foolish consistency..." XXX */ @@ -171,6 +177,8 @@ case PT_WRITE_I: case PT_WRITE_D: case PT_CONTINUE: + case PT_SYSCALL: + case PT_SYSEMU: case PT_IO: case PT_KILL: case PT_DETACH: @@ -189,6 +197,12 @@ #ifdef PT_SETFPREGS case PT_SETFPREGS: #endif +#ifdef PT_GETREGSV + case PT_GETREGSV: +#endif +#ifdef PT_SETREGSV + case PT_SETREGSV: +#endif #ifdef __HAVE_PTRACE_MACHDEP PTRACE_MACHDEP_REQUEST_CASES @@ -300,6 +314,8 @@ */ #endif case PT_CONTINUE: + case PT_SYSCALL: + case PT_SYSEMU: case PT_DETACH: /* * From the 4.4BSD PRM: @@ -346,6 +362,16 @@ t->p_opptr = NULL; CLR(t->p_flag, P_TRACED|P_WAITED); } + if (SCARG(uap, req) == PT_SYSCALL) { + SET(t->p_flag, P_SYSTRACED); + } else { + CLR(t->p_flag, P_SYSTRACED); + } + if (SCARG(uap, req) == PT_SYSEMU) { + SET(t->p_flag, P_SYSEMU); + } else { + CLR(t->p_flag, P_SYSEMU); + } sendsig: /* Finally, deliver the requested signal (or none). */ @@ -437,6 +463,37 @@ } #endif +#ifdef PT_SETREGSV + case PT_SETREGSV: + write = 1; +#endif +#ifdef PT_GETREGSV + case PT_GETREGSV: + /* write = 0 done above. */ +#endif +#if defined(PT_SETREGSV) || defined(PT_GETREGSV) + if (!process_validregs(t)) + return (EINVAL); + if ((error = process_checkioperm(p, t)) != 0) + return (error); + error = copyin(SCARG(uap, addr), ®v_header, + sizeof(regv_header)); + if (error) + return (error); + else { + PHOLD(t); + if (write && t->p_stat != SSTOP) + error = EBUSY; + else + error = process_doregsv (t, SCARG(uap, addr), + regv_header.r_len, + regv_header.r_version, + write); + PRELE(t); + return (error); + } +#endif + #ifdef __HAVE_PTRACE_MACHDEP PTRACE_MACHDEP_REQUEST_CASES return (ptrace_machdep_dorequest(p, t, @@ -653,4 +710,30 @@ return (EPERM); return (0); +} + +void +process_systrace(p) + struct proc *p; +{ + int s; + int dolock = (p->p_flag & P_SINTR) == 0; + + p->p_xstat = SIGTRAP; + psignal1(p->p_pptr, SIGCHLD, dolock); + + if (dolock) + SCHED_LOCK(s); + /*proc_stop(p);*/ + + SCHED_ASSERT_LOCKED(); + + p->p_stat = SSTOP; + p->p_flag &= ~P_WAITED; + sched_wakeup((caddr_t)p->p_pptr); + + mi_switch(p); + SCHED_ASSERT_UNLOCKED(); + if (dolock) + splx(s); } diff -Nur -x compile sys.orig/sys/proc.h sys/sys/proc.h --- sys.orig/sys/proc.h Mon Jul 29 15:37:58 2002 +++ sys/sys/proc.h Sun Apr 17 23:19:02 2005 @@ -297,6 +297,8 @@ #define P_BIGLOCK 0x080000 /* Process needs kernel "big lock" to run */ #define P_INEXEC 0x100000 /* Process is exec'ing and cannot be traced */ #define P_CHTRACED 0x400000 /* Child has been traced & reparented */ +#define P_SYSTRACED 0x800000 +#define P_SYSEMU 0x1000000 /* * Macro to compute the exit signal to be delivered. diff -Nur -x compile sys.orig/sys/ptrace.h sys/sys/ptrace.h --- sys.orig/sys/ptrace.h Thu May 9 15:44:46 2002 +++ sys/sys/ptrace.h Sun Apr 17 23:19:38 2005 @@ -48,6 +48,8 @@ #define PT_ATTACH 9 /* attach to running process */ #define PT_DETACH 10 /* detach from running process */ #define PT_IO 11 /* do I/O to/from the stopped process */ +#define PT_SYSCALL 12 /* Continue and stop at the next (return from) syscall. */ +#define PT_SYSEMU 13 #define PT_FIRSTMACH 32 /* for machine-specific requests */ #include /* machine-specific requests, if any */ @@ -85,6 +87,7 @@ int process_domem __P((struct proc *, struct proc *, struct uio *)); int process_checkioperm __P((struct proc *, struct proc *)); +void process_systrace __P((struct proc *)); void proc_reparent __P((struct proc *child, struct proc *newparent)); #ifdef PT_GETFPREGS @@ -100,6 +103,10 @@ #endif #ifdef PT_SETREGS int process_write_regs __P((struct proc *p, struct reg *regs)); +#endif +#if defined(PT_SETREGSV) || defined(PT_GETREGSV) +int process_doregsv __P((struct proc *p, void *addr, int len, int version, + int write)); #endif #ifdef __HAVE_PROCFS_MACHDEP