“M” Genesis.

M is a MIPS-III system emulator, written purely in AMD64 assembly to make optimal use of commonplace iron. As discussed previously.

M will run lightly-modified Linux kernels with strict logical isolation vs. the host (and vs. any other instances of itself.) That is, it in fact does exactly what e.g. QEMU fraudulently pretends to do.

To keep things simple, dynamic recompilation a la Bellard’s is NOT USED! This is a deliberate design choice.

M aims to fit-in-head. As such, a reasonably complete description of the emulated machine architecture is included in the program comments.

M has no dependencies other than AMD64 (host) Linux with reasonably-recent ABI (i.e. anything with 2.6+ kernel ought to work.) No libraries are used, and libc in any form whatsoever is also not used.

Currently the emulated system’s RAM is fixed to 1 GB. To run this draft of M, you must have at least this amount of available memory on the host iron.

Note: in the genesis draft of M, the only means to exit (other than ‘kill -9′) is to shut down the guest OS (In the demo kernel’s ‘busybox’ — the ‘poweroff’ command.)

Devices Currently Emulated (see ‘devices’ dir) : MIPS Timer, 100Hz Timer, UART Console, Realtime Clock, Power Switch.

Please note that this is a draft, and as such is not recommended for battlefield use. Though it is difficult to think of a scenario where an emulator without disk or network functionality could be inadvertently put to a serious use…


You will need:

Add the above vpatch and seal to your V-set, and press to m_genesis.kv.vpatch errata_slaveirq.kv.vpatch.

Follow the directions in m.asm to build. You should end up with a 13240-byte 64-bit ELF executable. If using the demo kernel, do not forget to unpack it first. The 100Hz timer is not yet supported by this kernel, therefore the real-time clock will run “fast”.

A set of patches necessary to build kernels suitable for use with M will be published in the near future (it is pending on that magic moment when we genesis a kernel.)


An approximate timeline for the growth of this program “to adulthood” will be posted in the near future.



Edit: Preliminary Benchmarks.


The linux-3-16-70-bigendian-100hz.bin.gz demo kernel includes “dhrystone” program.


Edit: Several optimizations have been implemented.


Edit: A version using AMD’s SIMD instructions in the TLB routines.


~To be continued!~

This entry was written by Stanislav , posted on Monday July 22 2019 , filed under Bitcoin, Cold Air, Computation, Cryptography, Distractions, Friends, MIPS, SoftwareArchaeology, SoftwareSucks . Bookmark the permalink . Post a comment below or leave a trackback: Trackback URL.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">


Please prove that you are human:

35 xor 19 = ?

What is the serial baud rate of the FG device ?

// Script to allow anchoring of user-selected content on html pages. // Original idea deployed by http://archive.today // Packaged for WordPress on http://trilema.com/2015/that-spiffy-selection-thing/