diff options
author | 2008-05-11 22:15:13 +0000 | |
---|---|---|
committer | 2008-05-11 22:15:13 +0000 | |
commit | b735b4be6c1fedaf1830c802e1ca4a0df305dad5 (patch) | |
tree | 827a38cd6235d6bda3c6d7b31e997793b11f8549 /src/emu/cpu/mips/mips3fe.c | |
parent | 9b3d9ea3cd5eee0a7d93dc0ac4572913e5348c03 (diff) |
New universal dynamic recompiler system. The central module
is drcuml.c, which defines a universal machine language
syntax that can be generated by a frontend recompiler and
then retargeted via a generic backend interface to any of
a number of different architectures. A disassembler for the
UML is also included to allow examination of the generated
UML code.
Currently supported backend architectures include 32-bit x86,
64-bit x86, and a platform-neutral interpreted C backend that
can be used as a fallback for platforms without native
support. The C backend also performs additional validation
to ensure assumptions are met.
Along with the new architecture is a new MIPS III/IV
recompiler frontend. This frontend has been rewritten from
the old x64-specific recompiler to generate UML opcodes
instead. This means that the single recompiler can be used
to target multiple backend architectures and should in
theory produce identical results across all of them.
The old 32-bit and 64-bit MIPS recompilers are now officially
retired. The new system provides similar performance (within
5% generally) to the old system and has similar compatibility.
The only currently known issues are some problems with the
two Gauntlet 3D games.
Diffstat (limited to 'src/emu/cpu/mips/mips3fe.c')
-rw-r--r-- | src/emu/cpu/mips/mips3fe.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/emu/cpu/mips/mips3fe.c b/src/emu/cpu/mips/mips3fe.c index 5bef908d7ac..eadf1b1e5e4 100644 --- a/src/emu/cpu/mips/mips3fe.c +++ b/src/emu/cpu/mips/mips3fe.c @@ -5,7 +5,7 @@ Front-end for MIPS3 recompiler Copyright Aaron Giles - Released for general use under the MAME license + Released for general non-commercial use under the MAME license Visit http://mamedev.org for licensing and usage restrictions. ***************************************************************************/ @@ -465,6 +465,13 @@ static int describe_instruction_cop0(mips3_state *mips, UINT32 op, opcode_desc * { case 0x00: /* MFCz */ case 0x01: /* DMFCz */ + if (RDREG == COP0_Count) + desc->cycles += MIPS3_COUNT_READ_CYCLES; + if (RDREG == COP0_Cause) + desc->cycles += MIPS3_CAUSE_READ_CYCLES; + desc->gpr.modified |= REGFLAG_R(RTREG); + return TRUE; + case 0x02: /* CFCz */ desc->gpr.modified |= REGFLAG_R(RTREG); return TRUE; |