ppc: Fix CFAR updates
We were one instruction off Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
c9f82d013b
commit
fbc3b39b39
@ -3346,7 +3346,7 @@ static void gen_b(DisasContext *ctx)
|
|||||||
if (LK(ctx->opcode)) {
|
if (LK(ctx->opcode)) {
|
||||||
gen_setlr(ctx, ctx->nip);
|
gen_setlr(ctx, ctx->nip);
|
||||||
}
|
}
|
||||||
gen_update_cfar(ctx, ctx->nip);
|
gen_update_cfar(ctx, ctx->nip - 4);
|
||||||
gen_goto_tb(ctx, 0, target);
|
gen_goto_tb(ctx, 0, target);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3411,7 +3411,7 @@ static inline void gen_bcond(DisasContext *ctx, int type)
|
|||||||
}
|
}
|
||||||
tcg_temp_free_i32(temp);
|
tcg_temp_free_i32(temp);
|
||||||
}
|
}
|
||||||
gen_update_cfar(ctx, ctx->nip);
|
gen_update_cfar(ctx, ctx->nip - 4);
|
||||||
if (type == BCOND_IM) {
|
if (type == BCOND_IM) {
|
||||||
target_ulong li = (target_long)((int16_t)(BD(ctx->opcode)));
|
target_ulong li = (target_long)((int16_t)(BD(ctx->opcode)));
|
||||||
if (likely(AA(ctx->opcode) == 0)) {
|
if (likely(AA(ctx->opcode) == 0)) {
|
||||||
@ -3526,7 +3526,7 @@ static void gen_rfi(DisasContext *ctx)
|
|||||||
*/
|
*/
|
||||||
/* Restore CPU state */
|
/* Restore CPU state */
|
||||||
CHK_SV;
|
CHK_SV;
|
||||||
gen_update_cfar(ctx, ctx->nip);
|
gen_update_cfar(ctx, ctx->nip - 4);
|
||||||
gen_helper_rfi(cpu_env);
|
gen_helper_rfi(cpu_env);
|
||||||
gen_sync_exception(ctx);
|
gen_sync_exception(ctx);
|
||||||
#endif
|
#endif
|
||||||
@ -3540,7 +3540,7 @@ static void gen_rfid(DisasContext *ctx)
|
|||||||
#else
|
#else
|
||||||
/* Restore CPU state */
|
/* Restore CPU state */
|
||||||
CHK_SV;
|
CHK_SV;
|
||||||
gen_update_cfar(ctx, ctx->nip);
|
gen_update_cfar(ctx, ctx->nip - 4);
|
||||||
gen_helper_rfid(cpu_env);
|
gen_helper_rfid(cpu_env);
|
||||||
gen_sync_exception(ctx);
|
gen_sync_exception(ctx);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user