# $NetBSD: GENERIC,v 1.174 2024/01/29 18:27:11 christos 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/cobalt/conf/std.cobalt"

options         INCLUDE_CONFIG_FILE     # embed config file in kernel binary

#ident          "GENERIC-$Revision: 1.174 $"

maxusers        32

# Standard system options
options         KTRACE          # system call tracing support
options         SYSVMSG         # System V message queues
options         SYSVSEM         # System V semaphores
options         SYSVSHM         # System V shared memory
options         NTP             # network time protocol
options         USERCONF        # userconf(4) support
#options        PIPE_SOCKETPAIR # smaller, but slower pipe(2)
options         SYSCTL_INCLUDE_DESCR    # Include sysctl descriptions in kernel

# Alternate buffer queue strategies for better responsiveness under high
# disk I/O load.
#options        BUFQ_READPRIO
options         BUFQ_PRIOCSCAN

# Debugging options
options         DIAGNOSTIC      # extra kernel sanity checking
#options        DEBUG           # extra kernel debugging support
options         DDB             # kernel dynamic debugger
#options        DDB_HISTORY_SIZE=100 # enable history editing in DDB
makeoptions     DEBUG="-g"      # compile full symbol table
makeoptions     CPUFLAGS="-march=vr5000"

# Compatibility options
include         "conf/compat_netbsd16.config"
#options        EXEC_ECOFF      # exec ECOFF binaries
#options        COMPAT_ULTRIX   # binary compatibility with Ultrix

# File systems
file-system     FFS             # Berkeley Fast Filesystem
file-system     EXT2FS          # second extended file system (linux)
file-system     NFS             # Sun NFS-compatible filesystem client
file-system     KERNFS          # kernel data-structure filesystem
file-system     NULLFS          # NULL layered filesystem
#file-system    OVERLAY         # overlay file system
file-system     MFS             # memory-based filesystem
file-system     FDESC           # user file descriptor filesystem
#file-system    UMAPFS          # uid/gid remapping filesystem
file-system     LFS             # Log-based filesystem (still experimental)
file-system     PROCFS          # /proc
file-system     CD9660          # ISO 9660 + Rock Ridge file system
file-system     UNION           # union file system
file-system     MSDOSFS         # MS-DOS FAT filesystem(s).
#file-system    CODA            # Coda File System; also needs vcoda (below)
file-system     PTYFS           # /dev/pts/N support
file-system     TMPFS           # Efficient memory file-system
#file-system    UDF             # experimental - OSTA UDF CD/DVD file-system

# File system options
#options        FFS_EI          # FFS Endian Independent support
#options        FFS_NO_SNAPSHOT # No FFS snapshot support
options         QUOTA           # legacy UFS quotas
options         QUOTA2          # new, in-filesystem UFS quotas
options         UFS_DIRHASH     # UFS Large Directory Hashing
options         UFS_EXTATTR     # Extended attribute support for UFS1
options         WAPBL           # File system journaling support
options         LFS_DIRHASH     # LFS version of UFS_DIRHASH - experimental
options         NFSSERVER       # Network File System server

# Networking options
#options        GATEWAY         # IP packet forwarding
options         INET            # Internet protocols
options         INET6           # IPV6
#options        IPSEC           # IP security
#options        IPSEC_DEBUG     # debug for IP security
#options        MROUTING        # packet forwarding of multicast packets
#options        PIM             # Protocol Independent Multicast
#options        NETATALK        # AppleTalk (over Ethernet) protocol
#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        TCP_DEBUG       # Record last TCP_NDEBUG packets with SO_DEBUG

#options        ALTQ            # Manipulate network interfaces' output queues
#options        ALTQ_BLUE       # Stochastic Fair Blue
#options        ALTQ_CBQ        # Class-Based Queueing
#options        ALTQ_CDNR       # Diffserv Traffic Conditioner
#options        ALTQ_FIFOQ      # First-In First-Out Queue
#options        ALTQ_FLOWVALVE  # RED/flow-valve (red-penalty-box)
#options        ALTQ_HFSC       # Hierarchical Fair Service Curve
#options        ALTQ_LOCALQ     # Local queueing discipline
#options        ALTQ_PRIQ       # Priority Queueing
#options        ALTQ_RED        # Random Early Detection
#options        ALTQ_RIO        # RED with IN/OUT
#options        ALTQ_WFQ        # Weighted Fair Queueing

# JIT compiler for bpfilter
#options        SLJIT
#options        BPFJIT

# These options enable verbose messages for several subsystems.
# Warning, these may compile large string tables into the kernel!
options         PCIVERBOSE      # verbose PCI device autoconfig messages
#options        PCI_CONFIG_DUMP # verbosely dump PCI config space
options         SCSIVERBOSE     # human readable SCSI error messages
options         MIIVERBOSE      # verbose PHY autoconfig messages

options         NFS_BOOT_DHCP

config          netbsd  root on ? type ?

mainbus0        at root

cpu0            at mainbus?

mcclock0        at mainbus? addr 0x10000070

com0            at mainbus? addr 0x1c800000 level 3
options         COM_16650

zsc0            at mainbus? addr 0x1c800000 irq 4
zstty0          at zsc0 channel 0
zstty1          at zsc0 channel 1

lcdpanel0       at mainbus? addr 0x1f000000

gt0             at mainbus? addr 0x14000000

pci*            at gt0
pchb*           at pci? dev ? function ?
pcib*           at pci? dev ? function ?

options         PCI_NETBSD_CONFIGURE

# Cryptographic Devices

# PCI cryptographic devices
hifn*   at pci? dev ? function ?        # Hifn 7755/7811/795x
ubsec*  at pci? dev ? function ?        # Broadcom 5501/5601/580x/582x

# PCI serial/parallel interfaces
puc*            at pci? dev ? function ?        # PCI "universal" comm. cards
com*            at puc? port ?
#lpt*           at puc? port ?
#cy*            at pci? dev ? function ?        # Cyclades Cyclom-Y serial cards

# PCI SCSI controllers
#adv*           at pci? dev ? function ?        # AdvanSys 1200[A,B], 9xx[U,UA]
#adw*           at pci? dev ? function ?        # AdvanSys 9xxUW 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/FC
siop*           at pci? dev ? function ?        # NCR 53c8xx SCSI
esiop*          at pci? dev ? function ?        # NCR 53c82s75xx SCSI and newer
#pcscp*         at pci? dev ? function ?        # AMD 53c974 PCscsi-PCI SCSI

# SCSI bus support
#scsibus*       at adv?
#scsibus*       at adw?
scsibus*        at ahc?
#scsibus*       at bha?
#scsibus*       at dpt?
#scsibus*       at isp?
scsibus*        at siop?
scsibus*        at esiop?
#scsibus*       at pcscp?

# 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
#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   # GENERIC pciide driver
acardide*       at pci? dev ? function ?        # Acard IDE controllers
#aceride*       at pci? dev ? function ?        # Acer Lab IDE controllers
#artsata*       at pci? dev ? function ?        # Intel i31244 SATA controller
cmdide*         at pci? dev ? function ?        # CMD tech IDE controllers
#cypide*        at pci? dev ? function ?        # Cypress IDE controllers
hptide*         at pci? dev ? function ?        # Triones/HighPoint IDE controllers
#optiide*       at pci? dev ? function ?        # Opti IDE controllers
pdcide*         at pci? dev ? function ?        # Promise IDE controllers
pdcsata*        at pci? dev ? function ?        # Promise SATA150 controllers
satalink*       at pci? dev ? function ?        # SiI SATALink controllers
#siside*        at pci? dev ? function ?        # SiS IDE controllers
#slide*         at pci? dev ? function ?        # Symphony Labs IDE controllers
viaide*         at pci? dev ? function ?        # VIA/AMD/Nvidia IDE controllers

# ATA bus
atabus*         at ata?

# 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 atabus? drive ? flags 0x0000

# PCI network interfaces
#ep*            at pci? dev ? function ?        # 3Com 3c59x
#ex*            at pci? dev ? function ?        # 3Com 90x[BC]
#epic*          at pci? dev ? function ?        # SMC EPIC/100 Ethernet
#fxp*           at pci? dev ? function ?        # Intel EtherExpress PRO10+/100B
#pcn*           at pci? dev ? function ?        # PCnet-PCI Ethernet
#ne*            at pci? dev ? function ?        # NE2000-compatible Ethernet
#ntwoc*         at pci? dev ? function ?        # Riscom/N2 PCI Sync Serial
ral*            at pci? dev ? function ?        # ralink wifi
#sip*           at pci? dev ? function ?        # SiS 900 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
#rtk*           at pci? dev ? function ?        # Realtek 8129/8139

# MII/PHY support
#exphy*         at mii? phy ?                   # 3Com internal PHYs
#icsphy*                at mii? phy ?                   # ICS189x PHYs
#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
#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

# PCI IEEE1394 controllers
#fwohci*        at pci? dev ? function ?                # IEEE1394 Open Host Controller

#ieee1394if*    at fwohci?
#fwip*          at ieee1394if?                  # IP over IEEE1394
#sbp*           at ieee1394if? euihi ? euilo ?
#scsibus*       at sbp?

# PCI audio devices
#clcs*          at pci? dev ? function ?        # Cirrus Logic CS4280
#eap*           at pci? dev ? function ?        # Ensoniq AudioPCI
#emuxki*        at pci? dev ? function ?        # SoundBlaster Live!
#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

# Audio support
#audio*         at audiobus?

#spkr*          at audio?                       # PC speaker (synthesized)

# Pseudo-devices

pseudo-device   crypto                          # /dev/crypto device
pseudo-device   swcrypto                        # software crypto implementation

# Disk/mass storage pseudo-devices
#pseudo-device  ccd                             # concatenated disk devices
#pseudo-device  cgd                             # cryptographic disk devices
pseudo-device   raid                            # RAIDframe disk driver
options         RAID_AUTOCONFIG                 # auto-configuration of RAID
# 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   fss                             # file system snapshot device
#pseudo-device  md                              # memory disk device (ramdisk)
pseudo-device   vnd                             # disk-like interface to files
#options        VND_COMPRESSION         # compressed vnd(4)

# Network pseudo-devices
pseudo-device   bpfilter                        # Berkeley packet filter
pseudo-device   carp                            # Common Address Redundancy Protocol
pseudo-device   npf                     # NPF packet filter
pseudo-device   loop                            # network loopback
#pseudo-device  ppp                             # Point-to-Point Protocol
pseudo-device   pppoe                           # PPP over Ethernet (RFC 2516)
#pseudo-device  sl                              # Serial Line IP
#pseudo-device  tun                             # network tunneling over tty
#pseudo-device  tap                             # virtual Ethernet
#pseudo-device  gre                             # generic L3 over IP tunnel
#pseudo-device  gif                             # RFC1933 tunnel
#pseudo-device  faith                           # IPv[46] tcp relay translation
#pseudo-device  stf                             # 6to4 IPv6 over IPv4 encapsulation
pseudo-device   vlan                    # IEEE 802.1q encapsulation
pseudo-device   bridge                  # simple inter-network bridging
#pseudo-device  vether                  # Virtual Ethernet for bridge
pseudo-device   agr                     # IEEE 802.3ad link aggregation

#
# accept filters
pseudo-device   accf_data               # "dataready" accept filter
pseudo-device   accf_http               # "httpready" accept filter

# Miscellaneous pseudo-devices
pseudo-device   pty                             # pseudo-terminals
#pseudo-device  sequencer                       # MIDI sequencer
#options        RND_COM                         # use "com" randomness (BROKEN)
pseudo-device   clockctl                # user control of clock subsystem
pseudo-device   nullcons                        # no-op console
pseudo-device   swwdog                  # software watchdog timer -- swwdog(4)

# A pseudo device needed for Coda               # also needs CODA (above)
#pseudo-device  vcoda                           # coda minicache <-> venus comm.

pseudo-device   ksyms                           # /dev/ksyms

include "dev/veriexec.config"

# Pull in optional local configuration - always at end
cinclude        "arch/cobalt/conf/GENERIC.local"