* [Qemu-devel] [PULL 0/4] s390 patch queue 2015-07-07
@ 2015-07-07 15:52 Alexander Graf
2015-07-07 15:52 ` [Qemu-devel] [PULL 1/4] target-s390x: fix MOVE LONG instruction Alexander Graf
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Alexander Graf @ 2015-07-07 15:52 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell
Hi Peter,
This is my current patch queue for s390. Please pull.
Alex
The following changes since commit aeb72188e073d515e1f5a80f6b603692a396477b:
Merge remote-tracking branch 'remotes/kraxel/tags/pull-vga-20150707-1' into staging (2015-07-07 14:44:19 +0100)
are available in the git repository at:
git://github.com/agraf/qemu.git tags/signed-s390-for-upstream
for you to fetch changes up to cd3b29b745b0ff393b2d37317837bc726b8dacc8:
tcg/s390: fix branch target change during code retranslation (2015-07-07 17:51:47 +0200)
----------------------------------------------------------------
Patch queue for s390 - 2015-07-07
A few last minute fixes for 2.4. All of them are s390 TCG bug fixes.
----------------------------------------------------------------
Aurelien Jarno (4):
target-s390x: fix MOVE LONG instruction
target-s390x: fix EXECUTE instruction executing TRT
target-s390x: fix CONVERT TO BINARY (CVD, CVDY)
tcg/s390: fix branch target change during code retranslation
target-s390x/int_helper.c | 9 ++++-----
target-s390x/mem_helper.c | 3 ++-
tcg/s390/tcg-target.c | 12 ++++++++----
3 files changed, 14 insertions(+), 10 deletions(-)
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PULL 1/4] target-s390x: fix MOVE LONG instruction
2015-07-07 15:52 [Qemu-devel] [PULL 0/4] s390 patch queue 2015-07-07 Alexander Graf
@ 2015-07-07 15:52 ` Alexander Graf
2015-07-07 15:52 ` [Qemu-devel] [PULL 2/4] target-s390x: fix EXECUTE instruction executing TRT Alexander Graf
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Alexander Graf @ 2015-07-07 15:52 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Aurelien Jarno
From: Aurelien Jarno <aurelien@aurel32.net>
The MOVE LONG instruction should pad the destination operand with the
byte from bit positions 32-39 of the source length (r2 + 1), not with
the same byte in the source address.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/mem_helper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target-s390x/mem_helper.c b/target-s390x/mem_helper.c
index 3ccbeb9..9f0eb1e 100644
--- a/target-s390x/mem_helper.c
+++ b/target-s390x/mem_helper.c
@@ -550,7 +550,7 @@ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1, uint32_t r2)
uint64_t dest = get_address_31fix(env, r1);
uint64_t srclen = env->regs[r2 + 1] & 0xffffff;
uint64_t src = get_address_31fix(env, r2);
- uint8_t pad = src >> 24;
+ uint8_t pad = env->regs[r2 + 1] >> 24;
uint8_t v;
uint32_t cc;
--
1.7.12.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PULL 2/4] target-s390x: fix EXECUTE instruction executing TRT
2015-07-07 15:52 [Qemu-devel] [PULL 0/4] s390 patch queue 2015-07-07 Alexander Graf
2015-07-07 15:52 ` [Qemu-devel] [PULL 1/4] target-s390x: fix MOVE LONG instruction Alexander Graf
@ 2015-07-07 15:52 ` Alexander Graf
2015-07-07 15:52 ` [Qemu-devel] [PULL 3/4] target-s390x: fix CONVERT TO BINARY (CVD, CVDY) Alexander Graf
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Alexander Graf @ 2015-07-07 15:52 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Aurelien Jarno
From: Aurelien Jarno <aurelien@aurel32.net>
A break is missing in the EXECUTE instruction, when executing the
TRANSLATE AND TEST instruction.
Reported-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Reviewed-By: Richard Henderson <rth@twiddle.net>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/mem_helper.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/target-s390x/mem_helper.c b/target-s390x/mem_helper.c
index 9f0eb1e..6f8bd79 100644
--- a/target-s390x/mem_helper.c
+++ b/target-s390x/mem_helper.c
@@ -482,6 +482,7 @@ uint32_t HELPER(ex)(CPUS390XState *env, uint32_t cc, uint64_t v1,
case 0xc00:
helper_tr(env, l, get_address(env, 0, b1, d1),
get_address(env, 0, b2, d2));
+ break;
case 0xd00:
cc = helper_trt(env, l, get_address(env, 0, b1, d1),
get_address(env, 0, b2, d2));
--
1.7.12.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PULL 3/4] target-s390x: fix CONVERT TO BINARY (CVD, CVDY)
2015-07-07 15:52 [Qemu-devel] [PULL 0/4] s390 patch queue 2015-07-07 Alexander Graf
2015-07-07 15:52 ` [Qemu-devel] [PULL 1/4] target-s390x: fix MOVE LONG instruction Alexander Graf
2015-07-07 15:52 ` [Qemu-devel] [PULL 2/4] target-s390x: fix EXECUTE instruction executing TRT Alexander Graf
@ 2015-07-07 15:52 ` Alexander Graf
2015-07-07 15:52 ` [Qemu-devel] [PULL 4/4] tcg/s390: fix branch target change during code retranslation Alexander Graf
2015-07-08 10:40 ` [Qemu-devel] [PULL 0/4] s390 patch queue 2015-07-07 Peter Maydell
4 siblings, 0 replies; 6+ messages in thread
From: Alexander Graf @ 2015-07-07 15:52 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Aurelien Jarno
From: Aurelien Jarno <aurelien@aurel32.net>
current_number being shift left by more than 32 bits, we can't use a
simple int. Similarly use an int64_t type for the input binary value,
to not get the -2^31 case wrong. Finally don't initialize shift to 4,
it's already done in the for loop.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/int_helper.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/target-s390x/int_helper.c b/target-s390x/int_helper.c
index 2c2b3f6..a46c736 100644
--- a/target-s390x/int_helper.c
+++ b/target-s390x/int_helper.c
@@ -121,11 +121,12 @@ uint64_t HELPER(clz)(uint64_t v)
return clz64(v);
}
-uint64_t HELPER(cvd)(int32_t bin)
+uint64_t HELPER(cvd)(int32_t reg)
{
/* positive 0 */
uint64_t dec = 0x0c;
- int shift = 4;
+ int64_t bin = reg;
+ int shift;
if (bin < 0) {
bin = -bin;
@@ -133,9 +134,7 @@ uint64_t HELPER(cvd)(int32_t bin)
}
for (shift = 4; (shift < 64) && bin; shift += 4) {
- int current_number = bin % 10;
-
- dec |= (current_number) << shift;
+ dec |= (bin % 10) << shift;
bin /= 10;
}
--
1.7.12.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PULL 4/4] tcg/s390: fix branch target change during code retranslation
2015-07-07 15:52 [Qemu-devel] [PULL 0/4] s390 patch queue 2015-07-07 Alexander Graf
` (2 preceding siblings ...)
2015-07-07 15:52 ` [Qemu-devel] [PULL 3/4] target-s390x: fix CONVERT TO BINARY (CVD, CVDY) Alexander Graf
@ 2015-07-07 15:52 ` Alexander Graf
2015-07-08 10:40 ` [Qemu-devel] [PULL 0/4] s390 patch queue 2015-07-07 Peter Maydell
4 siblings, 0 replies; 6+ messages in thread
From: Alexander Graf @ 2015-07-07 15:52 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Aurelien Jarno
From: Aurelien Jarno <aurelien@aurel32.net>
Make sure to not modify the branch target. This ensure that the
branch target is not corrupted during partial retranslation.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Tested-by: Alexander Graf <agraf@suse.de>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
tcg/s390/tcg-target.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/tcg/s390/tcg-target.c b/tcg/s390/tcg-target.c
index 669fafe..921991e 100644
--- a/tcg/s390/tcg-target.c
+++ b/tcg/s390/tcg-target.c
@@ -1643,8 +1643,10 @@ static void tcg_out_qemu_ld(TCGContext* s, TCGReg data_reg, TCGReg addr_reg,
base_reg = tcg_out_tlb_read(s, addr_reg, opc, mem_index, 1);
- label_ptr = s->code_ptr + 1;
- tcg_out_insn(s, RI, BRC, S390_CC_NE, 0);
+ /* We need to keep the offset unchanged for retranslation. */
+ tcg_out16(s, RI_BRC | (S390_CC_NE << 4));
+ label_ptr = s->code_ptr;
+ s->code_ptr += 1;
tcg_out_qemu_ld_direct(s, opc, data_reg, base_reg, TCG_REG_R2, 0);
@@ -1669,8 +1671,10 @@ static void tcg_out_qemu_st(TCGContext* s, TCGReg data_reg, TCGReg addr_reg,
base_reg = tcg_out_tlb_read(s, addr_reg, opc, mem_index, 0);
- label_ptr = s->code_ptr + 1;
- tcg_out_insn(s, RI, BRC, S390_CC_NE, 0);
+ /* We need to keep the offset unchanged for retranslation. */
+ tcg_out16(s, RI_BRC | (S390_CC_NE << 4));
+ label_ptr = s->code_ptr;
+ s->code_ptr += 1;
tcg_out_qemu_st_direct(s, opc, data_reg, base_reg, TCG_REG_R2, 0);
--
1.7.12.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PULL 0/4] s390 patch queue 2015-07-07
2015-07-07 15:52 [Qemu-devel] [PULL 0/4] s390 patch queue 2015-07-07 Alexander Graf
` (3 preceding siblings ...)
2015-07-07 15:52 ` [Qemu-devel] [PULL 4/4] tcg/s390: fix branch target change during code retranslation Alexander Graf
@ 2015-07-08 10:40 ` Peter Maydell
4 siblings, 0 replies; 6+ messages in thread
From: Peter Maydell @ 2015-07-08 10:40 UTC (permalink / raw)
To: Alexander Graf; +Cc: QEMU Developers
On 7 July 2015 at 16:52, Alexander Graf <agraf@suse.de> wrote:
> Hi Peter,
>
> This is my current patch queue for s390. Please pull.
>
> Alex
>
>
> The following changes since commit aeb72188e073d515e1f5a80f6b603692a396477b:
>
> Merge remote-tracking branch 'remotes/kraxel/tags/pull-vga-20150707-1' into staging (2015-07-07 14:44:19 +0100)
>
> are available in the git repository at:
>
>
> git://github.com/agraf/qemu.git tags/signed-s390-for-upstream
>
> for you to fetch changes up to cd3b29b745b0ff393b2d37317837bc726b8dacc8:
>
> tcg/s390: fix branch target change during code retranslation (2015-07-07 17:51:47 +0200)
>
> ----------------------------------------------------------------
> Patch queue for s390 - 2015-07-07
>
> A few last minute fixes for 2.4. All of them are s390 TCG bug fixes.
>
> ----------------------------------------------------------------
Applied, thanks.
-- PMM
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-07-08 10:41 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-07 15:52 [Qemu-devel] [PULL 0/4] s390 patch queue 2015-07-07 Alexander Graf
2015-07-07 15:52 ` [Qemu-devel] [PULL 1/4] target-s390x: fix MOVE LONG instruction Alexander Graf
2015-07-07 15:52 ` [Qemu-devel] [PULL 2/4] target-s390x: fix EXECUTE instruction executing TRT Alexander Graf
2015-07-07 15:52 ` [Qemu-devel] [PULL 3/4] target-s390x: fix CONVERT TO BINARY (CVD, CVDY) Alexander Graf
2015-07-07 15:52 ` [Qemu-devel] [PULL 4/4] tcg/s390: fix branch target change during code retranslation Alexander Graf
2015-07-08 10:40 ` [Qemu-devel] [PULL 0/4] s390 patch queue 2015-07-07 Peter Maydell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).