mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 10:13:56 -06:00
cris: Allow more TB chaining for crisv10
Signed-off-by: Edgar E. Iglesias <edgar@axis.com>
This commit is contained in:
parent
b09cd072df
commit
5cabc5ccfe
2 changed files with 33 additions and 14 deletions
|
@ -1060,15 +1060,15 @@ static unsigned int dec10_ind(DisasContext *dc)
|
|||
break;
|
||||
case CRISV10_IND_JUMP_M:
|
||||
if (dc->src == 15) {
|
||||
LOG_DIS("jump.%d %d r%d r%d\n", size,
|
||||
LOG_DIS("jump.%d %d r%d r%d direct\n", size,
|
||||
dc->opcode, dc->src, dc->dst);
|
||||
imm = ldl_code(dc->pc + 2);
|
||||
if (dc->mode == CRISV10_MODE_AUTOINC)
|
||||
insn_len += size;
|
||||
|
||||
t_gen_mov_preg_TN(dc, dc->dst, tcg_const_tl(dc->pc + insn_len));
|
||||
tcg_gen_movi_tl(env_btarget, imm);
|
||||
cris_prepare_jmp(dc, JMP_INDIRECT);
|
||||
dc->jmp_pc = imm;
|
||||
cris_prepare_jmp(dc, JMP_DIRECT);
|
||||
dc->delayed_branch--; /* v10 has no dslot here. */
|
||||
} else {
|
||||
if (dc->dst == 14) {
|
||||
|
@ -1184,7 +1184,9 @@ static unsigned int crisv10_decoder(DisasContext *dc)
|
|||
if (dc->clear_prefix && dc->tb_flags & PFIX_FLAG) {
|
||||
dc->tb_flags &= ~PFIX_FLAG;
|
||||
tcg_gen_andi_tl(cpu_PR[PR_CCS], cpu_PR[PR_CCS], ~PFIX_FLAG);
|
||||
dc->cpustate_changed = 1;
|
||||
if (dc->tb_flags != dc->tb->flags) {
|
||||
dc->cpustate_changed = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* CRISv10 locks out interrupts on dslots. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue