# GXemul: ARC (MIPS) emulation

Back to the index.

ARC was an attempt to make a standard for RISC-based machines. It is not very meaningful today, but it is of historical interest. SGI machines used a variant of ARC firmware, called ARCS, and Windows NT used ARC-based paths for hardware devices during bootup.

The ARC machine best emulated in GXemul is a PICA-61. It is not very stable, but at least it is possible to run NetBSD in it.

- NetBSD/arc

There are also some installation notes for operating systems that do not really work yet:

- OpenBSD/arc
- Windows NT for MIPS

### NetBSD/arc:

It is possible to install and run NetBSD/arc on an emulated Acer PICA-61 in the emulator.

To install NetBSD/arc from a CDROM image onto an emulated harddisk image, follow these instructions:

1. Create an empty harddisk image, which will be the root disk that NetBSD installs itself onto:

       	dd if=/dev/zero of=nbsd_arc.img bs=1024 count=1 seek=2000000

2. Download a NetBSD/arc CDROM image, and the generic + ramdisk NetBSD/arc kernels:

       	ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-7.1.2/iso/NetBSD-7.1.2-arc.iso
       	ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-7.1.2/arc/binary/kernel/netbsd-GENERIC.gz
       	ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-7.1.2/arc/binary/kernel/netbsd-RAMDISK.gz

3. Start the emulator using this command line:

       	gxemul -x -e pica -d nbsd_arc.img -d b:NetBSD-7.1.2-arc.iso netbsd-RAMDISK.gz

   and proceed like you would do if you were installing NetBSD on a real PICA-61. (Choose "Use entire disk" when doing the MBR partitioning, and choose to install from CD-ROM.)

   (Use `-X` if you feel more comfortable with a "graphical" text display.)

You can now use the generic NetBSD/arc kernel to boot from the harddisk image, using the following command:

    	gxemul -x -e pica -d nbsd_arc.img netbsd-GENERIC.gz

Known issue: The clock may be running too fast inside the emulated machine.

### OpenBSD/arc:

It is almost possible to install and run OpenBSD/arc on an emulated Acer PICA-61 in the emulator.

Earlier, I had this guest OS listed as officially working in the emulator, but for several reasons, it has been moved down here to the "informative-but-not-really-working" section.

- The last OpenBSD/arc release was 2.3. This means that it is very old, it would not give a fair picture of what OpenBSD is (if you are just looking to find out what it is like), and it is not worth experimenting with it. See http://www.openbsd.org/arc.html for more information.
- OpenBSD/arc was (if I understood things correctly) never really stable, even on real hardare. Problems with too small an interrupt stack. Bugs are triggered in the emulator that have to do with issues such as this.

Currently, I don't test for every release whether or not OpenBSD/arc can be installed. Releases prior to 0.3.7 (but probably not 0.3.7) should work. Anyway, here are the old installation instructions:

To install OpenBSD/arc onto an emulated harddisk image, follow these instructions:

1. Create an empty harddisk image, which will be the root disk that OpenBSD installs itself onto:

       	dd if=/dev/zero of=obsd_arc.img bs=1024 count=1 seek=700000

2. Download the entire arc directory from the ftp server: (approx. 75 MB)

       	wget -np -l 0 -r ftp://ftp.se.openbsd.org/pub/OpenBSD/2.3/arc/

3. You now need to make an ISO image of the entire directory you downloaded. (I recommend using `mkisofs` for that purpose. If you don't already have `mkisofs` installed on your system, you need to install it in order to do this.)

       	mkisofs -o openbsd_arc_2.3.iso ftp.se.openbsd.org/pub/OpenBSD/

4. Start the emulator using this command line:

       	gxemul -e pica -X -d obsd_arc.img -d b:openbsd_arc_2.3.iso -j 2.3/arc/bsd.rd

   and proceed like you would do if you were installing OpenBSD on a real Acer PICA-61. (Answer 'no' when asked if you want to configure networking, and then install from CD-ROM.)

Once the install has finished, the following command should let you boot from the harddisk image:

    	gxemul -X -e pica -d obsd_arc.img ftp.se.openbsd.org/pub/OpenBSD/2.3/arc/bsd

The system is very sensitive to (I think) kernel stack overflow, so it crashes easily. If I remember correctly from mailing lists, this also happened on real hardware.

### Windows NT for MIPS:

Old versions of Windows NT could run on ARC MIPS hardware, such as the PICA 61. It is theoretically possible that the emulation provided by GXemul some day could be stable/complete enough to emulate such hardware well enough to fool Windows NT into thinking that it is running on a real machine. IT DOES NOT WORK YET!

Installation steps similar to these would be required to install Windows NT onto a disk image:

1. Put a "Windows NT 4.0 for MIPS" CDROM (or similar) into your CDROM drive. (On FreeBSD systems, it is usually called `/dev/cd0c` or similar. Change that to whatever the CDROM is called on your system, or the name of a raw .iso image. I have tried this with the Swedish version, but it might work with other versions too.)

2. Create an empty harddisk image, which will be the disk image that you will install Windows NT onto:

       	dd if=/dev/zero of=winnt_test.img bs=1024 count=1 seek=999000

3. Run the ARC installer, to partition the disk image:

       	gxemul -X -e pica -d winnt_test.img -d bc6:/dev/cd0c -j MIPS\\ARCINST

   Note that `ARCINST` almost works, but not quite.

4. Run the SETUP program:

       	gxemul -X -e pica -d winnt_test.img -d bc6:/dev/cd0c -j MIPS\\SETUPLDR

`SETUPLDR` manages to load some drivers from the cdrom, but then it crashes randomly. First of all, it seems to be timing dependent. Normal runs crash with some blue screen, and running with extreme slowdown (such as when using the `-i` option for full instruction trace) results in an error about not being able to initialize video.