Difference between revisions of "QEMU"

From LinuxMIPS
Jump to: navigation, search
(There's now support for a i8259 PIC and an ISA NE2000 NIC.)
m (Kernel patches)
Line 34: Line 34:
 
some patches.
 
some patches.
 
=== Kernel patches ===
 
=== Kernel patches ===
Qemu currently doesn't emulate any existing MIPS system.  Therefor the Linux kernel needs [[ftp://ftp.linux-mips.org/pub/linux/mips/qemu|patches]] to add support the Qemu platform.  The patch is meant to be applied on top of a Linux 2.6 kernel from the [[Net_Resources#Anonymous_CVS|CVS]] archive.
+
Qemu currently doesn't emulate any existing MIPS system.  Therefor the Linux kernel needs [ftp://ftp.linux-mips.org/pub/linux/mips/qemu patches] to add support the Qemu platform.  The patch is meant to be applied on top of a Linux 2.6 kernel from the [[Net_Resources#Anonymous_CVS|CVS]] archive.
  
 
=== Qemu patches ===
 
=== Qemu patches ===

Revision as of 11:00, 13 June 2005

Qemu is a generic open source processor and system emulator. It achieves good performance from using a Just-in-time compilation.

System architecture

This paragraph describes the architecture of the MIPS system that currently is being emulated by Qemu. As Qemu is still very much work in progress this is expected to change.

Firmware

There currently is no firmware for Qemu. This is only a minor problem as unlike on a real system Qemu's virtual hardware is mostly initialized after a reset.

Processor

Qemu is simulating a 4Kc MIPS32 processor with a 16 entry TLB. Both I-cache and D-cache are 4kB each, 2-way set-associative with 16 bytes per cacheline however the cache effects are not simulated and cacheops are treated as noops. This is a design decission to iprove performance over accuracy. No benchmarking has been done however it is expected that the performance of the virtual MIPS system will be comparable to emulation of the other processors.

Qemu's source code can also be configured to be built with support for a 4Km processor. However being TLB-less this processor is not of interest for Linux, so does not currently receive any sort of attention.

Interrupt controller

Qemu is emulating the standard builtin interrrupt controller including soft interrupts and the count/compare interrupt of R4000-class processors. Cascaded externally to that is a i8259 PIC interrupt controller that is cascaded to the CPU's INT0.

Graphics card

Qemu is emulating a standard VGA graphics card however underlined, bold and blinking attributes are not supported.

Serial interface

Qemu is emulating a PC-style 8250-based serial interface.

Network interface

Qemu is emulating a single ISA NE2000 network card.

Other peripherals

Qemu supports other peripherals however support for them has not been integrated or tested into the MIPS port.

Status

At this time the MIPS support still is in pre-alpha stage. There is no firmware for qemu yet and patches to add Linux support for running on Qemu have not been published yet.

Patches

Currently MIPS support has not yet been integrated into Qemu nor the Linux kernel yet, so you'll need to apply some patches.

Kernel patches

Qemu currently doesn't emulate any existing MIPS system. Therefor the Linux kernel needs patches to add support the Qemu platform. The patch is meant to be applied on top of a Linux 2.6 kernel from the CVS archive.

Qemu patches

Qemu itself requires a fair bunch of patches available from ftp://ftp.linux-mips.org/pub/linux/mips/qemu which need to be applied to the Qemu CVS version of qemu in the order as listed below. Patches are being maintained using Quilt, thus they come as a collection of patches. If you don't use quilt, take a look at the series file of a patch subdirectory, then apply all the patches in that subdirectory in the order as listed in that subdirectory. A a general rule the first patch contains Jocelyn Mayer's MIPS patches, the remaining ones contain various bug fixes and modifications by Ralf Baechle.

See also

Credits

Originally authored by French wizzard Fabrice Bellard, Jocelyn Mayer did add support for MIPS as a target, others are now trying to complete the project.