mirror of
https://git.proxmox.com/git/qemu
synced 2025-08-16 21:28:55 +00:00
fixed MMU bug on code page boundary
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1362 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
2b03a7a5bc
commit
d39c0b990a
@ -1395,24 +1395,24 @@ static void disas_sparc_insn(DisasContext * dc)
|
|||||||
if (!supervisor(dc))
|
if (!supervisor(dc))
|
||||||
goto priv_insn;
|
goto priv_insn;
|
||||||
gen_op_sta(insn, 0, 4, 0);
|
gen_op_sta(insn, 0, 4, 0);
|
||||||
break;
|
break;
|
||||||
case 0x15:
|
case 0x15:
|
||||||
if (!supervisor(dc))
|
if (!supervisor(dc))
|
||||||
goto priv_insn;
|
goto priv_insn;
|
||||||
gen_op_stba(insn, 0, 1, 0);
|
gen_op_stba(insn, 0, 1, 0);
|
||||||
break;
|
break;
|
||||||
case 0x16:
|
case 0x16:
|
||||||
if (!supervisor(dc))
|
if (!supervisor(dc))
|
||||||
goto priv_insn;
|
goto priv_insn;
|
||||||
gen_op_stha(insn, 0, 2, 0);
|
gen_op_stha(insn, 0, 2, 0);
|
||||||
break;
|
break;
|
||||||
case 0x17:
|
case 0x17:
|
||||||
if (!supervisor(dc))
|
if (!supervisor(dc))
|
||||||
goto priv_insn;
|
goto priv_insn;
|
||||||
flush_T2(dc);
|
flush_T2(dc);
|
||||||
gen_movl_reg_T2(rd + 1);
|
gen_movl_reg_T2(rd + 1);
|
||||||
gen_op_stda(insn, 0, 8, 0);
|
gen_op_stda(insn, 0, 8, 0);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
case 0x0e: /* V9 stx */
|
case 0x0e: /* V9 stx */
|
||||||
@ -1545,6 +1545,10 @@ static inline int gen_intermediate_code_internal(TranslationBlock * tb,
|
|||||||
/* if the next PC is different, we abort now */
|
/* if the next PC is different, we abort now */
|
||||||
if (dc->pc != (last_pc + 4))
|
if (dc->pc != (last_pc + 4))
|
||||||
break;
|
break;
|
||||||
|
/* if we reach a page boundary, we stop generation so that the
|
||||||
|
PC of a TT_TFAULT exception is always in the right page */
|
||||||
|
if ((dc->pc & (TARGET_PAGE_SIZE - 1)) == 0)
|
||||||
|
break;
|
||||||
/* if single step mode, we generate only one instruction and
|
/* if single step mode, we generate only one instruction and
|
||||||
generate an exception */
|
generate an exception */
|
||||||
if (env->singlestep_enabled) {
|
if (env->singlestep_enabled) {
|
||||||
|
Loading…
Reference in New Issue
Block a user