Port-vax archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Userland emulator

Note that DEC added virtualization support to the VAX architecture already back in -87 :-)

Would be an interesting task to get NetBSD make use of it.

-- Ragge

On 03/25/2013 04:08 AM, Dave McGuire wrote:
   Virtualization on a VAX.  Very nice! :-)


On 03/24/2013 07:53 PM, Mouse wrote:
I've been playing with a VAX emulator I built.  The desire was to do a
build of the VAX world for my 1.4T tree, which is well before
cross-build support went in (even before the switch to ELF), on non-VAX
hardware.  I'm mentioning it here in case anyone else would find it
useful, either as-is or as a starting point.

Unlike emulators like simh, this one draws the simulator/simulated
boundary at the userland/kernel divide.  It emulates things userland
does; when userland does a syscall, it implements the syscall itself
rather than emulating a VAX implementation of the syscall.  (Loosely
put, you could call it WINE for 1.4T NetBSD/vax, though AIUI WINE
pushes the emulator/emulated divide even farther out, to the
library-routine API level.)

It has some issues, perhaps most notably that there's a lot of
protection stuff it doesn't implement - it basically assumes all
userland processes are running as root.  But that was enough for my
purposes.  There are also a bunch of userland-usable instructions it
doesn't implement, because nothing I've tried to run has used them; my
strategy has been to run stuff until the emulator reports something
unimplemented, at which point I then implement it and rerun.  It is
also known to have subtle issues with signal delivery; set -o emacs in
sh doesn't work as a result - sh is relatively demanding of SEGV.

There are doubtless lots of other issues (most of which I'm not aware
of, of course).

It's designed to have a statically-linked executable of the emulator
dropped into an otherwise-VAX tree, then run with something like
"chroot $VAX_ROOT /vax-emulator /bin/sh".  It has extensive tracing
support, which I used heavily when trying to figure out what I was
doing wrong that provoked build crashes.

If anyone is interested,
git://git.rodents-montreal.org/Mouse/vax-emul/userland should be
cloneable.  If anyone wants it but doesn't have git set up, I can
assist in working out some other way.  And, of course, I'm interested
in hearing about experiences, positive or negative, with it, and am
ready to help if you have issues fetching, building, or using it.

/~\ The ASCII                             Mouse
\ / Ribbon Campaign                  mouse%netbsd.org@localhost
  X  Against HTML               mouse%rodents-montreal.org@localhost
/ \ Email!           7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B

Home | Main Index | Thread Index | Old Index