"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "target/openrisc/translate.c" between
qemu-6.0.0-rc1.tar.xz and qemu-6.0.0-rc2.tar.xz

About: QEMU is a generic machine/processor emulator and virtualizer. Release candidate.

translate.c  (qemu-6.0.0-rc1.tar.xz):translate.c  (qemu-6.0.0-rc2.tar.xz)
skipping to change at line 887 skipping to change at line 887
} }
static bool trans_l_mfspr(DisasContext *dc, arg_l_mfspr *a) static bool trans_l_mfspr(DisasContext *dc, arg_l_mfspr *a)
{ {
check_r0_write(dc, a->d); check_r0_write(dc, a->d);
if (is_user(dc)) { if (is_user(dc)) {
gen_illegal_exception(dc); gen_illegal_exception(dc);
} else { } else {
TCGv spr = tcg_temp_new(); TCGv spr = tcg_temp_new();
if (tb_cflags(dc->base.tb) & CF_USE_ICOUNT) {
gen_io_start();
if (dc->delayed_branch) {
tcg_gen_mov_tl(cpu_pc, jmp_pc);
tcg_gen_discard_tl(jmp_pc);
} else {
tcg_gen_movi_tl(cpu_pc, dc->base.pc_next + 4);
}
dc->base.is_jmp = DISAS_EXIT;
}
tcg_gen_ori_tl(spr, cpu_R(dc, a->a), a->k); tcg_gen_ori_tl(spr, cpu_R(dc, a->a), a->k);
gen_helper_mfspr(cpu_R(dc, a->d), cpu_env, cpu_R(dc, a->d), spr); gen_helper_mfspr(cpu_R(dc, a->d), cpu_env, cpu_R(dc, a->d), spr);
tcg_temp_free(spr); tcg_temp_free(spr);
} }
return true; return true;
} }
static bool trans_l_mtspr(DisasContext *dc, arg_l_mtspr *a) static bool trans_l_mtspr(DisasContext *dc, arg_l_mtspr *a)
{ {
if (is_user(dc)) { if (is_user(dc)) {
gen_illegal_exception(dc); gen_illegal_exception(dc);
} else { } else {
TCGv spr; TCGv spr;
if (tb_cflags(dc->base.tb) & CF_USE_ICOUNT) {
gen_io_start();
}
/* For SR, we will need to exit the TB to recognize the new /* For SR, we will need to exit the TB to recognize the new
* exception state. For NPC, in theory this counts as a branch * exception state. For NPC, in theory this counts as a branch
* (although the SPR only exists for use by an ICE). Save all * (although the SPR only exists for use by an ICE). Save all
* of the cpu state first, allowing it to be overwritten. * of the cpu state first, allowing it to be overwritten.
*/ */
if (dc->delayed_branch) { if (dc->delayed_branch) {
tcg_gen_mov_tl(cpu_pc, jmp_pc); tcg_gen_mov_tl(cpu_pc, jmp_pc);
tcg_gen_discard_tl(jmp_pc); tcg_gen_discard_tl(jmp_pc);
} else { } else {
tcg_gen_movi_tl(cpu_pc, dc->base.pc_next + 4); tcg_gen_movi_tl(cpu_pc, dc->base.pc_next + 4);
 End of changes. 2 change blocks. 
0 lines changed or deleted 15 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)