aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-07-02 15:27:11 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-07-02 15:27:11 +0000
commitbc2c390907757c4d172279e81395b8818338abec (patch)
treed1b19b3eaa3510c55939540282bdf1a1b38f977f
parent9827e95c78ff34051533211624d0177e744a92d7 (diff)
fixed priviledgees for CP0 use (Ralf Baechle)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1476 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--target-mips/translate.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/target-mips/translate.c b/target-mips/translate.c
index 386bf74b3f..d781fccfbd 100644
--- a/target-mips/translate.c
+++ b/target-mips/translate.c
@@ -971,7 +971,10 @@ static void gen_cp0 (DisasContext *ctx, uint16_t opc, int rt, int rd)
{
const unsigned char *opn = "unk";
- if (!(ctx->CP0_Status & (1 << CP0St_CU0))) {
+ if (!(ctx->CP0_Status & (1 << CP0St_CU0)) &&
+ !(ctx->hflags & MIPS_HFLAG_UM) &&
+ !(ctx->hflags & MIPS_HFLAG_ERL) &&
+ !(ctx->hflags & MIPS_HFLAG_EXL)) {
if (loglevel & CPU_LOG_TB_IN_ASM) {
fprintf(logfile, "CP0 is not usable\n");
}