# MIPS System emulator

Four executables cover simulation of 32 and 64-bit MIPS systems in both endian options, `qemu-system-mips`, `qemu-system-mipsel` `qemu-system-mips64` and `qemu-system-mips64el`. Five different machine types are emulated:

- A generic ISA PC-like machine "mips"

- The MIPS Malta prototype board "malta"

- An ACER Pica "pica61". This machine needs the 64-bit emulator.

- MIPS emulator pseudo board "mipssim"

- A MIPS Magnum R4000 machine "magnum". This machine needs the 64-bit emulator.

The generic emulation is supported by Debian ‘Etch’ and is able to install Debian into a virtual disk image. The following devices are emulated:

- A range of MIPS CPUs, default is the 24Kf

- PC style serial port

- PC style IDE disk

- NE2000 network card

The Malta emulation supports the following devices:

- Core board with MIPS 24Kf CPU and Galileo system controller

- PIIX4 PCI/USB/SMbus controller

- The Multi-I/O chip’s serial device

- PCI network cards (PCnet32 and others)

- Malta FPGA serial device

- Cirrus (default) or any other PCI VGA graphics card

The Boston board emulation supports the following devices:

- Xilinx FPGA, which includes a PCIe root port and an UART

- Intel EG20T PCH connects the I/O peripherals, but only the SATA bus is emulated

The ACER Pica emulation supports:

- MIPS R4000 CPU

- PC-style IRQ and DMA controllers

- PC Keyboard

- IDE controller

The MIPS Magnum R4000 emulation supports:

- MIPS R4000 CPU

- PC-style IRQ controller

- PC Keyboard

- SCSI controller

- G364 framebuffer

The Fuloong 2E emulation supports:

- Loongson 2E CPU

- Bonito64 system controller as North Bridge

- VT82C686 chipset as South Bridge

- RTL8139D as a network card chipset

The Loongson-3 virtual platform emulation supports:

- Loongson 3A CPU

- LIOINTC as interrupt controller

- GPEX and virtio as peripheral devices

- Both KVM and TCG supported

The mipssim pseudo board emulation provides an environment similar to what the proprietary MIPS emulator uses for running Linux. It supports:

- A range of MIPS CPUs, default is the 24Kf

- PC style serial port

- MIPSnet network emulation

## Supported CPU model configurations on MIPS hosts

QEMU supports variety of MIPS CPU models:

### Supported CPU models for MIPS32 hosts

The following CPU models are supported for use on MIPS32 hosts. Administrators / applications are recommended to use the CPU model that matches the generation of the host CPUs in use. In a deployment with a mixture of host CPU models between machines, if live migration compatibility is required, use the newest CPU model that is compatible across all desired hosts.

`mips32r6-generic`

  MIPS32 Processor (Release 6, 2015)

`P5600`

  MIPS32 Processor (P5600, 2014)

`M14K`, `M14Kc`

  MIPS32 Processor (M14K, 2009)

`74Kf`

  MIPS32 Processor (74K, 2007)

`34Kf`

  MIPS32 Processor (34K, 2006)

`24Kc`, `24KEc`, `24Kf`

  MIPS32 Processor (24K, 2003)

`4Kc`, `4Km`, `4KEcR1`, `4KEmR1`, `4KEc`, `4KEm`

  MIPS32 Processor (4K, 1999)

### Supported CPU models for MIPS64 hosts

The following CPU models are supported for use on MIPS64 hosts. Administrators / applications are recommended to use the CPU model that matches the generation of the host CPUs in use. In a deployment with a mixture of host CPU models between machines, if live migration compatibility is required, use the newest CPU model that is compatible across all desired hosts.

`I6400`

  MIPS64 Processor (Release 6, 2014)

`Loongson-2E`

  MIPS64 Processor (Loongson 2, 2006)

`Loongson-2F`

  MIPS64 Processor (Loongson 2, 2008)

`Loongson-3A1000`

  MIPS64 Processor (Loongson 3, 2010)

`Loongson-3A4000`

  MIPS64 Processor (Loongson 3, 2018)

`mips64dspr2`

  MIPS64 Processor (Release 2, 2006)

`MIPS64R2-generic`, `5KEc`, `5KEf`

  MIPS64 Processor (Release 2, 2002)

`20Kc`

  MIPS64 Processor (20K, 2000

`5Kc`, `5Kf`

  MIPS64 Processor (5K, 1999)

`VR5432`

  MIPS64 Processor (VR, 1998)

`R4000`

  MIPS64 Processor (MIPS III, 1991)

### Supported CPU models for nanoMIPS hosts

The following CPU models are supported for use on nanoMIPS hosts. Administrators / applications are recommended to use the CPU model that matches the generation of the host CPUs in use. In a deployment with a mixture of host CPU models between machines, if live migration compatibility is required, use the newest CPU model that is compatible across all desired hosts.

`I7200`

  MIPS I7200 (nanoMIPS, 2018)

### Preferred CPU models for MIPS hosts

The following CPU models are preferred for use on different MIPS hosts:

`MIPS III`

  R4000

`MIPS32R2`

  34Kf

`MIPS64R6`

  I6400

`nanoMIPS`

  I7200

## nanoMIPS System emulator

Executable `qemu-system-mipsel` also covers simulation of 32-bit nanoMIPS system in little endian mode:

- nanoMIPS I7200 CPU

Example of `qemu-system-mipsel` usage for nanoMIPS is shown below:

Download `<disk_image_file>` from https://mipsdistros.mips.com/LinuxDistro/nanomips/buildroot/index.html.

Download `<kernel_image_file>` from https://mipsdistros.mips.com/LinuxDistro/nanomips/kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/index.html.

Start system emulation of Malta board with nanoMIPS I7200 CPU:

    qemu-system-mipsel -cpu I7200 -kernel <kernel_image_file> \
        -M malta -serial stdio -m <memory_size> -hda <disk_image_file> \
        -append "mem=256m@0x0 rw console=ttyS0 vga=cirrus vesa=0x111 root=/dev/sda"