--- trunk/src/cpus/cpu_mips.c 2007/10/08 16:20:18 27 +++ trunk/src/cpus/cpu_mips.c 2007/10/08 16:20:26 28 @@ -25,7 +25,7 @@ * SUCH DAMAGE. * * - * $Id: cpu_mips.c,v 1.58 2006/06/24 21:47:23 debug Exp $ + * $Id: cpu_mips.c,v 1.61 2006/07/16 13:32:26 debug Exp $ * * MIPS core CPU emulation. */ @@ -144,12 +144,14 @@ cpu->is_32bit = 1; if (cpu->is_32bit) { + cpu->run_instr = mips32_run_instr; cpu->update_translation_table = mips32_update_translation_table; cpu->invalidate_translation_caches = mips32_invalidate_translation_caches; cpu->invalidate_code_translation = mips32_invalidate_code_translation; } else { + cpu->run_instr = mips_run_instr; cpu->update_translation_table = mips_update_translation_table; cpu->invalidate_translation_caches = mips_invalidate_translation_caches; @@ -747,6 +749,10 @@ } /* TODO: Coprocessor 1,2,3 registers. */ + + /* Only return lowest 32 bits when doing 32-bit emulation: */ + if (!writeflag && m->cpus[cpunr]->is_32bit) + *valuep = (uint32_t) (*valuep); } @@ -1597,7 +1603,6 @@ } /* Coprocessor registers: */ - /* TODO: multiple selections per register? */ for (i=0; i<32; i++) { /* 32-bit: */ if ((i & nm1) == 0)