# $NetBSD: GENERIC,v 1.204 2024/01/29 18:27:10 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/arc/conf/std.arc"

options         INCLUDE_CONFIG_FILE     # embed config file in kernel binary

#ident          "GENERIC-$Revision: 1.204 $"

maxusers        32              # estimated number of users

# Platform support
options         PLATFORM_ACER_PICA_61           # PICA, NEC ImageRISCstation
options         PLATFORM_DESKTECH_ARCSTATION_I  # DeskStation rPC44
options         PLATFORM_DESKTECH_TYNE          # DeskStation Tyne
options         PLATFORM_MICROSOFT_JAZZ         # MIPS Magnum
options         PLATFORM_NEC_J96A               # NEC Express 5800/240 EISA R4K
options         PLATFORM_NEC_JC94               # NEC Express 5800/230 PCI R4K
options         PLATFORM_NEC_R94                # NEC RISCstation 2200 EISA
options         PLATFORM_NEC_R96        # NEC Express RISCserver, RISCserver 2200
options         PLATFORM_NEC_RAX94              # NEC RISCstation 2200 PCI
options         PLATFORM_NEC_RD94               # NEC RISCstation 2250
options         PLATFORM_SNI_RM200PCI

# CPU related options
makeoptions     CPUFLAGS="-march=mips3 -mabi=32"
makeoptions     COPTS="-O2 -fno-unwind-tables"

# Standard system options

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         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

# Diagnostic/debugging support options
#options        DIAGNOSTIC              # cheap kernel consistency checks
#options        DEBUG                   # expensive debugging checks/support
options         DDB                     # in-kernel debugger
#options        DDB_HISTORY_SIZE=100    # enable history editing in DDB
#options        KGDB                    # remote gdb
#options        KGDB_DEVRATE=19200      # kernel gdb port rate (default 9600)
#options        KGDB_DEV="17*256+0"     # device for kernel gdb
#makeoptions    DEBUG="-g"              # compile full symbol table

# Compatibility options
include         "conf/compat_netbsd10.config"

options         COMPAT_386BSD_MBRPART # recognize old partition ID

# mipsel specific
#options        COMPAT_ULTRIX   # Ultrix binary compatibility
options         EXEC_ECOFF      # Ultrix RISC binaries are ECOFF format

# File systems
file-system     FFS             # fast filesystem
file-system     EXT2FS          # second extended file system (linux)
#file-system    LFS             # log-structured file system
file-system     MFS             # memory file system
#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     NFS             # Network File System client
file-system     FDESC           # /dev/fd
file-system     KERNFS          # /kern
file-system     NULLFS          # loopback file system
#file-system    OVERLAY         # overlay file system
#file-system    PUFFS           # Userspace file systems (e.g. ntfs-3g & sshfs)
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     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         NFSSERVER       # Network File System server

# Networking options
#options        GATEWAY         # IP packet forwarding
options         INET            # IP + ICMP + TCP + UDP
options         INET6           # IPV6
#options        IPSEC           # IP security
#options        IPSEC_DEBUG     # debug for IP security
#options        MROUTING        # IP multicast routing
#options        PIM             # Protocol Independent Multicast
#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        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        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         SCSIVERBOSE     # human readable SCSI error messages

# wscons terminal emulation
options         WSEMUL_VT100    # VT100 emulation
options         WSDISPLAY_COMPAT_USL            # wsconscfg VT handling

# Kernel root file system and dump configuration.
options         NFS_BOOT_DHCP
config          netbsd  root on ? type ?
#config         netbsd  root on sd0a type ffs
#config         netbsd  root on ? type nfs

#
# Device configuration
#

mainbus0        at root
cpu*            at mainbus0

#### Jazz-Internal bus devices

# PLATFORM_ACER_PICA_61
# PLATFORM_MICROSOFT_JAZZ
# PLATFORM_NEC_J96A
# PLATFORM_NEC_JC94
# PLATFORM_NEC_R94
# PLATFORM_NEC_R96
# PLATFORM_NEC_RAX94
# PLATFORM_NEC_RD94
jazzio*         at mainbus0     # Jazz-Internal bus host bridge.

timer0          at jazzio?
mcclock0        at jazzio?
#pc0            at jazzio?
#opms0          at jazzio?
vga0            at jazzio?      # Jazz localbus VGA
pckbc0          at jazzio?      # PC keyboard controller
com0            at jazzio?
com1            at jazzio?
lpt0            at jazzio?
sn0             at jazzio?

fdc0            at jazzio?
fd*             at fdc? drive ?

asc0            at jazzio? flags 0x000000       # NCR53C9x SCSI
osiop*          at jazzio? flags 0x00000        # NCR53C710 SCSI
oosiop*         at jazzio?                      # NCR53C700 SCSI

#### ISA bus devices

# PLATFORM_ACER_PICA_61
# PLATFORM_MICROSOFT_JAZZ
# PLATFORM_NEC_J96A
# PLATFORM_NEC_R94
# PLATFORM_NEC_R96
jazzisabr*      at mainbus0     # Jazz-(E)ISA bus bridge.
isa*            at jazzisabr?

# PLATFORM_DESKTECH_ARCSTATION_I
arcsisabr*      at mainbus0     # DeskStation rPC44 ISA host bridge.
isa*            at arcsisabr?

# PLATFORM_DESKTECH_TYNE
tyneisabr*      at mainbus0     # DeskStation Tyne ISA host bridge.
isa*            at tyneisabr?

#isadma0        at isa?

isapnp0         at isa?

timer0          at isa? port 0x40 irq 0
mcclock0        at isa? port 0x70

#pc0            at isa? irq 1                   # generic PC console device
#opms0          at isa? irq 12                  # PS/2 auxiliary port mouse
vga0            at isa?
#options        VGA_RASTERCONSOLE
options         VGA_RESET
pckbc0          at isa?                         # PC keyboard controller
com0            at isa? port 0x3f8 irq 4
com1            at isa? port 0x2f8 irq 3
com2            at isa? port 0x3e8 irq 4
com3            at isa? port 0x2e8 irq 3
#ast0           at isa? port 0x1a0 irq 3        # AST 4-port serial cards
#com*           at ast? slave ?

# Joystick driver. Probe is a little strange; add only if you have one.
#joy0           at isa? port 0x201

# 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
wdc*            at isapnp?

# ISA parallel printer interfaces
lpt0            at isa? port 0x378 irq 7

# ISA network interfaces
#ec0            at isa? port 0x250 iomem 0xd8000 irq 9  # 3Com 3c503 Ethernet
ep*             at isa? port ? irq ?            # 3C509 ethernet cards
ep*             at isapnp?                      # 3C509B ethernet card
ne0             at isa? port 0x280 irq 9        # NE[12]000 ethernet cards
ne1             at isa? port 0x300 irq 10
ne*             at isapnp?                      # NE[12]000 PnP ethernet
we0             at isa? port 0x280 iomem 0xd0000 irq 9  # WD/SMC Ethernet
we1             at isa? port 0x300 iomem 0xcc000 irq 10

# XXX - should be configured
#btl0           at isa? port 0x330 irq ? drq ?

#### PCI bus devices

# PLATFORM_NEC_JC94
# PLATFORM_NEC_RAX94
# PLATFORM_NEC_RD94
necpb*          at mainbus0     # NEC RISCstation PCI host bridge.
pci*            at necpb?
pci*            at ppb? bus ?
options         PCI_NETBSD_CONFIGURE

ppb*            at pci? dev ? function ?        # PCI-PCI bridges

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

#vga*           at pci? dev ? function ?
tga*            at pci? dev ? function ?        # DEC ZLXp-E[123] Graphics

# PCI SCSI controllers
adv*            at pci? dev ? function ?        # AdvanSys 1200[A,B], 9xx[U,UA]
ahc*            at pci? dev ? function ?        # Adaptec [23]94x, aic78x0 SCSI
iha*            at pci? dev ? function ?        # Initio INIC-940/950 SCSI
njs*            at pci? dev ? function ?        # Workbit NinjaSCSI-32
pcscp*          at pci? dev ? function ?        # AMD Am53c974 PCscsi-PCI SCSI
siop*           at pci? dev ? function ?        # NCR/Symbios 53c8xx SCSI
esiop*          at pci? dev ? function ?        # NCR/Symbios 53c875/95/1010
trm*            at pci? dev ? function ?        # Tekram DC-395/315 SCSI

# 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

# PCI network devices
#an*            at pci? dev ? function ?        # Aironet PC4500/PC4800 (802.11)
bge*            at pci? dev ? function ?        # Broadcom 570x gigabit Ethernet
ep*             at pci? dev ? function ?        # 3Com 3c59x
epic*           at pci? dev ? function ?        # SMC EPIC/100 Ethernet
ex*             at pci? dev ? function ?        # 3Com 90x[BC]
fxp*            at pci? dev ? function ?        # Intel EtherExpress PRO
gsip*           at pci? dev ? function ?        # NS83820 Gigabit Ethernet
#hme*           at pci? dev ? function ?        # Sun STP2002-STQ
#mtd*           at pci? dev ? function ?        # Myson MTD803 3-in-1 Ethernet
ne*             at pci? dev ? function ?        # NE2000-compatible
#ntwoc*         at pci? dev ? function ?        # Riscom/N2 PCI Sync Serial
pcn*            at pci? dev ? function ?        # AMD PCnet-PCI Ethernet
re*             at pci? dev ? function ?        # Realtek 8139C+/8169/8110S
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
#skc*           at pci? dev ? function ?        # SysKonnect SK9821
#sk*            at skc?                         # SysKonnect SK9821
ste*            at pci? dev ? function ?        # Sundance ST-201 Ethernet
#stge*          at pci? dev ? function ?        # Sundance/Tamarack TC9021
#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
vge*            at pci? dev ? function ?        # VIA VT612X Gigabit Ethernet
vr*             at pci? dev ? function ?        # VIA Rhine Fast Ethernet
#wi*            at pci? dev ? function ?        # Intersil Prism Mini-PCI
wm*             at pci? dev ? function ?        # Intel 82543/82544 gigabit

#### MII/PHY support
acphy*          at mii? phy ?           # Altima 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
ciphy*          at mii? phy ?           # Cicada CS8201 Gig-E PHYs
dmphy*          at mii? phy ?           # Davicom DM9101 PHYs
exphy*          at mii? phy ?           # 3Com internal PHYs
#gentbi*        at mii? phy ?           # Generic Ten-Bit 1000BASE-[CLS]X 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
ikphy*          at mii? phy ?           # Intel 82563 PHYs
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
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

# SCSI bus support
scsibus*        at scsi?

#### SCSI bus devices

sd*             at scsibus? target ? lun ?
st*             at scsibus? target ? lun ?
cd*             at scsibus? target ? lun ?
ch*             at scsibus? target ? lun ?
ss*             at scsibus? target ? lun ?
uk*             at scsibus? target ? lun ?

# ATA (IDE) bus support
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

# ATAPI bus support
atapibus*       at atapi?

#### ATAPI bus 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

#### Workstation Console attachments

wsdisplay*      at vga?
wsdisplay*      at tga?
pckbd*          at pckbc?       # PC keyboard (kbd port)
wskbd*          at pckbd?
pms*            at pckbc?       # PS/2-style mouse (aux port)
wsmouse*        at pms?

#### Pseudo devices

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

# disk/mass storage pseudo-devices
pseudo-device   ccd                     # concatenated/striped disk devices
#pseudo-device  cgd                     # cryptographic disk devices
#pseudo-device  raid                    # RAIDframe disk driver
#options        RAID_AUTOCONFIG
# 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)
#pseudo-device  putter                  # for puffs and pud

# 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                     # IPv[46] over IPv[46] tunnel (RFC1933)
#pseudo-device  faith                   # IPv[46] tcp relay translation i/f
#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
# rnd works; RND_COM does not on port arc yet.
#options        RND_COM                 # use "com" randomness as well (BROKEN)
pseudo-device   clockctl                # user control of clock subsystem
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.

# mouse & keyboard multiplexor pseudo-devices
#pseudo-device  wsmux
pseudo-device   ksyms                   # /dev/ksyms

#include "dev/veriexec.config"

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