Skip to content

Commit

Permalink
Enable Personal IRIS 4D/20 and 4D/25 support:
Browse files Browse the repository at this point in the history
  - Adapt int(4) to handle the INT1 chip
  - Move generic rtc clocks out of hpc/ and into dev/
  - Handle the very strangely wired eeprom and other bits in arcemu
  - Sprinkle MACH_SGI_IP6 as necessary
  - Enable IP6/IP10 devices in GENERIC32_IP12. Yes, the naming is poor but
    there's no winning with kernel/hw compatibility on sgimips...

Tested on my 4D/25. Doesn't (appear to) break macallan@'s IP22.
  • Loading branch information
rumble authored and rumble committed Feb 12, 2009
1 parent eb0de3b commit 85716c4
Show file tree
Hide file tree
Showing 22 changed files with 1,272 additions and 433 deletions.
313 changes: 298 additions & 15 deletions sys/arch/sgimips/conf/GENERIC32_IP12
Original file line number Diff line number Diff line change
@@ -1,21 +1,304 @@
# $NetBSD: GENERIC32_IP12,v 1.4 2007/10/17 19:57:03 garbled Exp $
# $NetBSD: GENERIC32_IP12,v 1.5 2009/02/12 06:33:56 rumble Exp $
#
# sgimips GENERIC kernel for IP12
# GENERIC32_IP12 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 IP12 is very, very similar to the IP2x, with two important differences:
# it is MIPS1 and has a different memory map. This means that while we can
# produce a kernel that works on both CPU architectures, our start addresses
# must differ.
# The machine description file can be customised for your specific
# machine to reduce the kernel size and improve its performance.
#
# To keep things simple, include the IP2x kernel config and "no option" the
# offending bits.
# 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.
#
#
# Currently this config file supports Personal IRIS 4D/2x (IP6/IP10),
# Personal IRIS 4D/3x (IP12) and Indigo R3k (IP12).
#
# Note that to load at beginning of memory, the kernel _must_ be under
# 3.5MB in size to avoid stomping on (or being stomped on by) the PROM.
#

include "arch/sgimips/conf/std.sgimips"

makeoptions TEXTADDR=0x80002000 # entry point

options INCLUDE_CONFIG_FILE # embed config file in kernel binary

#ident "GENERIC32-IP2x-$Revision: 1.5 $"

maxusers 32

# CPU related options
options MIPS1 # MIPS1 support

makeoptions WANT_ECOFF="yes" # Create an ECOFF kernel in addition
# to an ELF kernel -- required for
# booting from the PROM.

options BLINK # blinkenlitzen

# Standard system options
#options INSECURE # disable kernel security levels

#options NTP # NTP phase/frequence locked loop
options KTRACE # system call tracing via ktrace(1)

options SYSVMSG # System V message queues
options SYSVSEM # System V semaphores
options SYSVSHM # System V shared memory
options P1003_1B_SEMAPHORE # p1003.1b semaphore support


options USERCONF # userconf(4) support
#options PIPE_SOCKETPAIR # smaller, but slower pipe(2)
options SYSCTL_INCLUDE_DESCR # Include sysctl descriptions in kernel

# Enable experimental buffer queue strategy for better responsiveness under
# high disk I/O load. Use it with caution - it's not proven to be stable yet.
#options BUFQ_READPRIO
#options BUFQ_PRIOCSCAN

# Diagnostic/debugging support options
#options DIAGNOSTIC # expensive 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_DEV=0x2301 # KGDB port - this is Serial(1)
#options KGDB_DEVRATE=19200 # KGDB Baud Rate
#makeoptions DEBUG="-g" # compile full symbol table

# Compatibility options
options COMPAT_15 # NetBSD 1.5
options COMPAT_16 # NetBSD 1.6
options COMPAT_20 # NetBSD 2.0
options COMPAT_30 # NetBSD 3.0
options COMPAT_40 # NetBSD 4.0 compatibility.
options COMPAT_50 # NetBSD 5.0 compatibility.
#options TCP_COMPAT_42 # 4.2BSD TCP/IP bug compat. Not recommended.

options COMPAT_IRIX # binary compatibility with IRIX
#options COMPAT_LINUX # binary compatibility with Linux
#options COMPAT_ULTRIX # binary compatibility with Ultrix
options COMPAT_BSDPTY # /dev/[pt]ty?? ptys.

# 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 PTYFS # /dev/pts/N support
file-system TMPFS # Efficient memory file-system
#file-system UDF # experimental - OSTA UDF CD/DVD file-system
file-system EFS # Silicon Graphics Extent File System

# File system options
options QUOTA # UFS quotas
#options FFS_EI # FFS Endian Independent support
options WAPBL # File system journaling support - Experimental
#options UFS_DIRHASH # UFS Large Directory Hashing - Experimental
options NFSSERVER # Network File System server
#options FFS_NO_SNAPSHOT # No FFS snapshot support
#options EXT2FS_SYSTEM_FLAGS # makes ext2fs file flags (append and
# immutable) behave as system flags.

# Pull in standard `install' config
include "arch/sgimips/conf/GENERIC32_IP2x"
# 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_NAT_T # IPsec NAT traversal (NAT-T)
#options IPSEC_DEBUG # debug for IP security
#options MROUTING # IP multicast routing
#options PIM # Protocol Independent Multicast
#options ISO,TPIP # OSI
#options EON # OSI tunneling over IP
#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
options IPFILTER_LOOKUP # ippool(8) support
#options IPFILTER_DEFAULT_BLOCK # block all packets by default
#options TCP_DEBUG # Record last TCP_NDEBUG packets with SO_DEBUG

no options MIPS3
options MIPS1
no options INDY_R4600_CACHE
#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

no makeoptions TEXTADDR
makeoptions TEXTADDR=0x80002000
# 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 SCSIVERBOSE # human readable SCSI error messages

options NFS_BOOT_DHCP,NFS_BOOT_BOOTPARAM

#options MEMORY_DISK_HOOKS
#options MEMORY_DISK_IS_ROOT
#options MEMORY_DISK_SERVER=0
#options MINIROOTSIZE=8192

#options SCSI_DELAY=5

#
# 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_RAWKBD # can get raw scancodes
# see dev/pckbport/wskbdmap_mfii.c for implemented layouts
#options PCKBD_LAYOUT="(KB_DE | KB_NODEAD)"


# Kernel root file system and dump configuration.
config netbsd root on ? type ?

# Main bus and CPU
mainbus0 at root
cpu0 at mainbus?

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

# Common devices
int0 at mainbus0 # Interrupt controller
scsibus* at scsi? # HPC or IOC SCSI

# IP6/10 devices
ctl0 at mainbus0 addr 0x1f800000 # Memory controller
oioc0 at mainbus0 addr 0x1f900000 # 'Old' I/O Controller
dpclock0 at mainbus0 addr 0x1fbc0000 # RTC
scn0 at mainbus0 addr 0x1fb80004 # Signetics 2681 Serial Port
oiocsc* at oioc? offset ? # On-board WD33C93 SCSI
le* at oioc? offset ? # AMD LANCE AM7990 Ethernet

# Personal Iris / Indigo R3k devices
pic0 at mainbus0 addr 0x1fa00000 # Memory Controller
gio0 at pic0 # GIO32 bus
dpclock0 at mainbus0 addr 0x1fb80e00 # RTC
hpc0 at gio? addr 0x1fb80000 # High-perf. Peripheral. Ctrlers
hpc1 at gio? addr 0x1fb00000
hpc2 at gio? addr 0x1f980000
grtwo* at gio? # Express (GR2) graphics
wsdisplay* at grtwo? console ?
light* at gio? # Light/Starter/Entry (LG1/LG2) graphics
wsdisplay* at light? console ?
sq* at hpc? offset ? # On-board ethernet / E++ adapter
wdsc* at hpc? offset ? # On-board SCSI / GIO32 SCSI adapter
wskbd* at zskbd? console ?
wsmouse* at zsms? mux 0
zsc0 at hpc0 offset ?
zstty* at zsc0 channel ?
zsc1 at hpc0 offset ? # IP12 keyboard/mouse
zskbd0 at zsc1 channel 0
zsms0 at zsc1 channel 1

# Pseudo-Devices

# disk/mass storage pseudo-devices
pseudo-device ccd 4 # concatenated/striped disk devices
#pseudo-device cgd 4 # cryptographic disk devices
#pseudo-device raid 4 # RAIDframe disk driver
#options RAID_AUTOCONFIG # auto-configuration of RAID components
pseudo-device fss 4 # file system snapshot device
pseudo-device md 1 # 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 ipfilter # IP filter (firewall) and NAT
pseudo-device loop # network loopback
#pseudo-device ppp # Point-to-Point Protocol
pseudo-device sl # Serial Line IP
#pseudo-device strip # Starmode Radio IP (Metricom)
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 agr # IEEE 802.3ad link aggregation
#options BRIDGE_IPF # bridge uses IP/IPv6 pfil hooks too
#pseudo-device pf # PF packet filter
#pseudo-device pflog # PF log if
#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 1 # MIDI sequencer
pseudo-device rnd # /dev/random and in-kernel generator
pseudo-device clockctl # user control of clock subsystem
pseudo-device ksyms # /dev/ksyms
pseudo-device wsmux # mouse & keyboard multiplexor
pseudo-device wsfont

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

# pseudo devices used for IRIX binary compatibility
pseudo-device irix_kmem # IRIX /dev/kmem
pseudo-device irix_usema # IRIX /dev/usema

# Veriexec
#
# a pseudo device needed for veriexec
#pseudo-device veriexec 1
#
# Uncomment the fingerprint methods below that are desired. Note that
# removing fingerprint methods will have almost no impact on the kernel
# code size.
#
#options VERIFIED_EXEC_FP_RMD160
#options VERIFIED_EXEC_FP_SHA256
#options VERIFIED_EXEC_FP_SHA384
#options VERIFIED_EXEC_FP_SHA512
#options VERIFIED_EXEC_FP_SHA1
#options VERIFIED_EXEC_FP_MD5
11 changes: 7 additions & 4 deletions sys/arch/sgimips/conf/GENERIC32_IP2x
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# $NetBSD: GENERIC32_IP2x,v 1.78 2009/01/24 05:06:07 mrg Exp $
# $NetBSD: GENERIC32_IP2x,v 1.79 2009/02/12 06:33:56 rumble Exp $
#
# GENERIC32_IP2x machine description file
#
Expand Down Expand Up @@ -29,7 +29,7 @@ makeoptions TEXTADDR=0x88069000 # entry point

options INCLUDE_CONFIG_FILE # embed config file in kernel binary

#ident "GENERIC32-IP2x-$Revision: 1.78 $"
#ident "GENERIC32-IP2x-$Revision: 1.79 $"

maxusers 32

Expand Down Expand Up @@ -211,8 +211,13 @@ gio0 at pic0
imc0 at mainbus0 addr 0x1fa00000
gio0 at imc0
eisa0 at imc0

int0 at mainbus0 # Interrupt controller

# Some clocks actually in HPC space, but not all
dpclock0 at mainbus0 addr 0x1fb80e00 # IP12 / IP20
dsclock0 at mainbus0 addr 0x1fbe0000 # IP22 / 24

hpc0 at gio? addr 0x1fb80000
hpc1 at gio? addr 0x1fb00000
hpc2 at gio? addr 0x1f980000
Expand Down Expand Up @@ -241,8 +246,6 @@ tlphy* at mii? phy ? # ThunderLAN PHY (unused)
# HPC devices
sq* at hpc? offset ? # On-board ethernet / E++ adapter
wdsc* at hpc? offset ? # On-board SCSI / GIO32 SCSI adapter
dpclock* at hpc0 offset ? # IP12 / IP20
dsclock* at hpc0 offset ? # IP22 / 24
haltwo* at hpc0 offset ? # IP22 / 24
pckbc* at hpc0 offset ?

Expand Down
7 changes: 3 additions & 4 deletions sys/arch/sgimips/conf/files.sgimips
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
# $NetBSD: files.sgimips,v 1.47 2008/02/20 21:43:35 drochner Exp $
# $NetBSD: files.sgimips,v 1.48 2009/02/12 06:33:56 rumble Exp $

maxpartitions 16

maxusers 2 8 64

# XXX: arcemu needs smc93cx6, so put it here pending a better solution
device mainbus {[addr = -1]}: smc93cx6
device mainbus {[addr = -1]}
attach mainbus at root
file arch/sgimips/sgimips/mainbus.c mainbus

Expand Down Expand Up @@ -34,8 +33,8 @@ file dev/md_root.c memory_disk_hooks
file dev/cons.c

# Machine-dependent drivers
include "arch/sgimips/ioc/files.ioc"
include "arch/sgimips/dev/files.dev"
include "arch/sgimips/ioc/files.ioc" # depends on int0 (files.dev)
defflag opt_sgimace.h MACE_NEEDS_DELAYS
include "arch/sgimips/mace/files.mace"

Expand Down
4 changes: 3 additions & 1 deletion sys/arch/sgimips/conf/majors.sgimips
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# $NetBSD: majors.sgimips,v 1.21 2008/11/12 12:36:06 ad Exp $
# $NetBSD: majors.sgimips,v 1.22 2009/02/12 06:33:56 rumble Exp $
#
# Device majors for sgimips
#
Expand All @@ -11,6 +11,8 @@ device-major vnd char 4 block 4 vnd
device-major raid char 5 block 5 raid
device-major cgd char 6 block 6 cgd

device-major scn char 8 scn

device-major sd char 10 block 10 sd
device-major st char 11 block 11 st
device-major cd char 12 block 12 cd
Expand Down

0 comments on commit 85716c4

Please sign in to comment.