From: ths Date: Tue, 23 Oct 2007 23:58:21 +0000 (+0000) Subject: Fix writable length of the index register. X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=60445285a84915cc4a064acf0a3d15e89f9fac40;p=qemu.git Fix writable length of the index register. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3431 c046a42c-6fe2-441c-8c8c-71466251a162 --- diff --git a/target-mips/op.c b/target-mips/op.c index ca367d763f..a666006ad6 100644 --- a/target-mips/op.c +++ b/target-mips/op.c @@ -1481,7 +1481,14 @@ void op_mfc0_desave (void) void op_mtc0_index (void) { - env->CP0_Index = (env->CP0_Index & 0x80000000) | (T0 % env->tlb->nb_tlb); + int num = 1; + unsigned int tmp = env->tlb->nb_tlb; + + do { + tmp >>= 1; + num <<= 1; + } while (tmp); + env->CP0_Index = (env->CP0_Index & 0x80000000) | (T0 & (num - 1)); RETURN(); }