e2k: Delete redundant unimplemented messages.
DAM has not been yet implemented. We always generate a jump to a fixing code. All these messages are redundant. Signed-off-by: Denis Drakhnya <numas13@gmail.com>
This commit is contained in:
parent
e404c06a2d
commit
ab620f7a2b
|
@ -51,6 +51,7 @@ uint64_t helper_state_reg_read_i64(CPUE2KState *env, int idx)
|
|||
case 0x57: return cr_read(env, offsetof(E2KCrs, cr1.lo)); /* %cr1.lo */
|
||||
case 0x80: return env->upsr; /* %upsr */
|
||||
case 0x81: return env->ip; /* %ip */
|
||||
case 0x84: return env->pfpfr; /* %pfpfr */
|
||||
case 0x85: return env->fpcr.raw; /* %fpcr */
|
||||
case 0x86: return env->fpsr.raw; /* %fpsr */
|
||||
case 0x8a: return env->idr; /* %idr */
|
||||
|
@ -82,7 +83,7 @@ void helper_state_reg_write_i64(CPUE2KState *env, int idx, uint64_t val)
|
|||
env->lsr_strmd = extract64(val, LSR_STRMD_OFF, LSR_STRMD_LEN);
|
||||
break;
|
||||
case 0x84: /* %pfpfr */
|
||||
qemu_log_mask(LOG_UNIMP, "pfpfr write 0x%lx\n", val);
|
||||
env->pfpfr = val;
|
||||
break;
|
||||
case 0x85: /* %fpcr */
|
||||
env->fpcr.raw = val;
|
||||
|
@ -105,7 +106,7 @@ void helper_state_reg_write_i32(CPUE2KState *env, int idx, uint32_t val)
|
|||
env->lsr_lcnt = val;
|
||||
break;
|
||||
case 0x84: /* %pfpfr */
|
||||
qemu_log_mask(LOG_UNIMP, "pfpfr write 0x%x\n", val);
|
||||
env->pfpfr = deposit64(env->pfpfr, 0, 32, val);
|
||||
break;
|
||||
case 0x85: /* %fpcr */
|
||||
env->fpcr.raw = val;
|
||||
|
|
|
@ -587,10 +587,10 @@ static inline void gen_cs1(DisasContext *ctx)
|
|||
ctx->ct.wbs = cs1->call_wbs;
|
||||
break;
|
||||
case CS1_WAIT:
|
||||
e2k_todo(ctx, "wait");
|
||||
// TODO: wait
|
||||
break;
|
||||
case CS1_FLUSH:
|
||||
e2k_todo(ctx, "flush");
|
||||
// TODO: flush
|
||||
break;
|
||||
default:
|
||||
e2k_todo_illop(ctx, "unimplemented %d", cs1->type);
|
||||
|
|
|
@ -1714,43 +1714,32 @@ static void gen_movtcq(Instr *instr)
|
|||
|
||||
static inline bool gen_ld_mas_mod(DisasContext *ctx, Instr *instr, uint8_t mod)
|
||||
{
|
||||
TCGv_i32 size;
|
||||
TCGv_i32 reg = tcg_temp_new_i32();
|
||||
bool ret = true;
|
||||
|
||||
// FIXME: %empty
|
||||
e2k_gen_reg_index(instr->ctx, reg, instr->dst);
|
||||
size = tcg_const_i32(1 << (instr->opc1 - 0x64));
|
||||
|
||||
switch (mod) {
|
||||
case 3:
|
||||
if (is_chan_25(instr->chan)) {
|
||||
/* ld,{2,5} [ addr ], dst, mas=X (mod 3) */
|
||||
// TODO: DAM
|
||||
if (ctx->mlock == NULL) {
|
||||
ctx->mlock = e2k_get_temp_i32(ctx);
|
||||
/* always go to fixing code */
|
||||
tcg_gen_movi_i32(ctx->mlock, 1);
|
||||
}
|
||||
goto ok_exit;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (instr->sm && is_chan_03(instr->chan)) {
|
||||
/* ld,{0,3},sm [ addr ], dst, mas=X (mod 4) */
|
||||
// TODO: DAM
|
||||
/* always ignore lock load */
|
||||
ret = false;
|
||||
goto ok_exit;
|
||||
return false;
|
||||
} else if (!instr->sm && (is_chan_25(instr->chan) || is_chan_03(instr->chan))) {
|
||||
// TODO
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
e2k_todo(ctx, "opc %#x, chan %d, mod=%#x", instr->opc1, instr->chan, mod);
|
||||
|
||||
ok_exit:
|
||||
tcg_temp_free_i32(size);
|
||||
tcg_temp_free_i32(reg);
|
||||
|
||||
return ret;
|
||||
return true;
|
||||
}
|
||||
|
||||
static MemOp gen_mas(Instr *instr, MemOp memop)
|
||||
|
@ -1763,16 +1752,18 @@ static MemOp gen_mas(Instr *instr, MemOp memop)
|
|||
// TODO: special mas
|
||||
switch (opc) {
|
||||
case 0:
|
||||
/* flush cache */
|
||||
memop |= MO_LE;
|
||||
e2k_todo(ctx, "opc %#x, chan %d, flush cache", instr->opc1,
|
||||
instr->chan);
|
||||
// TODO: flush cache
|
||||
return memop | MO_LE;
|
||||
case 3:
|
||||
if (!instr->sm && is_chan_25(instr->chan)) {
|
||||
// TODO: unknown store MAS OPC 0x3
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
}
|
||||
e2k_todo(ctx, "opc %#x, chan %d, mas=%#x (opc %#x)", instr->opc1,
|
||||
instr->chan, mas, opc);
|
||||
return 0;
|
||||
}
|
||||
} else if (mas) {
|
||||
int mod = extract8(mas, 0, 3);
|
||||
// int dc = extract8(mas, 5, 2);
|
||||
|
@ -1783,9 +1774,15 @@ static MemOp gen_mas(Instr *instr, MemOp memop)
|
|||
return 0;
|
||||
}
|
||||
} else {
|
||||
// TODO: mas modes
|
||||
switch (mod) {
|
||||
case 2:
|
||||
// TODO: DAM
|
||||
break;
|
||||
default:
|
||||
e2k_todo(ctx, "opc %#x, chan %d, mas=%#x, mod=%#x", instr->opc1,
|
||||
instr->chan, mas, mod);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue