[OpenBIOS] QEMU / OpenBIOS booting SunOS 4.1.3 / 4.1.4

Parag Patel parag at codegen.com
Wed Jun 7 04:13:52 CEST 2006

>This part seems very different on Sparc32. I did not know some weeks
>ago, but OpenBoot until very late versions does not use the client
>interface but a data structure called "romvec" (arch/sparc32/romvec.c)
>that contains several data pointers and callbacks to different OF

I haven't looked at NetBSD/Sparc, unfortunately.  Just NetBSD/PowerPC
with Open Firmware support for Macs, old Moto stuf, etc, which makes
proper call-backs, plus has specs in nauseating detail.

Have you looked at the other BSDs (Free/Open) to see if their Sparc32
boot is any different, perhaps simpler?

>Interesting. Loading the kernel at once. The ELF kernel loads fine, but
>the CD comes with an a.out kernel that has a wrong "text" size and no
>data size. Since it loads directly from the CD device as opposed to from 
>a filesystem I have no idea how much data to load and how to parse it.

Yeah, the first trick is building that ELF netbsd kernel and not the
bootstrap a.out thingie.  A standard ELF kernel may lurk lower down on
the CD somewhere.  Otherwise it's cross-compile time.

The SF trick short-circuits the loaders (at least initially) by
directly loading the ELF image, then passing it the magic args that it
expects.  The args are hard-wired inside a C array, just to get things
rolling.  Works surprisingly well for system bring-up.

>Does a version of Smart Firmware boot Solaris on Sparc? Any chance
>there's some hint?

Unfortunately the version of SF that boots Solaris contains a LOT of
proprietary Sun code, some in C, some in Forth/Fcode. Even we never had
a copy of it - it all stayed on Sun's machines.

The Solaris versions Sun's SF was booting involved loading and running a
variety of their Fcode loaders, which loaded other Fcode, which
sometimes loaded even more Fcode, which eventually loaded a kernel,
which would then run, making a bunch of callbacks all the while.

A variety of subtle bugs and bug-compatibility modes in the SF code are
#ifdef-ed SUN_COMPATIBILITY, but other than that, there's not much else.
 /__)_ _ _ _            "What do you give a man who has everything?"  the
/   (// (/(/    pretty teenager asked her mother.  "Encouragement, dear,"
         _/     she replied.

More information about the OpenBIOS mailing list