# $NetBSD: GENERIC,v 1.10 2025/03/27 12:22:44 riastradh 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/virt68k/conf/std.virt68k"

options         INCLUDE_CONFIG_FILE     # embed config file in kernel binary

#ident          "GENERIC-$Revision: 1.10 $"

makeoptions     COPTS="-O2 -fno-reorder-blocks" # see share/mk/sys.mk

# reserve symbol space and copy the symbol table into it.  Needed
# because Qemu does not load the symbol table when loading the
# kernel.
makeoptions     COPY_SYMTAB=1

# CPUs this kernel supports
options         M68030
options         M68040

maxusers        16

# Needed on m68040 boards to emulate some missing FP instructions
options         FPSP

options         DDB
options         DIAGNOSTIC
#options        LOCKDEBUG
#options        DEBUG

#options        SYSVSHM
options         KTRACE

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

file-system     FFS
file-system     NFS
file-system     KERNFS
file-system     PROCFS
#file-system    MFS
file-system     CD9660
file-system     MSDOSFS
#file-system    UNION
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     NULLFS          # loopback file system
file-system     PUFFS           # Userspace file systems (e.g. ntfs-3g & sshfs)
pseudo-device   putter          # for puffs and pud

# File system options
#options        FFS_EI          # FFS Endian Independent support
options         FFS_NO_SNAPSHOT # No FFS snapshot support
#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         INET
options         INET6           # IPV6
#options        IPSEC           # IP security
#options        IPSEC_DEBUG     # debug for IP security
#options        GATEWAY         # IP packet forwarding
#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

options         COMPAT_AOUT_M68K        # compatibility with NetBSD/m68k a.out
include         "conf/compat_netbsd09.config"
#options        COMPAT_SUNOS
#options        COMPAT_M68K4K   # compatibility with NetBSD/m68k4k binaries
#options        COMPAT_LINUX    # compatibility with Linux/m68k binaries
#options        COMPAT_OSSAUDIO # compatibility with Linux/m68k binaries

# Shared memory options
options         SYSVMSG         # System V-like message queues
options         SYSVSEM         # System V-like semaphores
options         SYSVSHM         # System V-like memory sharing

## force NFS root and swap
#config netbsd          root on ? type nfs
## "generic" boot (put root on boot device)
config netbsd           root on ? type ?

# Which protocol to use when booting over NFS
options         NFS_BOOT_DHCP           # Diskless client w/ dhcp
options         NFS_BOOT_BOOTP          # Diskless client w/ bootp
options         NFS_BOOT_BOOTPARAM      # Diskless client w/ bootparamd

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

pseudo-device   sl
pseudo-device   ppp
#pseudo-device  pppoe                   # PPP over Ethernet (RFC 2516)
pseudo-device   loop
pseudo-device   bpfilter
#pseudo-device  carp                    # Common Address Redundancy Protocol
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
pseudo-device   pty                     # pseudo-terminals
#pseudo-device  cgd                     # cryptographic disk devices
pseudo-device   vnd
#options        VND_COMPRESSION         # compressed vnd(4)
pseudo-device   fss                     # file system snapshot device
pseudo-device   clockctl                # user control of clock subsystem
pseudo-device   ksyms                   # /dev/ksyms
#pseudo-device  npf                     # NPF packet filter
pseudo-device   swwdog                  # software watchdog timer -- swwdog(4)
pseudo-device   drvctl                  # user control of drive subsystem

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

# random number generator pseudo-device
#options        RND_COM                 # use "com" randomness as well (BROKEN)

# Veriexec
# include "dev/veriexec.config"

mainbus0        at root

# Goldfish virtual devices
gfpic*          at mainbus? addr ?      # interrupt controller
gftty*          at mainbus? addr ?      # console terminal
gfrtc*          at mainbus? addr ?      # real-time clock / timer

# Qemu Virtual System Controller
virtctrl*       at mainbus? addr ?

# VirtIO devices
virtio*         at mainbus? addr ?      # VirtIO nexus

include "dev/virtio/virtio.config"
no vio9p*       at virtio?              # XXX ?
no viomb*       at virtio?              # XXX ?

# SCSI devices
scsibus* at scsi?
sd*             at scsibus? target ? lun ?      # SCSI disks
#st*            at scsibus? target ? lun ?      # SCSI tapes
cd*             at scsibus? target ? lun ?      # SCSI CD-ROMs
#ch*            at scsibus? target ? lun ?      # SCSI changer devices
#ss*            at scsibus? target ? lun ?      # SCSI scanners
#ses*           at scsibus? target ? lun ?      # SCSI SES/SAF-TE devices
uk*             at scsibus? target ? lun ?      # unknown SCSI

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