# $NetBSD: GENERIC,v 1.111 2024/06/30 05:59:14 rin 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.

# Supports Sun2 (2/120, 2/170, 2/50, ...)
# Supports root on: sd*, ... (FFS)

include         "arch/sun2/conf/std.sun2"

#options        MODULAR                 # new style module(7) framework
#options        MODULAR_DEFAULT_AUTOLOAD

options         INSECURE                # allow modload(8) in multiuser mode

#options        INCLUDE_CONFIG_FILE     # embed config file in kernel binary

#ident          "GENERIC-$Revision: 1.111 $"

# Bootloader has size limit (~2MB). Kernel should be smaller than this
# hard limit. Otherwise, it freezes before adding swap even with 7MB
# memory. -fno-omit-frame-pointer is necessary for backtraces in DDB.
options         NO_KERNEL_RCSIDS
makeoptions     COPTS="-Os -fno-inline-small-functions -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-omit-frame-pointer"

# Machines to be supported by this kernel
#options        FPU_EMULATE

# Needs to be set per system.  i.e change these as you see fit
maxusers        4

# Standard system options
options         KTRACE          # system call tracing
#options        SYSVMSG         # System V message queues
#options        SYSVSEM         # System V semaphores
#options        SYSVSHM         # System V shared memory
#options        INSECURE        # disable kernel security level
#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

# Which kernel debugger?  Uncomment either this:
options         DDB
# ... or these for KGDB (gdb remote target)
#makeoptions    DEBUG="-g"      # debugging symbols for gdb
#options        KGDB
#options        KGDB_DEV=0x0C00 # ttya=0C00 ttyb=0C01

# Other debugging options
#options        DDB_HISTORY_SIZE=100    # enable history editing in DDB
#options        DEBUG           # kernel debugging code
#options        DIAGNOSTIC      # extra kernel sanity checking
#options        PMAP_DEBUG
#options        SCSIDEBUG
#options        SCSIVERBOSE             # Verbose SCSI errors

# Compatibility options
#include        "conf/compat_netbsd16.config"
#options        COMPAT_SUNOS    # can run SunOS 4.1.1 executables
#options        COMPAT_AOUT_M68K # support for NetBSD a.out executables
#options        EXEC_AOUT       # support for a.out executables

# File systems
file-system     FFS             # Berkeley Fast Filesystem
#file-system    NFS             # Sun NFS client support
#file-system    CD9660          # ISO 9660 + Rock Ridge 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    PROCFS          # /proc
#file-system    UNION           # union file system
#file-system    MFS             # memory-based filesystem
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
#options        NFS_V2_ONLY     # Exclude NFS3 code to save space

# Networking options
options         INET            # IP protocol stack support
#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

# Work-around for root on slow servers (insurance...)
options         NFS_BOOT_RWSIZE=1024
options         NFS_BOOT_BOOTPARAM

config          netbsd root on ? type ?

#### Main bus.
mainbus0 at root

#### Bus types.

obio0   at mainbus?             # all Sun-2
obmem0  at mainbus?             # all Sun-2
mbmem0  at mainbus?             # 2/120, 2/170
mbio0   at mainbus?             # 2/120, 2/170
sun68kvme0      at mainbus?     # 2/50, 2/130, 2/160
vme0    at sun68kvme0           # mi VME attachment

#### Standard system devices.

## The AM9513 clock chip.
clock0  at obio0 addr 0x002800  # 2/120, 2/170
clock0  at obio0 addr 0x7f2800  # 2/50, 2/130, 2/160

## The MM58167 time-of-day chip.
tod0    at obio0 addr 0x003800  # 2/120, 2/170
tod0    at vme0 addr 0x200800   # 2/50, 2/130, 2/160

#### Serial port configuration.

## Zilog 8530 serial chips.  Each has two channels.
## zs0 is ttya and ttyb.  zs1 is the keyboard and mouse.
## zs0 is REQUIRED to use KGDB.
zs0     at obio0 addr 0x002000  # 2/120, 2/170
zs0     at obio0 addr 0x7f2000  # 2/50
zs1     at obmem0 addr 0x780000 # 2/120, 2/170
zs1     at obio0 addr 0x7f1800  # 2/50
zs2     at mbmem0 addr 0x080800 # 2/120, 2/170 (first sc SCSI)
zs3     at mbmem0 addr 0x081000 # 2/120, 2/170 (first sc SCSI)
zs4     at mbmem0 addr 0x084800 # 2/120, 2/170 (second sc SCSI)
zs5     at mbmem0 addr 0x085000 # 2/120, 2/170 (second sc SCSI)
zstty*  at zs? channel ?        # ttya
kbd0    at zstty?               # keyboard
ms0     at zstty?               # mouse

#### Disk controllers and disks.

## PAL+logic-based "Sun SCSI 2" Multibus/VME SCSI controller.
## This driver has several flags which may be enabled using
## the "flags" directive.  Valid flags are:
##
## 0x0ff                Set (1<<target) to disable parity checking
## 0x100                Set this bit to disable DMA interrupts (poll)
## 0x200                Set this bit to disable DMA entirely (use PIO)
##
## For example: "flags 0x10f" would disable DMA interrupts,
## and disable parity for targets 0-3

sc0     at mbmem0 addr 0x80000 ipl 2 flags 0xff
sc0     at vme0 addr 0x200000 irq 2 vect 0x40 flags 0xff
sc1     at mbmem0 addr 0x84000 ipl 2 flags 0xff

## NCR5380-based "Sun SCSI 3" VME SCSI controller.
## This driver has several flags which may be enabled by OR'ing
## the values and using the "flags" directive.
## Valid flags are:
##
##      0x01            Use DMA (may be polled)
##      0x02            Use DMA completion interrupts
##      0x04            Allow disconnect/reselect
##
## E.g. the following would enable DMA, interrupts, and reselect:
## si0  at vme0 addr 0x200000 ipl 3 vect 0x40 flags 0x07
##
## By default, DMA is enabled in the driver.

si0     at vme0 addr 0x200000 irq 2 vect 0x40

## These entries find devices on all SCSI busses and assign
## unit numbers dynamically.
scsibus* at sc?
scsibus* at si?
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
#uk*    at scsibus? target ? lun ?              # unknown SCSI

# support old SCSI devices that don't understand the INQUIRY command
options         SCSI_OLD_NOINQUIRY

## Xylogics 450 or 451 Multibus/VME SMD disk controllers and disks.
#xyc0   at mbio0 addr 0xee40 ipl 2
#xyc0   at vme0 addr 0xee40 irq 2 vect 0x48
#xyc1   at mbio0 addr 0xee48 ipl 2
#xyc1   at vme0 addr 0xee48 irq 2 vect 0x49
#xy*    at xyc? drive ?

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

## Memory-disk device.
#pseudo-device  md

#### Network interfaces.

## Intel Ethernet (onboard, or Multibus/VME)
ie0     at obio0 addr 0x7f0800 ipl 3            # 2/50
ie0     at mbmem0 addr 0x88000 ipl 3
ie1     at mbmem0 addr 0x8c000 ipl 3
## VME: the first [addr,len] pair specifies the device registers;
##      the second pair specifies the on-board memory buffer
ie1     at vme0 addr 0xe88000,0xe00000 len -1,0x40000 irq 3 vect 0x75

## 3Com Ethernet (Multibus only)
ec0     at mbmem0 addr 0xe0000 ipl 3
ec1     at mbmem0 addr 0xe2000 ipl 3
# limit NFS R/W size for poor ec(4) interfaces
options         NFS_RSIZE=1024,NFS_WSIZE=1024

## Frame buffers.

## Sun "bwtwo" black and white framebuffer.
bwtwo0  at obmem0 addr 0x700000 # 2/120, 2/170
bwtwo0  at obio0 addr 0x0       # 2/50

## PROM console driver -- if all else fails
pcons0  at mainbus0                     # PROM console

#### Miscellaneous.
pseudo-device   loop                    # network loopback
#pseudo-device  bpfilter                # packet filter
#pseudo-device  carp                    # Common Address Redundancy Protocol
#pseudo-device  bridge                  # simple inter-network bridging
#pseudo-device  vether                  # Virtual Ethernet for bridge
#pseudo-device  sl                      # CSLIP
#pseudo-device  ppp                     # PPP
#pseudo-device  pppoe                   # PPP over Ethernet (RFC 2516)
#pseudo-device  tun                     # network tunneling over tty
#pseudo-device  tap                     # virtual Ethernet
#pseudo-device  gre                     # generic L3 over IP tunnel
#pseudo-device  npf                     # NPF packet filter
#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   pty                     # pseudo-terminals
#pseudo-device  vnd                     # paging to files
#options        VND_COMPRESSION         # compressed vnd(4)
#pseudo-device  ccd                     # concatenated disks
#pseudo-device  cgd                     # cryptographic disk devices
#pseudo-device  raid                    # 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  fss                     # file system snapshot device
#pseudo-device  clockctl                # user control of clock subsystem
pseudo-device   ksyms                   # /dev/ksyms

# Veriexec
# include "dev/veriexec.config"

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