mirror of https://github.com/xemu-project/xemu.git
target/hppa: sar register allows only 5 bits on 32-bit CPU
The sar shift amount register is limited to 5 bits when running a 32-bit CPU. Strip off the remaining bits. The interesting part is, that this register allows to detect at runtime if a physical CPU is capable to execute PA2.0 (64-bit) instructions. Signed-off-by: Helge Deller <deller@gmx.de>
This commit is contained in:
parent
f13bf343cc
commit
f3618f59f3
|
@ -2176,7 +2176,7 @@ static bool trans_mtctl(DisasContext *ctx, arg_mtctl *a)
|
|||
if (ctl == CR_SAR) {
|
||||
reg = load_gpr(ctx, a->r);
|
||||
tmp = tcg_temp_new();
|
||||
tcg_gen_andi_reg(tmp, reg, TARGET_REGISTER_BITS - 1);
|
||||
tcg_gen_andi_reg(tmp, reg, ctx->is_pa20 ? 63 : 31);
|
||||
save_or_nullify(ctx, cpu_sar, tmp);
|
||||
|
||||
cond_free(&ctx->null_cond);
|
||||
|
@ -2237,7 +2237,7 @@ static bool trans_mtsarcm(DisasContext *ctx, arg_mtsarcm *a)
|
|||
TCGv_reg tmp = tcg_temp_new();
|
||||
|
||||
tcg_gen_not_reg(tmp, load_gpr(ctx, a->r));
|
||||
tcg_gen_andi_reg(tmp, tmp, TARGET_REGISTER_BITS - 1);
|
||||
tcg_gen_andi_reg(tmp, tmp, ctx->is_pa20 ? 63 : 31);
|
||||
save_or_nullify(ctx, cpu_sar, tmp);
|
||||
|
||||
cond_free(&ctx->null_cond);
|
||||
|
|
Loading…
Reference in New Issue