Porting OpenBSD to the Solbourne S4000

[ Index ] [ Prev: Hardware details ] [ Next: Playing With The Hardware ]

Getting Started

Before I could tinker with the machine, I thought there would only be one major problem porting the OpenBSD/sparc code: teaching the code to cope with the PROM differences, especially the fact that the Forth interfaces, although close, are different enough between the Sun PROMs and the Solbourne PROM.

I could not be more wrong.

Of course, there are indeed subtle PROM differences. But they are pretty easy to hide. But then I started to peek at the various include files from the OS/MP system, mainly /usr/kvm/sys/idt/ (idt[i.e.S4000]-specific headers), /usr/kvm/sys/kap/ (processor and on-board devices specific headers), and /usr/kvm/sys/kapif/ (network devices specific headers). Of special interest is idt/cpuboard.h, which describes the main components of the mainboard, which are:

But what I was not expecting was that the MMU was not a regular sun4 or sun4c MMU. Instead, as shown in idt/mmu.h, this is a simple two level page tables MMU, with no concept of hardware context (unlike the sun4 and sun4c MMU). Addresses are split in three parts:

Fortunately for me, this MMU seems to work mostly like the Series 4 and Series 5 MMU (although, like on all Sun systems but unlike on those kbus systems, it is not possible to disable it), so some of the OpenBSD/kbus code could be reused there.

It was time to tinker with the hardware...

[ Index ] [ Prev: Hardware details ] [ Next: Playing With The Hardware ]