Skip to content

Emu68 1.0

Latest
Compare
Choose a tag to compare
@michalsc michalsc released this 20 Mar 20:54
98b83c7

Emu68 1.0 is the first stable release within 1.0 series. Starting with Emu68 1.0 all users are encouraged to use official releases only and do not use nightly builds unless really necessary. The 1.0 version contains all the changes from 1.0 RC1, RC2 and RC3 plus some additional fixes and improvements:

Proper 68000 bus handling on PiStorm classic

From now on the signals exposed on 68000 data bus during byte writes are exposing 8 bit data on both low and high nibbles. I am not sure if absolutely necessary but it might be a corner case used by some old (faulty) code.

Immediate 64-bit loads optimized

Emu68 emits sequence of immediate loads (16-bit portions) when entire 64-bit register needs to be written. Previously, a PC-relative fetch from memory was used. Immediates might be however significantly faster on more recent CPUs.

Improved fetches from HashTable

The hash table for translated code is now better aligned, so that the fetches from it use one ARM instruction less (pro fetch). Since working with the hash table is the hot spot of the JIT loop, it can give some performance improvement.

Fast Page Zero

When fast_page_zerooption in cmdline.txt is given, the first 4K of RAM will be mapped to ARM memory. This can slightly improve performance when moving VBR to FastRAM is not an option.

Fixed CRC32 calculation

Up to this version the CRC32 checksum of M68k code blocks was not taking last m68k instruction into account. This could lead to unexpected errors in detection of self modifying code when checksumming is enabled. Fixed now.

Corrections in eMMC/microSD drivers

The drivers from Emu68 tools for eMMC and microSD are fixed no, so that the devices should not disappear on boot now.

Main JIT Loop in C, dead code removal

It does not give any measurable benefit but the main JIT loop has been rewritten from AArch64 assembly to C code. It will allow for better maintenance of the code. At the same time dead code and remaining bits and pieces of AArch32 residuals are removed.