From 60445285a84915cc4a064acf0a3d15e89f9fac40 Mon Sep 17 00:00:00 2001 From: ths Date: Tue, 23 Oct 2007 23:58:21 +0000 Subject: [PATCH] Fix writable length of the index register. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3431 c046a42c-6fe2-441c-8c8c-71466251a162 --- target-mips/op.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/target-mips/op.c b/target-mips/op.c index ca367d76..a666006a 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(); } -- 2.39.5