Yet more updates :
I got NetBSD booting up to being prompted for a root device (log from the serial port) :
[...]
Jump to kernel!
kernel_text=0x80100000 edata=0x802ebe10 end=0x802fb0f0
phys segment: 0x1eff000 @ 0x100000
adding 0x1d03000 @ 0x2fc000 to freelist 0
pmap_steal_memory: seg 0: 0x2fc 0x2fc 0x1ffe 0x1ffe
pmap_steal_memory: seg 0: 0x31b 0x31b 0x1ffe 0x1ffe
pmap_steal_memory: seg 0: 0x31d 0x31d 0x1ffe 0x1ffe
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015
The NetBSD Foundation, Inc. All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
NetBSD 7.99.4 (RAMDISK) #50: Thu Feb 12 19:26:12 CET 2015
boricj%vm-netbsd.mail.net@localhost:/home/boricj/obj.playstation2/sys/arch/playstation2/compile/RAMDISK
total memory = 32768 KB
avail memory = 28956 KB
mainbus0 (root)cpu0 at mainbus0 addr 0xffffffff: Toshiba R5900 CPU (0x2e20) Rev. 2.0 with software emulated floating point
cpu0: 48 TLB entries, 16MB max page size
cpu0: 16KB/64B 2-way set-associative L1 instruction cache
cpu0: 8KB/64B 2-way set-associative write-back L1 data cache
rn_init: radix functions require max_keylen be set
root on md0a dumps on md0b
Supported file systems: procfs null msdos mfs ffs cd9660
no file system for md0 (dev 0x600)
cannot mount root, error = 79
root device (default md0a):
More importantly, I found out that GXemul can emulate the PlayStation 2. Although it doesn't emulate much beyond the Emotion Engine, COP0, a framebuffer and a bunch of timers/interrupts, it can handle the NetBSD kernel. I added basic serial port support to GXemul to see the logs, and I could use DDB from within the emulator (no working interrupts means a panic is needed to drop into DDB). It reached the root device prompt too.
Now the bad news : it seems that GXemul is a dead project, so I have nowhere to put the patch beyond GitHub (
https://github.com/boricj/gxemul, branch playstation2). Also, I don't think I'm going to be able to make much more progress on my own, as I basically still don't know what I'm doing (newbie and kernel porting is a poor match). I don't think I'm going to make interrupts work without studying the kernel (and the hardware) in-depth first.