diff mbox series

[3/4] target/s390x: Fix LOCFHR taking the wrong half of R2

Message ID 20230526181240.1425579-4-iii@linux.ibm.com (mailing list archive)
State New, archived
Headers show
Series Fix Fedora 38 Clang on s390x | expand

Commit Message

Ilya Leoshkevich May 26, 2023, 6:12 p.m. UTC
LOCFHR should write top-to-top, but QEMU erroneously writes
bottom-to-top.

Fixes: 45aa9aa3b773 ("target/s390x: Implement load-on-condition-2 insns")
Cc: qemu-stable@nongnu.org
Reported-by: Mikhail Mitskevich <mitskevichmn@gmail.com>
Closes: https://gitlab.com/qemu-project/qemu/-/issues/1668
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
---
 target/s390x/tcg/insn-data.h.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Richard Henderson May 26, 2023, 11:03 p.m. UTC | #1
On 5/26/23 11:12, Ilya Leoshkevich wrote:
> LOCFHR should write top-to-top, but QEMU erroneously writes
> bottom-to-top.
> 
> Fixes: 45aa9aa3b773 ("target/s390x: Implement load-on-condition-2 insns")
> Cc:qemu-stable@nongnu.org
> Reported-by: Mikhail Mitskevich<mitskevichmn@gmail.com>
> Closes:https://gitlab.com/qemu-project/qemu/-/issues/1668
> Signed-off-by: Ilya Leoshkevich<iii@linux.ibm.com>
> ---
>   target/s390x/tcg/insn-data.h.inc | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~
David Hildenbrand May 28, 2023, 6:55 p.m. UTC | #2
On 26.05.23 20:12, Ilya Leoshkevich wrote:
> LOCFHR should write top-to-top, but QEMU erroneously writes
> bottom-to-top.
> 
> Fixes: 45aa9aa3b773 ("target/s390x: Implement load-on-condition-2 insns")
> Cc: qemu-stable@nongnu.org
> Reported-by: Mikhail Mitskevich <mitskevichmn@gmail.com>
> Closes: https://gitlab.com/qemu-project/qemu/-/issues/1668
> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
> ---
>   target/s390x/tcg/insn-data.h.inc | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/s390x/tcg/insn-data.h.inc b/target/s390x/tcg/insn-data.h.inc
> index e41672684aa..937e18ea9d9 100644
> --- a/target/s390x/tcg/insn-data.h.inc
> +++ b/target/s390x/tcg/insn-data.h.inc
> @@ -564,7 +564,7 @@
>       C(0xec46, LOCGHI,  RIE_g, LOC2, r1, i2, r1, 0, loc, 0)
>       C(0xec4e, LOCHHI,  RIE_g, LOC2, r1_sr32, i2, new, r1_32h, loc, 0)
>   /* LOAD HIGH ON CONDITION */
> -    C(0xb9e0, LOCFHR,  RRF_c, LOC2, r1_sr32, r2, new, r1_32h, loc, 0)
> +    C(0xb9e0, LOCFHR,  RRF_c, LOC2, r1_sr32, r2_sr32, new, r1_32h, loc, 0)
>       C(0xebe0, LOCFH,   RSY_b, LOC2, r1_sr32, m2_32u, new, r1_32h, loc, 0)
>   /* LOAD PAIR DISJOINT */
>       D(0xc804, LPD,     SSF,   ILA, 0, 0, new_P, r3_P32, lpd, 0, MO_TEUL)

Reviewed-by: David Hildenbrand <david@redhat.com>
diff mbox series

Patch

diff --git a/target/s390x/tcg/insn-data.h.inc b/target/s390x/tcg/insn-data.h.inc
index e41672684aa..937e18ea9d9 100644
--- a/target/s390x/tcg/insn-data.h.inc
+++ b/target/s390x/tcg/insn-data.h.inc
@@ -564,7 +564,7 @@ 
     C(0xec46, LOCGHI,  RIE_g, LOC2, r1, i2, r1, 0, loc, 0)
     C(0xec4e, LOCHHI,  RIE_g, LOC2, r1_sr32, i2, new, r1_32h, loc, 0)
 /* LOAD HIGH ON CONDITION */
-    C(0xb9e0, LOCFHR,  RRF_c, LOC2, r1_sr32, r2, new, r1_32h, loc, 0)
+    C(0xb9e0, LOCFHR,  RRF_c, LOC2, r1_sr32, r2_sr32, new, r1_32h, loc, 0)
     C(0xebe0, LOCFH,   RSY_b, LOC2, r1_sr32, m2_32u, new, r1_32h, loc, 0)
 /* LOAD PAIR DISJOINT */
     D(0xc804, LPD,     SSF,   ILA, 0, 0, new_P, r3_P32, lpd, 0, MO_TEUL)