mirror of https://github.com/xqemu/xqemu.git
Fix tb->size mishandling, by Daniel Jacobowitz.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3160 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
408e7837aa
commit
ce62e5ba09
|
@ -2047,7 +2047,6 @@ int gen_intermediate_code_internal (CPUState *env, TranslationBlock *tb,
|
||||||
lj++;
|
lj++;
|
||||||
while (lj <= j)
|
while (lj <= j)
|
||||||
gen_opc_instr_start[lj++] = 0;
|
gen_opc_instr_start[lj++] = 0;
|
||||||
tb->size = 0;
|
|
||||||
} else {
|
} else {
|
||||||
tb->size = ctx.pc - pc_start;
|
tb->size = ctx.pc - pc_start;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3656,7 +3656,6 @@ static inline int gen_intermediate_code_internal(CPUState *env,
|
||||||
lj++;
|
lj++;
|
||||||
while (lj <= j)
|
while (lj <= j)
|
||||||
gen_opc_instr_start[lj++] = 0;
|
gen_opc_instr_start[lj++] = 0;
|
||||||
tb->size = 0;
|
|
||||||
} else {
|
} else {
|
||||||
tb->size = dc->pc - pc_start;
|
tb->size = dc->pc - pc_start;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3260,7 +3260,6 @@ gen_intermediate_code_internal(CPUState *env, TranslationBlock *tb,
|
||||||
lj++;
|
lj++;
|
||||||
while (lj <= j)
|
while (lj <= j)
|
||||||
gen_opc_instr_start[lj++] = 0;
|
gen_opc_instr_start[lj++] = 0;
|
||||||
tb->size = 0;
|
|
||||||
} else {
|
} else {
|
||||||
tb->size = dc->pc - pc_start;
|
tb->size = dc->pc - pc_start;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5882,10 +5882,6 @@ static void decode_opc (CPUState *env, DisasContext *ctx)
|
||||||
generate_exception(ctx, EXCP_SYSCALL);
|
generate_exception(ctx, EXCP_SYSCALL);
|
||||||
break;
|
break;
|
||||||
case OPC_BREAK:
|
case OPC_BREAK:
|
||||||
/* XXX: Hack to work around wrong handling of self-modifying code. */
|
|
||||||
ctx->pc += 4;
|
|
||||||
save_cpu_state(ctx, 1);
|
|
||||||
ctx->pc -= 4;
|
|
||||||
generate_exception(ctx, EXCP_BREAK);
|
generate_exception(ctx, EXCP_BREAK);
|
||||||
break;
|
break;
|
||||||
case OPC_SPIM:
|
case OPC_SPIM:
|
||||||
|
@ -6433,6 +6429,9 @@ gen_intermediate_code_internal (CPUState *env, TranslationBlock *tb,
|
||||||
save_cpu_state(&ctx, 1);
|
save_cpu_state(&ctx, 1);
|
||||||
ctx.bstate = BS_BRANCH;
|
ctx.bstate = BS_BRANCH;
|
||||||
gen_op_debug();
|
gen_op_debug();
|
||||||
|
/* Include the breakpoint location or the tb won't
|
||||||
|
* be flushed when it must be. */
|
||||||
|
ctx.pc += 4;
|
||||||
goto done_generating;
|
goto done_generating;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6493,7 +6492,6 @@ done_generating:
|
||||||
lj++;
|
lj++;
|
||||||
while (lj <= j)
|
while (lj <= j)
|
||||||
gen_opc_instr_start[lj++] = 0;
|
gen_opc_instr_start[lj++] = 0;
|
||||||
tb->size = 0;
|
|
||||||
} else {
|
} else {
|
||||||
tb->size = ctx.pc - pc_start;
|
tb->size = ctx.pc - pc_start;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5878,7 +5878,6 @@ static inline int gen_intermediate_code_internal (CPUState *env,
|
||||||
lj++;
|
lj++;
|
||||||
while (lj <= j)
|
while (lj <= j)
|
||||||
gen_opc_instr_start[lj++] = 0;
|
gen_opc_instr_start[lj++] = 0;
|
||||||
tb->size = 0;
|
|
||||||
} else {
|
} else {
|
||||||
tb->size = ctx.nip - pc_start;
|
tb->size = ctx.nip - pc_start;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1242,7 +1242,6 @@ gen_intermediate_code_internal(CPUState * env, TranslationBlock * tb,
|
||||||
ii++;
|
ii++;
|
||||||
while (ii <= i)
|
while (ii <= i)
|
||||||
gen_opc_instr_start[ii++] = 0;
|
gen_opc_instr_start[ii++] = 0;
|
||||||
tb->size = 0;
|
|
||||||
} else {
|
} else {
|
||||||
tb->size = ctx.pc - pc_start;
|
tb->size = ctx.pc - pc_start;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3365,7 +3365,6 @@ static inline int gen_intermediate_code_internal(TranslationBlock * tb,
|
||||||
lj++;
|
lj++;
|
||||||
while (lj <= j)
|
while (lj <= j)
|
||||||
gen_opc_instr_start[lj++] = 0;
|
gen_opc_instr_start[lj++] = 0;
|
||||||
tb->size = 0;
|
|
||||||
#if 0
|
#if 0
|
||||||
if (loglevel > 0) {
|
if (loglevel > 0) {
|
||||||
page_dump(logfile);
|
page_dump(logfile);
|
||||||
|
|
Loading…
Reference in New Issue