target/hppa: Fix ADD/SUB trap on overflow for narrow mode
Fixes: c53e401ed9
("target/hppa: Remove TARGET_REGISTER_BITS")
Signed-off-by: Sven Schnelle <svens@stackframe.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20240321184228.611897-2-svens@stackframe.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
578b8132b2
commit
bd1ad92ccf
@ -1126,6 +1126,9 @@ static void do_add(DisasContext *ctx, unsigned rt, TCGv_i64 in1,
|
|||||||
if (is_tsv || cond_need_sv(c)) {
|
if (is_tsv || cond_need_sv(c)) {
|
||||||
sv = do_add_sv(ctx, dest, in1, in2);
|
sv = do_add_sv(ctx, dest, in1, in2);
|
||||||
if (is_tsv) {
|
if (is_tsv) {
|
||||||
|
if (!d) {
|
||||||
|
tcg_gen_ext32s_i64(sv, sv);
|
||||||
|
}
|
||||||
/* ??? Need to include overflow from shift. */
|
/* ??? Need to include overflow from shift. */
|
||||||
gen_helper_tsv(tcg_env, sv);
|
gen_helper_tsv(tcg_env, sv);
|
||||||
}
|
}
|
||||||
@ -1217,6 +1220,9 @@ static void do_sub(DisasContext *ctx, unsigned rt, TCGv_i64 in1,
|
|||||||
if (is_tsv || cond_need_sv(c)) {
|
if (is_tsv || cond_need_sv(c)) {
|
||||||
sv = do_sub_sv(ctx, dest, in1, in2);
|
sv = do_sub_sv(ctx, dest, in1, in2);
|
||||||
if (is_tsv) {
|
if (is_tsv) {
|
||||||
|
if (!d) {
|
||||||
|
tcg_gen_ext32s_i64(sv, sv);
|
||||||
|
}
|
||||||
gen_helper_tsv(tcg_env, sv);
|
gen_helper_tsv(tcg_env, sv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user