Subject: Virtual PC diffs
To: None <port-i386@netbsd.org>
From: Peter Seebach <seebs@plethora.net>
List: port-i386
Date: 12/19/2000 23:04:15
These diffs fix the "abnormal interrupt: transmit process stopped" in de0,
and "transmit process stopped" in tlp0. They also make a couple of
other fixes dependant on which version of Virtual PC is being run, and
move the printf of the VPC version so that it's in the dmesg output.
I haven't fixed tlp to work with VirtualPC 3, but I've added a warning
to the driver if it notices you trying to use the tlp driver on VPC3.
I would love it if these (or something similar) could get committed, so
that a future i386 snapshot could "just work" on VirtualPC.
I'd like to express my admiration for the developers at Connectix; the
"tlp0" thing is the only patch I am aware of that is still needed with VPC4,
everything else got fixed, despite the fairly sketchy reports I gave them.
Now that I've isolated the problem to a single bit (or maybe two) set in
their interrupt status register, they may even fix that one.
These diffs are against a sup a few days old.
*** ./arch/i386/i386/machdep.c.orig Fri Aug 18 05:30:42 2000
--- ./arch/i386/i386/machdep.c Tue Dec 19 16:08:25 2000
***************
*** 186,192 ****
int cpureset_delay = 2000; /* default to 2s */
#endif
!
int physmem;
int dumpmem_low;
int dumpmem_high;
--- 186,194 ----
int cpureset_delay = 2000; /* default to 2s */
#endif
! #ifdef VPC_CPU
! int cpu_is_vpc = 0;
! #endif
int physmem;
int dumpmem_low;
int dumpmem_high;
***************
*** 280,285 ****
--- 282,293 ----
printf(version);
printf("cpu0: %s\n", cpu_model);
+ #ifdef VPC_CPU
+ if (cpu_is_vpc) {
+ printf("You appear to be running on Virtual PC [version %d].\n",
+ cpu_is_vpc);
+ }
+ #endif
format_bytes(pbuf, sizeof(pbuf), ptoa(physmem));
printf("total memory = %s\n", pbuf);
***************
*** 762,767 ****
--- 770,786 ----
sprintf(cpu_model, "%s %s%s (%s-class)", vendorname, modifier, name,
classnames[class]);
+
+ #ifdef VPC_CPU
+ if (!strcmp(vendorname, "ConnectixCPU")) {
+ /* VPC 3 is Pentium, VPC 4 is Pentium Pro */
+ if (class == 2) {
+ cpu_is_vpc = 3;
+ } else {
+ cpu_is_vpc = 4;
+ }
+ }
+ #endif
cpu_class = class;
*** ./arch/i386/conf/files.i386.orig Fri Aug 11 05:47:42 2000
--- ./arch/i386/conf/files.i386 Tue Dec 19 15:08:38 2000
***************
*** 14,20 ****
APM_POWER_PRINT APM_DISABLE_INTERRUPTS APM_ALLOW_BOGUS_SEGMENTS
# Processor type options.
! defopt opt_cputype.h I386_CPU I486_CPU I586_CPU I686_CPU
# delay before cpu_reset() for reboot.
defopt CPURESET_DELAY
--- 14,20 ----
APM_POWER_PRINT APM_DISABLE_INTERRUPTS APM_ALLOW_BOGUS_SEGMENTS
# Processor type options.
! defopt opt_cputype.h I386_CPU I486_CPU I586_CPU I686_CPU VPC_CPU
# delay before cpu_reset() for reboot.
defopt CPURESET_DELAY
*** ./arch/i386/conf/VPC.orig Wed Sep 20 18:34:49 2000
--- ./arch/i386/conf/VPC Tue Dec 19 16:26:13 2000
***************
*** 0 ****
--- 1,831 ----
+ # $NetBSD: GENERIC,v 1.354.2.6 2000/08/10 23:10:28 soda Exp $
+ #
+ # GENERIC -- everything that's currently supported
+ #
+
+ include "arch/i386/conf/std.i386"
+
+ #ident "GENERIC-$Revision: 1.354.2.6 $"
+
+ maxusers 32 # estimated number of users
+
+ # CPU support. At least one is REQUIRED.
+ options I586_CPU
+ options I686_CPU
+ options VPC_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
+
+ # 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 SYSVSHM # System V-like memory sharing
+ #options SHMMAXPGS=1024 # 1024 pages is the default
+
+ options LKM # loadable kernel modules
+
+ # Diagnostic/debugging support options
+ options DIAGNOSTIC # cheap 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\"",KGDBADDR=0x3f8,KGDBRATE=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_43 # and 4.3BSD
+ options COMPAT_386BSD_MBRPART # recognize old partition ID
+
+ 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_PECOFF # kernel support to run Win32 apps
+
+ options COMPAT_AOUT # binary compat for NetBSD a.out binaries
+
+ # 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
+
+ # Compatibility with 4.2BSD implementation of TCP/IP. Not recommended.
+ #options TCP_COMPAT_42
+
+ # These options enable verbose messages for several subsystems.
+ # Warning, these may compile large string tables into the kernel!
+ 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 fullsome Pnp BIOS debugging 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
+
+ # 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
+ pcib* at pci? dev ? function ? # PCI-ISA 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
+
+
+ # ISA bus support
+ isa* at mainbus?
+ #isa* at pceb?
+ isa* at pcib?
+
+ # PCMCIA bus support
+ #pcmcia* at pcic? controller ? socket ?
+ #pcmcia* at tcic? controller ? socket ?
+
+ # ISA PCMCIA controllers
+ #pcic0 at isa? port 0x3e0 iomem 0xd0000 iosiz 0x10000
+ #pcic1 at isa? port 0x3e2 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
+ # "opms" should not be enabled together with "pms" or "pmsi"
+ pms* at pckbc? # PS/2 mouse for wsmouse
+ pmsi* at pckbc? # PS/2 "Intelli"mouse for wsmouse
+ #opms* at pckbc? # backwards compatible PS/2 mouse
+ 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
+ wsmouse* at pmsi? 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? 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 ?
+
+ # 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
+
+ # 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?
+
+ # 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
+ #isp* at pci? dev ? function ? # Qlogic ISP [12]0x0 SCSI/FibreChannel
+ #ncr* at pci? dev ? function ? # NCR 53c8xx SCSI (old driver)
+ #siop* at pci? dev ? function ? # Symbios 53c8xx SCSI
+ #pcscp* at pci? dev ? function ? # AMD 53c974 PCscsi-PCI 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]
+ #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 contoller
+ #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
+ #ahc* at cardbus? dev ? function ? # Adaptec ADP-1480
+
+ # 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 isp?
+ #scsibus* at nca?
+ #scsibus* at ncr?
+ #scsibus* at pcscp?
+ #scsibus* at sea?
+ #scsibus* at siop?
+ #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
+ #cac* at pci? dev ? function ? # Compaq array controller
+ #ca* at cac? unit ? # Compaq array disk device
+
+ # 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
+ 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
+
+
+ # Network Interfaces
+
+ # PCI network interfaces
+ de* at pci? dev ? function ? # DEC 21x4x-based Ethernet
+ #en* at pci? dev ? function ? # ENI/Adaptec ATM
+ #ep* at pci? dev ? function ? # 3Com 3c59x
+ #ex* at pci? dev ? function ? # 3Com 90x[B]
+ #epic* at pci? dev ? function ? # SMC EPIC/100 Ethernet
+ #esh* at pci? dev ? function ? # Essential HIPPI card
+ #fpa* at pci? dev ? function ? # DEC DEFPA FDDI
+ #fxp* at pci? dev ? function ? # Intel EtherExpress PRO 10+/100B
+ #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
+ #rtk* at pci? dev ? function ? # Realtek 8129/8139
+ #sip* at pci? dev ? function ? # SiS 900 Ethernet
+ #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) Ethernet
+ #options TLP_MATCH_21040
+ #options TLP_MATCH_21041
+ #options TLP_MATCH_21140
+ #options TLP_MATCH_21142
+ #vr* at pci? dev ? function ? # VIA Rhine Fast Ethernet
+
+
+ # ISA Plug-and-Play network interfaces
+ #ep* at isapnp? # 3Com 3c509 Ethernet
+ #ne* at isapnp? # NE2000-compatible Ethernet
+ #tr* at isapnp? # IBM/3COM TROPIC Token-Ring
+
+ # PCMCIA network interfaces
+ #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
+ #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
+
+ # MII/PHY support
+ #dmphy* at mii? phy ? # Davicom DM9101 PHYs
+ #exphy* at mii? phy ? # 3Com internal PHYs
+ #icsphy* at mii? phy ? # Integrated Circuit Systems ICS1890
+ #inphy* at mii? phy ? # Intel 82555 PHYs
+ #iophy* at mii? phy ? # Intel 82553 PHYs
+ #lxtphy* at mii? phy ? # Level One LXT-970 PHYs
+ #nsphy* at mii? phy ? # NS83840 PHYs
+ #nsphyter* at mii? phy ? # NS83843 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
+
+ # USB Controller and Devices
+
+ # PCI USB controllers
+ ohci* at pci? dev ? function ? # Open Host Controller
+ uhci* at pci? dev ? function ? # Universal Host Controller (Intel)
+
+ # CardBus USB controllers
+ #ohci* at cardbus? dev ? function ? # Open Host Controller
+
+ # USB bus support
+ usb* at ohci?
+ usb* at uhci?
+
+ # USB Hubs
+ uhub* at usb?
+ uhub* at uhub? port ? configuration ? interface ?
+
+ # USB Mice
+ ums* at uhub? port ? configuration ? interface ?
+ wsmouse* at ums? mux 0
+
+ # USB Keyboards
+ ukbd* at uhub? port ? configuration ? interface ?
+ wskbd* at ukbd? console ? mux 1
+
+ # USB Generic HID devices
+ uhid* at uhub? port ? configuration ? interface ?
+
+ # 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 ?
+
+ # USB audio
+ uaudio* at uhub? port ? configuration ?
+
+ # 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
+
+ # Prolofic PL2301/PL2302 host-to-host adapter
+ upl* at uhub? port ?
+
+ # Serial adapters
+ # FTDI FT8U100AX serial adapter
+ #uftdi* at uhub? port ?
+ #ucom* at uftdi? portno ?
+
+ # Diamond Multimedia Rio 500
+ urio* at uhub? port ?
+
+ # USB Handspring Visor
+ uvisor* at uhub? port ?
+ ucom* at uvisor?
+
+ # USB Generic driver
+ ugen* at uhub? port ?
+
+ # Audio Devices
+
+ # PCI audio devices
+ #auvia* at pci? dev ? function ? # VIA VT82C686A integrated AC'97 Audio
+ #clcs* at pci? dev ? function ? # Cirrus Logic CS4280
+ #cmpci* at pci? dev ? function ? # C-Media CMI8338/8738
+ #eap* at pci? dev ? function ? # Ensoniq AudioPCI
+ #eso* at pci? dev ? function ? # ESS Solo-1 PCI AudioDrive
+ #fms* at pci? dev ? function ? # Forte Media FM801
+ #sv* at pci? dev ? function ? # S3 SonicVibes
+
+ # 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
+
+ #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 eso?
+ #opl* at ess?
+ #opl* at fms?
+ opl* at sb?
+ #opl* at sv?
+ #opl* at wss?
+ #opl* at ym?
+
+ # Audio support
+ #audio* at aria?
+ #audio* at auvia?
+ #audio* at clcs?
+ #audio* at cmpci?
+ #audio* at eap?
+ #audio* at eso?
+ #audio* at ess?
+ #audio* at fms?
+ #audio* at gus?
+ #audio* at guspnp?
+ #audio* at pas?
+ audio* at sb?
+ #audio* at sp?
+ #audio* at sv?
+ audio* at uaudio?
+ #audio* at wss?
+ #audio* at ym?
+
+ # MPU 401 UARTs
+ #mpu* at isa? port 0x330 irq 9 # MPU401 or compatible card
+ #mpu* at eso?
+ #mpu* at fms?
+ mpu* at sb?
+ #mpu* at ym?
+
+ # MIDI support
+ #midi* at clcs? # Cirrus Logic CS4280 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
+
+ # The spkr driver provides a simple tone interface to the built in speaker.
+ #spkr0 at pcppi? # PC speaker
+
+ # TV cards
+
+ # Brooktree 848/849/878/879 based TV cards
+ #bktr* at pci? dev ? function ?
+
+ # 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
+ #opms0 at pc? irq 12 # PS/2 auxiliary port mouse
+
+
+ # Joysticks
+
+ # 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)
+
+ # 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
+
+
+ # 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 4 # RAIDframe disk driver
+ #options RAID_AUTOCONFIG # auto-configuration of RAID components
+ 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 sl 2 # Serial Line IP
+ pseudo-device strip 2 # Starmode Radio IP (Metricom)
+ pseudo-device tun 2 # network tunneling over tty
+ pseudo-device gre 2 # generic L3 over IP tunnel
+ pseudo-device ipip 2 # IP Encapsulation within IP (RFC 2003)
+ 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
+
+ # miscellaneous pseudo-devices
+ pseudo-device pty 64 # 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)
+
+ # a pseudo device needed for Coda # also needs CODA (above)
+ #pseudo-device vcoda 4 # coda minicache <-> venus comm.
+
+ # mouse & keyboard multiplexor pseudo-devices
+ pseudo-device wsmux 2
*** ./arch/i386/conf/GENERIC.orig Sat Sep 2 12:14:17 2000
--- ./arch/i386/conf/GENERIC Thu Sep 21 05:53:53 2000
***************
*** 1,11 ****
! # $NetBSD: GENERIC,v 1.354.2.6 2000/08/10 23:10:28 soda Exp $
#
# GENERIC -- everything that's currently supported
#
include "arch/i386/conf/std.i386"
! #ident "GENERIC-$Revision: 1.354.2.6 $"
maxusers 32 # estimated number of users
--- 1,11 ----
! # $NetBSD: GENERIC,v 1.354.2.8 2000/09/20 18:26:06 thorpej Exp $
#
# GENERIC -- everything that's currently supported
#
include "arch/i386/conf/std.i386"
! #ident "GENERIC-$Revision: 1.354.2.8 $"
maxusers 32 # estimated number of users
***************
*** 17,23 ****
# 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
--- 17,23 ----
# 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
***************
*** 83,90 ****
options COMPAT_LINUX # binary compatibility with Linux
options COMPAT_FREEBSD # binary compatibility with FreeBSD
#options COMPAT_PECOFF # kernel support to run Win32 apps
-
- options COMPAT_AOUT # binary compat for NetBSD a.out binaries
# File systems
file-system FFS # UFS
--- 83,88 ----
*** ./arch/i386/include/cpu.h.orig Mon Jun 5 05:21:15 2000
--- ./arch/i386/include/cpu.h Tue Dec 19 15:08:38 2000
***************
*** 146,151 ****
--- 146,152 ----
extern int cpu_class;
extern int cpu_feature;
extern int cpu_id;
+ extern int cpu_is_vpc;
extern char cpu_vendor[];
extern int cpuid_level;
extern struct cpu_nocpuid_nameclass i386_nocpuid_cpus[];
*** ./arch/i386/isa/npx.c.orig Fri Jun 16 05:13:40 2000
--- ./arch/i386/isa/npx.c Tue Dec 19 15:32:14 2000
***************
*** 201,206 ****
--- 201,211 ----
*/
rv = NPX_INTERRUPT;
} else {
+ #ifdef VPC_CPU
+ if (cpu_is_vpc == 3)
+ rv = NPX_EXCEPTION;
+ else
+ #endif
/*
* Worse, even IRQ13 is broken. Use emulator.
*/
*** ./arch/i386/pci/pci_machdep.c.orig Fri Aug 11 05:48:02 2000
--- ./arch/i386/pci/pci_machdep.c Tue Dec 19 15:32:39 2000
***************
*** 79,84 ****
--- 79,86 ----
* as defined section 3.6.4.1, `Generating Configuration Cycles'.
*/
+ #include <opt_cputype.h>
+
#include <sys/types.h>
#include <sys/param.h>
#include <sys/time.h>
***************
*** 204,209 ****
--- 206,215 ----
{
pcitag_t tag;
+ #ifdef VPC_CPU
+ if (cpu_is_vpc == 3)
+ pci_mode = 1;
+ #endif
#ifndef PCI_CONF_MODE
switch (pci_mode) {
case 1:
*** ./dev/ic/pckbc.c.orig Fri Jun 9 05:14:49 2000
--- ./dev/ic/pckbc.c Tue Dec 19 15:33:09 2000
***************
*** 47,52 ****
--- 47,53 ----
#include <dev/ic/i8042reg.h>
#include <dev/ic/pckbcvar.h>
+ #include <opt_cputype.h> /* VPC_CPU hacks */
#include "rnd.h"
#include "locators.h"
***************
*** 363,369 ****
return;
res = pckbc_poll_data1(iot, ioh_d, ioh_c, PCKBC_KBD_SLOT, 0);
! if (res == 0 || res == 0xfa || res == 0x01) {
#ifdef PCKBCDEBUG
if (res != 0)
printf("kbc: returned %x on aux slot test\n", res);
--- 364,374 ----
return;
res = pckbc_poll_data1(iot, ioh_d, ioh_c, PCKBC_KBD_SLOT, 0);
! if (res == 0 || res == 0xfa || res == 0x01
! #if VPC_CPU
! || (res == 0xff && (cpu_is_vpc == 3))
! #endif
! ) {
#ifdef PCKBCDEBUG
if (res != 0)
printf("kbc: returned %x on aux slot test\n", res);
*** ./dev/ic/tulip.c.orig Tue Dec 19 15:16:02 2000
--- ./dev/ic/tulip.c Tue Dec 19 15:58:12 2000
***************
*** 234,240 ****
sc->sc_txth = tlp_10_100_txthresh_tab;
break;
}
- printf("tlp: chip %d\n", sc->sc_chip);
/*
* Setup the filter setup function.
--- 234,239 ----
***************
*** 1213,1218 ****
--- 1212,1221 ----
}
}
+ #ifdef VPC_CPU
+ if (cpu_is_vpc)
+ status &= ~STATUS_TPS;
+ #endif
if (status & (STATUS_TPS|STATUS_RPS)) {
if (status & STATUS_TPS)
printf("%s: transmit process stopped\n",
***************
*** 1271,1277 ****
case TULIP_CHIP_DM9102A:
TULIP_WRITE(sc, CSR_INTEN, sc->sc_inten);
break;
-
default:
/* Nothing. */
}
--- 1274,1279 ----
***************
*** 1850,1856 ****
*/
sc->sc_inten &= ~(STATUS_WINB_REI|STATUS_RWT);
break;
!
default:
/* Nothing. */
}
--- 1852,1864 ----
*/
sc->sc_inten &= ~(STATUS_WINB_REI|STATUS_RWT);
break;
! #ifdef VPC_CPU
! case TULIP_CHIP_VPC:
! /* the emulated card sends this after every transmit
! * completes! */
! sc->sc_inten &= ~(STATUS_TPS);
! break;
! #endif
default:
/* Nothing. */
}
*** ./dev/ic/tulipvar.h.orig Wed Oct 18 05:29:10 2000
--- ./dev/ic/tulipvar.h Tue Dec 19 15:34:50 2000
***************
*** 152,157 ****
--- 152,160 ----
TULIP_CHIP_AX88140 = 21, /* ASIX AX88140 */
TULIP_CHIP_AX88141 = 22, /* ASIX AX88141 */
TULIP_CHIP_X3201_3 = 23, /* Xircom X3201-3 */
+ #ifdef VPC_CPU
+ TULIP_CHIP_VPC = 24, /* VirtualPC emulated DEC 21041 */
+ #endif
} tulip_chip_t;
#define TULIP_CHIP_NAMES \
***************
*** 180,185 ****
--- 183,189 ----
"ASIX AX88140", \
"ASIX AX88141", \
"Xircom X3201-3", \
+ "Connectix VPC", \
}
struct tulip_softc;
*** ./dev/pci/if_de.c.orig Thu Mar 23 06:33:53 2000
--- ./dev/pci/if_de.c Tue Dec 19 16:57:46 2000
***************
*** 195,200 ****
--- 195,204 ----
static int tulip_mii_map_abilities(tulip_softc_t * const sc, unsigned abilities);
static tulip_media_t tulip_mii_phy_readspecific(tulip_softc_t * const sc);
static int tulip_srom_decode(tulip_softc_t * const sc);
+ #include <opt_cputype.h>
+ #ifdef VPC_CPU
+ static void tulip_initring(tulip_softc_t * const sc, tulip_ringinfo_t * const ri, tulip_desc_t *descs, int ndescs);
+ #endif
#if defined(IFM_ETHER)
static int tulip_ifmedia_change(struct ifnet * const ifp);
static void tulip_ifmedia_status(struct ifnet * const ifp, struct ifmediareq *req);
***************
*** 3998,4003 ****
--- 4002,4012 ----
only_once = 1;
#endif
+ #ifdef VPC_CPU
+ if (cpu_is_vpc == 3)
+ TULIP_CSR_WRITE(sc, csr_intr, 0);
+ #endif
+
while ((csr = TULIP_CSR_READ(sc, csr_status)) & sc->tulip_intrmask) {
#if defined(__NetBSD__) && !defined(TULIP_USE_SOFTINTR)
if (only_once == 1) {
***************
*** 4065,4070 ****
--- 4074,4089 ----
TULIP_CSR_WRITE(sc, csr_command, sc->tulip_cmdmode);
}
}
+ #ifdef VPC_CPU
+ if (cpu_is_vpc) {
+ if (csr & TULIP_STS_TXINTR)
+ tulip_tx_intr(sc);
+ /* VirtualPC seems to spuriously set this bit. */
+ if (csr & TULIP_STS_TXSTOPPED) {
+ csr &= ~(TULIP_STS_TXSTOPPED | TULIP_STS_ABNRMLINTR);
+ }
+ }
+ #endif
if (csr & TULIP_STS_ABNRMLINTR) {
u_int32_t tmp = csr & sc->tulip_intrmask
& ~(TULIP_STS_NORMALINTR|TULIP_STS_ABNRMLINTR);
***************
*** 4091,4096 ****
--- 4110,4121 ----
tulip_ifstart(&sc->tulip_if);
}
}
+ #ifdef VPC_CPU
+ if (cpu_is_vpc == 3) {
+ sc->tulip_intrmask |= TULIP_STS_ABNRMLINTR;
+ TULIP_CSR_WRITE(sc, csr_intr, sc->tulip_intrmask);
+ }
+ #endif
if (sc->tulip_flags & TULIP_NEEDRESET) {
tulip_reset(sc);
tulip_init(sc);
***************
*** 4674,4682 ****
--- 4699,4718 ----
sc->tulip_flags ^= TULIP_WANTSETUP|TULIP_DOINGSETUP;
ri->ri_free--;
nextout = ri->ri_nextout;
+ #ifdef VPC
+ if (cpu_is_vpc == 3) {
+ nextout->d_flag &= TULIP_DFLAG_ENDRING|TULIP_DFLAG_CHAIN;
+ nextout->d_flag |= TULIP_DFLAG_TxSETUPPKT;
+ } else {
+ nextout->d_flag &= TULIP_DFLAG_ENDRING|TULIP_DFLAG_CHAIN;
+ nextout->d_flag |= TULIP_DFLAG_TxFIRSTSEG|TULIP_DFLAG_TxLASTSEG
+ |TULIP_DFLAG_TxSETUPPKT|TULIP_DFLAG_TxWANTINTR;
+ }
+ #else
nextout->d_flag &= TULIP_DFLAG_ENDRING|TULIP_DFLAG_CHAIN;
nextout->d_flag |= TULIP_DFLAG_TxFIRSTSEG|TULIP_DFLAG_TxLASTSEG
|TULIP_DFLAG_TxSETUPPKT|TULIP_DFLAG_TxWANTINTR;
+ #endif
if (sc->tulip_flags & TULIP_WANTHASHPERFECT)
nextout->d_flag |= TULIP_DFLAG_TxHASHFILT;
else if (sc->tulip_flags & TULIP_WANTHASHONLY)
***************
*** 4717,4726 ****
--- 4753,4785 ----
*/
TULIP_TXDESC_PRESYNC(sc, nextout, sizeof(u_int32_t));
TULIP_CSR_WRITE(sc, csr_txpoll, 1);
+ #ifdef VPC_CPU
+ if (cpu_is_vpc == 3) {
+ while (nextout->d_status & TULIP_DSTS_OWNER)
+ ; /* nasty spin-wait */
+ TULIP_TXMAP_POSTSYNC(sc, sc->tulip_setupmap);
+ tulip_initring(sc, &sc->tulip_txinfo, sc->tulip_txdescs, TULIP_TXDESCS);
+
+ sc->tulip_flags &= ~TULIP_DOINGSETUP;
+ sc->tulip_flags &= ~TULIP_WANTTXSTART;
+ tulip_rx_intr(sc);
+ sc->tulip_cmdmode |= TULIP_CMD_RXRUN|TULIP_CMD_TXRUN;
+ sc->tulip_intrmask |= TULIP_STS_RXSTOPPED|TULIP_STS_TXINTR|TULIP_STS_RXINTR;
+ TULIP_CSR_WRITE(sc, csr_intr, sc->tulip_intrmask);
+ TULIP_CSR_WRITE(sc, csr_command, sc->tulip_cmdmode);
+ sc->tulip_if.if_flags &= ~IFF_OACTIVE;
+ } else {
+ if ((sc->tulip_intrmask & TULIP_STS_TXINTR) == 0) {
+ sc->tulip_intrmask |= TULIP_STS_TXINTR;
+ TULIP_CSR_WRITE(sc, csr_intr, sc->tulip_intrmask);
+ }
+ }
+ #else
if ((sc->tulip_intrmask & TULIP_STS_TXINTR) == 0) {
sc->tulip_intrmask |= TULIP_STS_TXINTR;
TULIP_CSR_WRITE(sc, csr_intr, sc->tulip_intrmask);
}
+ #endif
}
***************
*** 5809,5818 ****
PCI_MAPREG_TYPE_MEM |
PCI_MAPREG_MEM_TYPE_32BIT,
0, &memt, &memh, NULL, NULL) == 0);
! if (memh_valid) {
sc->tulip_bustag = memt;
sc->tulip_bushandle = memh;
! } else if (ioh_valid) {
sc->tulip_bustag = iot;
sc->tulip_bushandle = ioh;
} else {
--- 5868,5880 ----
PCI_MAPREG_TYPE_MEM |
PCI_MAPREG_MEM_TYPE_32BIT,
0, &memt, &memh, NULL, NULL) == 0);
! #ifndef VPC_CPU
! if ((cpu_is_vpc == 3) && memh_valid) {
sc->tulip_bustag = memt;
sc->tulip_bushandle = memh;
! } else
! #endif
! if (ioh_valid) {
sc->tulip_bustag = iot;
sc->tulip_bushandle = ioh;
} else {
*** ./dev/pci/if_tlp_pci.c.orig Tue Sep 19 13:03:55 2000
--- ./dev/pci/if_tlp_pci.c Tue Dec 19 16:19:08 2000
***************
*** 364,370 ****
printf("\n");
panic("tlp_pci_attach: impossible");
}
! sc->sc_chip = tpp->tpp_chip;
/*
* By default, Tulip registers are 8 bytes long (4 bytes
--- 364,378 ----
printf("\n");
panic("tlp_pci_attach: impossible");
}
! #ifdef VPC_CPU
! if (cpu_is_vpc) {
! sc->sc_chip = TULIP_CHIP_VPC;
! if (cpu_is_vpc == 3) {
! printf("\nYou must use de0 with Virtual PC 3. Sorry.\n");
! }
! } else
! #endif
! sc->sc_chip = tpp->tpp_chip;
/*
* By default, Tulip registers are 8 bytes long (4 bytes
***************
*** 649,655 ****
*/
tlp_pci_get_quirks(psc, enaddr, tlp_pci_21040_quirks);
break;
!
case TULIP_CHIP_21041:
/* Check for a slaved ROM on a multi-port board. */
tlp_pci_check_slaved(psc, TULIP_PCI_SHAREDROM,
--- 657,665 ----
*/
tlp_pci_get_quirks(psc, enaddr, tlp_pci_21040_quirks);
break;
! #ifdef VPC_CPU
! case TULIP_CHIP_VPC:
! #endif
case TULIP_CHIP_21041:
/* Check for a slaved ROM on a multi-port board. */
tlp_pci_check_slaved(psc, TULIP_PCI_SHAREDROM,
*** ./dev/pci/pciide.c.orig Tue Sep 19 23:35:12 2000
--- ./dev/pci/pciide.c Thu Oct 5 05:40:37 2000
***************
*** 1,4 ****
! /* $NetBSD: pciide.c,v 1.68.2.13 2000/08/22 02:19:32 enami Exp $ */
/*
--- 1,4 ----
! /* $NetBSD: pciide.c,v 1.68.2.14 2000/10/04 17:07:44 bouyer Exp $ */
/*
***************
*** 1884,1889 ****
--- 1884,1890 ----
{
struct pciide_channel *cp;
pcireg_t interface = PCI_INTERFACE(pa->pa_class);
+ int rev = PCI_REVISION(pa->pa_class);
int channel;
u_int32_t ideconf;
bus_size_t cmdsize, ctlsize;
***************
*** 1899,1905 ****
if (sc->sc_dma_ok) {
sc->sc_wdcdev.cap |= WDC_CAPABILITY_DMA | WDC_CAPABILITY_IRQACK;
sc->sc_wdcdev.irqack = pciide_irqack;
! if (sc->sc_pp->ide_product == PCI_PRODUCT_VIATECH_VT82C586A_IDE)
sc->sc_wdcdev.cap |= WDC_CAPABILITY_UDMA;
}
sc->sc_wdcdev.PIO_cap = 4;
--- 1900,1907 ----
if (sc->sc_dma_ok) {
sc->sc_wdcdev.cap |= WDC_CAPABILITY_DMA | WDC_CAPABILITY_IRQACK;
sc->sc_wdcdev.irqack = pciide_irqack;
! if (sc->sc_pp->ide_product == PCI_PRODUCT_VIATECH_VT82C586A_IDE
! && rev >= 6)
sc->sc_wdcdev.cap |= WDC_CAPABILITY_UDMA;
}
sc->sc_wdcdev.PIO_cap = 4;
*** ./dev/scsipi/atapi_wdc.c.orig Sat Aug 5 06:09:17 2000
--- ./dev/scsipi/atapi_wdc.c Tue Dec 19 16:03:35 2000
***************
*** 193,198 ****
--- 193,203 ----
chp->wdc->sc_dev.dv_xname, chp->channel, drive);
panic("wdc_atapi_get_params");
}
+ #ifdef VPC_CPU
+ /* Connectix CD seems to return AT_ERROR when all is well */
+ if (cpu_is_vpc == 3)
+ wdc_c.flags &= ~AT_ERROR;
+ #endif
if (wdc_c.flags & (AT_ERROR | AT_TIMEOU | AT_DF)) {
WDCDEBUG_PRINT(("wdc_atapi_get_params: ATAPI_SOFT_RESET "
"failed for drive %s:%d:%d: error 0x%x\n",