[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 21/65] target/hppa: sar register allows only 5 bits on 32-bit
|
From: |
Richard Henderson |
|
Subject: |
[PATCH v2 21/65] target/hppa: sar register allows only 5 bits on 32-bit CPU |
|
Date: |
Fri, 20 Oct 2023 13:42:47 -0700 |
From: Helge Deller <deller@gmx.de>
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>
---
target/hppa/translate.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/target/hppa/translate.c b/target/hppa/translate.c
index c7d17900f1..cb60485cbb 100644
--- a/target/hppa/translate.c
+++ b/target/hppa/translate.c
@@ -2155,7 +2155,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);
@@ -2216,7 +2216,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);
--
2.34.1
- [PATCH v2 05/65] target/hppa: Remove load_const, (continued)
- [PATCH v2 05/65] target/hppa: Remove load_const, Richard Henderson, 2023/10/20
- [PATCH v2 11/65] target/hppa: Fix bb_sar for hppa64, Richard Henderson, 2023/10/20
- [PATCH v2 14/65] target/hppa: Make HPPA_BTLB_ENTRIES variable, Richard Henderson, 2023/10/20
- [PATCH v2 13/65] target/hppa: Introduce TYPE_HPPA64_CPU, Richard Henderson, 2023/10/20
- [PATCH v2 31/65] target/hppa: Decode d for unit instructions, Richard Henderson, 2023/10/20
- [PATCH v2 32/65] target/hppa: Decode d for cmpclr instructions, Richard Henderson, 2023/10/20
- [PATCH v2 16/65] target/hppa: Implement hppa_cpu_class_by_name, Richard Henderson, 2023/10/20
- [PATCH v2 39/65] target/hppa: Implement LDD, LDCD, LDDA, STD, STDA, Richard Henderson, 2023/10/20
- [PATCH v2 38/65] target/hppa: Decode ADDB double-word, Richard Henderson, 2023/10/20
- [PATCH v2 20/65] target/hppa: Fix hppa64 addressing, Richard Henderson, 2023/10/20
- [PATCH v2 21/65] target/hppa: sar register allows only 5 bits on 32-bit CPU,
Richard Henderson <=
- [PATCH v2 23/65] target/hppa: Pass d to do_sub_cond, Richard Henderson, 2023/10/20
- [PATCH v2 35/65] target/hppa: Decode d for bb instructions, Richard Henderson, 2023/10/20
- [PATCH v2 37/65] target/hppa: Decode CMPIB double-word, Richard Henderson, 2023/10/20
- [PATCH v2 26/65] target/hppa: Pass d to do_unit_cond, Richard Henderson, 2023/10/20
- [PATCH v2 24/65] target/hppa: Pass d to do_log_cond, Richard Henderson, 2023/10/20
- [PATCH v2 22/65] target/hppa: Pass d to do_cond, Richard Henderson, 2023/10/20
- [PATCH v2 34/65] target/hppa: Decode d for sub instructions, Richard Henderson, 2023/10/20
- [PATCH v2 36/65] target/hppa: Decode d for cmpb instructions, Richard Henderson, 2023/10/20
- [PATCH v2 41/65] target/hppa: Implement EXTRD, Richard Henderson, 2023/10/20
- [PATCH v2 40/65] target/hppa: Implement DEPD, DEPDI, Richard Henderson, 2023/10/20