Port-i386 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Fail to boot on a 486DLC
Hi all,
In my craze to run NetBSD on all sorts of hardware, I've been struggling for some time to make it run on Cyrix/TI 486DLC-type CPUs. Based on reading of data sheets and consulting with people far more qualified than myself, I feel like this *should* work, as the CPU supports all the instructions etc. that NetBSD needs these days. Sadly, it does not.
Symptoms:
Kernel loads from floppy (or HDD), loader prints "Start @ ....", and then the system just hangs.
What I've tried - hardware:
- Disable internal/external caches in BIOS
- Custom BIOS which sets 0-4GB cache exclusion range, in case the kernel re-enables the CR0 bit that enables the cache
- With/without FPU
- Different mainboards, different CPUs
- Cache and memory timing variations
What I've tried - software:
- Minimal kernel config (attached)
- Added some printfs to sys/arch/i386/stand/lib/exec.c
- Looked for places where the CR0:NE bit might be toggled (didn't find any in code that I seem to reach)
I've tested on a couple of IBM 486SLC machines; those are basically 386SX-class CPUs with a 486 core - 32-bit internal, 20-bit address, 16-bit data bus. They are similar to, but not the same as, the Cyrix/TI variants - and they run NetBSD 10.1 beautifully.
I've also tested in 86Box, and I happen to have exactly the same hardware as one of its emulation options: ECS Panda 386V motherboard and 486DLC CPU. In 86Box, it boots fine. It does not boot on any of my real hardware, and I've tested a *lot* of combinations.
Finally, to my questions:
What is the next piece of (C) code that gets run after startprog() in exec.c? I'd like to add more printfs there, to see how far it's getting. Also, any suggestions about where to look for the problem would be very welcome.
If I can get to the bottom of this, I'll soon reach my ultimate goal - a 286 machine running NetBSD (with a plug-in 486SXLC upgrade)!
Take care, all,
/Eirik
# $NetBSD: INSTALL_FLOPPY,v 1.56 2021/01/21 06:51:55 nia Exp $
#
# INSTALL - Installation kernel.
#
# This kernel should be derived from GENERIC with some features
# commented out.
#
# This kernel does NOT support X, mice, audio devices, non-NetBSD
# emulation.
#
include "arch/i386/conf/std.i386"
makeoptions CPUFLAGS="-march=i386 -mtune=i386" # i386 is oldest code
#makeoptions CPUFLAGS="-march=i486 -mtune=i486" # i486 is densest code
makeoptions COPTS="-Os"
makeoptions USE_SSP="no"
options MATH_EMULATE
# Enable the hooks used for initializing the root memory-disk.
options MEMORY_DISK_HOOKS
options MEMORY_DISK_IS_ROOT # force root on memory disk
options MEMORY_DISK_SERVER=0 # no userspace memory disk support
options MEMORY_DISK_ROOT_SIZE=10000 # size of memory disk, in blocks
options MEMORY_DISK_RBFLAGS=RB_SINGLE # boot in single-user mode
maxusers 2 # estimated number of users
# Avoid irq 5 and 7, the most likely cause of problems on modern laptops.
#options PCIC_ISA_INTR_ALLOC_MASK=0xff5f
# Standard system options
options INSECURE # disable kernel security levels
options RTC_OFFSET=0 # hardware clock is this many mins. west of GMT
options USERCONF # userconf(4) support
options PIPE_SOCKETPAIR # smaller, but slower pipe(2)
#options SYSCTL_INCLUDE_DESCR # Include sysctl descriptions in kernel
no options EXEC_AOUT
#no options RFC2292 # Previous version of Adv. Sockets API for IPv6
#no options PTRACE_HOOKS
#no options PTRACE # Include ptrace(2)
# Diagnostic/debugging support options
options DIAGNOSTIC # inexpensive kernel consistency checks
options DEBUG # expensive debugging checks/support
options KERNHIST
options KERNHIST_PRINT
options UVMHIST
options UVMHIST_PRINT
options BIOHIST
options BIOHIST_PRINT
options DDB # in-kernel debugger
pseudo-device ksyms
options COMPAT_BSDPTY # /dev/[pt]ty?? ptys.
# File systems
file-system FFS # UFS
file-system MFS # memory file system
file-system CD9660 # ISO 9660 + Rock Ridge file system
file-system MSDOSFS # MS-DOS file system
file-system TMPFS # Efficient memory file-system
# Filesystem options
options FFS_NO_SNAPSHOT # No FFS snapshot support
# Networking options
options INET # IP + ICMP + TCP + UDP
# builtin terminal emulations
options WSEMUL_VT100 # VT100 / VT220 emulation
options PCDISPLAY_SOFTCURSOR
# Kernel root file system and dump configuration.
config netbsd root on ? type ?
# Basic Bus Support
# PCI bus support
pci* at mainbus? bus ?
pci* at pchb? bus ?
pci* at ppb? bus ?
# PCI bridges
pchb* at pci? dev ? function ? # PCI-Host bridges
pceb* at pci? dev ? function ? # PCI-EISA bridges
pcib* at pci? dev ? function ? # PCI-ISA bridges
ppb* at pci? dev ? function ? # PCI-PCI bridges
# ISA bus support
isa0 at mainbus?
isa0 at pceb?
isa0 at pcib?
# ISA Plug-and-Play bus support
isapnp0 at isa?
# Console Devices
# wscons
pckbc0 at isa? # PC keyboard controller
pckbd* at pckbc? # PC keyboard
vga0 at isa?
vga* at pci? dev ? function ?
pcdisplay0 at isa? # CGA, MDA, EGA, HGA
wsdisplay* at vga? console ?
wsdisplay* at pcdisplay? console ?
wskbd* at pckbd? console ?
# Serial Devices
# ISA Plug-and-Play serial interfaces
com* at isapnp? # Modems and serial boards
# ISA serial interfaces
#options COM_HAYESP # adds Hayes ESP serial board support
com0 at isa? port 0x3f8 irq 4 # Standard PC serial ports
com1 at isa? port 0x2f8 irq 3
# 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
#ahcisata* at pci? dev ? function ? # AHCI SATA 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
geodeide* at pci? dev ? function ? # AMD Geode IDE controllers
hptide* at pci? dev ? function ? # Triones/HighPoint IDE controllers
iteide* at pci? dev ? function ? # IT Express IDE controllers
#ixpide* at pci? dev ? function ? # ATI IXP IDE controllers
optiide* at pci? dev ? function ? # Opti IDE controllers
piixide* at pci? dev ? function ? # Intel IDE controllers
pdcide* at pci? dev ? function ? # Promise IDE controllers
pdcsata* at pci? dev ? function ? # Promise SATA150 controllers
rccide* at pci? dev ? function ? # ServerWorks IDE 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
#svwsata* at pci? dev ? function ? # ServerWorks SATA controllers
viaide* at pci? dev ? function ? # VIA/AMD/Nvidia IDE controllers
stpcide* at pci? dev ? function ? # STMicro STPC IDE controllers
# ISA Plug-and-Play IDE controllers
wdc* at isapnp?
# 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
# 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
# Miscellaneous mass storage devices
# ISA floppy
fdc0 at isa? port 0x3f0 irq 6 drq 2 # standard PC floppy controllers
fd* at fdc? drive ? # the drives themselves
# Network Interfaces
# PCI network interfaces
ep* at pci? dev ? function ? # 3Com 3c59x
ex* at pci? dev ? function ? # 3Com 3c90x[BC]
epic* at pci? dev ? function ? # SMC EPIC/100 Ethernet
fxp* at pci? dev ? function ? # Intel EtherExpress PRO 10+/100B
ne* at pci? dev ? function ? # NE2000-compatible Ethernet
pcn* at pci? dev ? function ? # AMD PCnet-PCI Ethernet
re* at pci? dev ? function ? # Realtek 8139C+/8169/8169S/8110S
rtk* at pci? dev ? function ? # Realtek 8129/8139
sip* at pci? dev ? function ? # SiS 900/DP83815 Ethernet
tl* at pci? dev ? function ? # ThunderLAN-based Ethernet
tlp* at pci? dev ? function ? # DECchip 21x4x and clones
# ISA Plug-and-Play network interfaces
ep* at isapnp? # 3Com 3c509 Ethernet
le* at isapnp? # AMD PCnet-ISA Ethernet
ne* at isapnp? # NE2000-compatible Ethernet
# ISA network interfaces
ec0 at isa? port 0x250 iomem 0xd8000 irq 9 # 3Com 3c503 Ethernet
eg0 at isa? port 0x280 irq 9 # 3c505 Ethernet cards
el0 at isa? port 0x300 irq 9 # 3c501 Ethernet cards
ep* at isa? port ? irq ? # 3c509 Ethernet cards
ef0 at isa? port 0x360 iomem 0xd0000 irq 7 # 3c507
ix0 at isa? port 0x300 irq 10 # EtherExpress/16
iy0 at isa? port 0x360 irq ? # EtherExpress PRO 10 ISA
lc0 at isa? port 0x320 iomem ? irq ? # DEC EtherWORKS III (LEMAC)
ne0 at isa? port 0x280 irq 9 # NE[12]000 Ethernet cards
ne1 at isa? port 0x300 irq 10
sm0 at isa? port 0x300 irq 10 # SMC91C9x Ethernet
we0 at isa? port 0x280 iomem 0xd0000 irq 9 # WD/SMC Ethernet
we1 at isa? port 0x300 iomem 0xcc000 irq 10
# MII/PHY support
acphy* at mii? phy ? # DAltima 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
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
igphy* at mii? phy ? # Intel IGP01E1000
ihphy* at mii? phy ? # Intel 82577 PHYs
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
pnaphy* at mii? phy ? # generic HomePNA PHYs
qsphy* at mii? phy ? # Quality Semiconductor QS6612 PHYs
rgephy* at mii? phy ? # Realtek 8169S/8110S internal PHYs
rlphy* at mii? phy ? # Realtek 8139/8201L PHYs
sqphy* at mii? phy ? # Seeq 80220/80221/80223 PHYs
tlphy* at mii? phy ? # ThunderLAN PHYs
tqphy* at mii? phy ? # TDK Semiconductor PHYs
urlphy* at mii? phy ? # Realtek RTL8150L internal PHYs
ukphy* at mii? phy ? # generic unknown PHYs
# Pull in optional local configuration
cinclude "arch/i386/conf/INSTALL.local"
# Pseudo-Devices
# disk/mass storage pseudo-devices
#pseudo-device ccd # concatenated/striped disk devices
pseudo-device raid # RAIDframe disk driver
options RAID_AUTOCONFIG # auto-configuration of RAID components
#pseudo-device fss # file system snapshot device
pseudo-device md # memory disk device (ramdisk)
#pseudo-device vnd # disk-like interface to files
# network pseudo-devices
pseudo-device bpfilter # Berkeley packet filter
pseudo-device loop # network loopback
#pseudo-device ppp # Point-to-Point Protocol
pseudo-device sl # Serial Line IP
#pseudo-device tun # network tunneling over tty
#pseudo-device gre # generic L3 over IP tunnel
# miscellaneous pseudo-devices
pseudo-device pty # pseudo-terminals
options NO_DEV_PTM
#pseudo-device sequencer # MIDI sequencer
# rnd works; RND_COM does not on port i386 yet.
#options RND_COM # use "com" randomness as well (BROKEN)
# a pseudo device needed for Coda # also needs CODA (above)
#pseudo-device vcoda # coda minicache <-> venus comm.
# wscons pseudo-devices
pseudo-device wsmux # mouse & keyboard multiplexor
#pseudo-device wsfont
Home |
Main Index |
Thread Index |
Old Index