* [Qemu-devel] [PATCH 01/13] s390x: update zipl rom
2011-06-02 6:51 [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Alexander Graf
@ 2011-06-02 6:51 ` Alexander Graf
2011-06-02 6:51 ` [Qemu-devel] [PATCH 02/13] target-s390x: Fix build for non-linux hosts Alexander Graf
` (12 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Alexander Graf @ 2011-06-02 6:51 UTC (permalink / raw)
To: qemu-devel@nongnu.org Developers; +Cc: Aurelien Jarno
The zipl bootloader rom we have has seen some dramatic speedups upstream,
so let's update it to improve the experience when booting a guest image.
This binary is based on commit id 9a0842dd9823d529f721b418d554f17c72e009e3.
Signed-off-by: Alexander Graf <agraf@suse.de>
---
pc-bios/s390-zipl.rom | Bin 3336 -> 3304 bytes
1 files changed, 0 insertions(+), 0 deletions(-)
diff --git a/pc-bios/s390-zipl.rom b/pc-bios/s390-zipl.rom
index f7af9b155dc27500d4619ea6c9eb530d27a79f5d..3115128efe465a024b2deb780573358ae1b829a4 100644
GIT binary patch
literal 3304
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
literal 3336
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
--
1.6.0.2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Qemu-devel] [PATCH 02/13] target-s390x: Fix build for non-linux hosts
2011-06-02 6:51 [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Alexander Graf
2011-06-02 6:51 ` [Qemu-devel] [PATCH 01/13] s390x: update zipl rom Alexander Graf
@ 2011-06-02 6:51 ` Alexander Graf
2011-06-02 6:51 ` [Qemu-devel] [PATCH 03/13] target-s390x: Fix wrong argument in call of tcg_gen_shl_i64() Alexander Graf
` (11 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Alexander Graf @ 2011-06-02 6:51 UTC (permalink / raw)
To: qemu-devel@nongnu.org Developers; +Cc: Aurelien Jarno
From: Stefan Weil <weil@mail.berlios.de>
linux/kvm.h is not always available for compilation.
Neither linux/kvm.h nor kvm.h are needed, so remove both
which also fixes the build problem for non-linux hosts.
Cc: Alexander Graf <agraf@suse.de>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/helper.c | 5 -----
1 files changed, 0 insertions(+), 5 deletions(-)
diff --git a/target-s390x/helper.c b/target-s390x/helper.c
index c79af46..745d8c5 100644
--- a/target-s390x/helper.c
+++ b/target-s390x/helper.c
@@ -28,11 +28,6 @@
#include "qemu-common.h"
#include "qemu-timer.h"
-#if !defined(CONFIG_USER_ONLY)
-#include <linux/kvm.h>
-#include "kvm.h"
-#endif
-
//#define DEBUG_S390
//#define DEBUG_S390_PTE
//#define DEBUG_S390_STDOUT
--
1.6.0.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Qemu-devel] [PATCH 03/13] target-s390x: Fix wrong argument in call of tcg_gen_shl_i64()
2011-06-02 6:51 [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Alexander Graf
2011-06-02 6:51 ` [Qemu-devel] [PATCH 01/13] s390x: update zipl rom Alexander Graf
2011-06-02 6:51 ` [Qemu-devel] [PATCH 02/13] target-s390x: Fix build for non-linux hosts Alexander Graf
@ 2011-06-02 6:51 ` Alexander Graf
2011-06-02 6:51 ` [Qemu-devel] [PATCH 04/13] target-s390x: Fix duplicate call of tcg_temp_new_i64 Alexander Graf
` (10 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Alexander Graf @ 2011-06-02 6:51 UTC (permalink / raw)
To: qemu-devel@nongnu.org Developers; +Cc: Aurelien Jarno
From: Stefan Weil <weil@mail.berlios.de>
tcg_gen_shl_i64 needs a 3rd argument of type TCGv_i64.
Set tmp4 so it can be used here.
v2:
Don't call tcg_const_i64() inside of the loop
because it creates additional code.
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/translate.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index 8e71df3..865a9df 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -2056,7 +2056,7 @@ do_mh:
even for very long ones... */
tmp = get_address(s, 0, b2, d2);
tmp3 = tcg_const_i64(stm_len);
- tmp4 = tcg_const_i64(32);
+ tmp4 = tcg_const_i64(op == 0x26 ? 32 : 4);
for (i = r1;; i = (i + 1) % 16) {
switch (op) {
case 0x4:
@@ -2070,7 +2070,7 @@ do_mh:
#else
tmp2 = tcg_temp_new_i64();
tcg_gen_qemu_ld32u(tmp2, tmp, get_mem_index(s));
- tcg_gen_shl_i64(tmp2, tmp2, 4);
+ tcg_gen_shl_i64(tmp2, tmp2, tmp4);
tcg_gen_ext32u_i64(regs[i], regs[i]);
tcg_gen_or_i64(regs[i], regs[i], tmp2);
#endif
--
1.6.0.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Qemu-devel] [PATCH 04/13] target-s390x: Fix duplicate call of tcg_temp_new_i64
2011-06-02 6:51 [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Alexander Graf
` (2 preceding siblings ...)
2011-06-02 6:51 ` [Qemu-devel] [PATCH 03/13] target-s390x: Fix wrong argument in call of tcg_gen_shl_i64() Alexander Graf
@ 2011-06-02 6:51 ` Alexander Graf
2011-06-02 6:51 ` [Qemu-devel] [PATCH 05/13] target-s390x: Add missing tcg_temp_free_i64() in gen_jcc() Alexander Graf
` (9 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Alexander Graf @ 2011-06-02 6:51 UTC (permalink / raw)
To: qemu-devel@nongnu.org Developers; +Cc: Aurelien Jarno
From: Stefan Weil <weil@mail.berlios.de>
tmp2 = tcg_temp_new_i64() is already executed unconditionally,
so there is no need to call it a second time for 64 bit hosts.
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/translate.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index 865a9df..141a72f 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -2068,7 +2068,6 @@ do_mh:
tcg_gen_qemu_ld32u(tmp2, tmp, get_mem_index(s));
tcg_gen_trunc_i64_i32(TCGV_HIGH(regs[i]), tmp2);
#else
- tmp2 = tcg_temp_new_i64();
tcg_gen_qemu_ld32u(tmp2, tmp, get_mem_index(s));
tcg_gen_shl_i64(tmp2, tmp2, tmp4);
tcg_gen_ext32u_i64(regs[i], regs[i]);
--
1.6.0.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Qemu-devel] [PATCH 05/13] target-s390x: Add missing tcg_temp_free_i64() in gen_jcc()
2011-06-02 6:51 [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Alexander Graf
` (3 preceding siblings ...)
2011-06-02 6:51 ` [Qemu-devel] [PATCH 04/13] target-s390x: Fix duplicate call of tcg_temp_new_i64 Alexander Graf
@ 2011-06-02 6:51 ` Alexander Graf
2011-06-02 6:51 ` [Qemu-devel] [PATCH 06/13] target-s390x: Add missing tcg_temp_free_i64() in do_mh() Alexander Graf
` (8 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Alexander Graf @ 2011-06-02 6:51 UTC (permalink / raw)
To: qemu-devel@nongnu.org Developers; +Cc: Aurelien Jarno
From: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/translate.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index 141a72f..6ec77ec 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -1095,6 +1095,7 @@ static void gen_jcc(DisasContext *s, uint32_t mask, int skip)
tcg_gen_brcondi_i64(TCG_COND_EQ, tmp64, 0, skip);
break;
default:
+ tcg_temp_free_i64(tmp64);
goto do_dynamic;
}
tcg_temp_free_i64(tmp64);
--
1.6.0.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Qemu-devel] [PATCH 06/13] target-s390x: Add missing tcg_temp_free_i64() in do_mh()
2011-06-02 6:51 [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Alexander Graf
` (4 preceding siblings ...)
2011-06-02 6:51 ` [Qemu-devel] [PATCH 05/13] target-s390x: Add missing tcg_temp_free_i64() in gen_jcc() Alexander Graf
@ 2011-06-02 6:51 ` Alexander Graf
2011-06-02 6:51 ` [Qemu-devel] [PATCH 07/13] target-s390x: Add missing tcg_temp_free_i64() in disas_b2() Alexander Graf
` (7 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Alexander Graf @ 2011-06-02 6:51 UTC (permalink / raw)
To: qemu-devel@nongnu.org Developers; +Cc: Aurelien Jarno
From: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/translate.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index 6ec77ec..a11cb19 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -2094,6 +2094,7 @@ do_mh:
tcg_gen_add_i64(tmp, tmp, tmp3);
}
tcg_temp_free_i64(tmp);
+ tcg_temp_free_i64(tmp3);
tcg_temp_free_i64(tmp4);
break;
case 0x2c: /* STCMH R1,M3,D2(B2) [RSY] */
--
1.6.0.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Qemu-devel] [PATCH 07/13] target-s390x: Add missing tcg_temp_free_i64() in disas_b2()
2011-06-02 6:51 [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Alexander Graf
` (5 preceding siblings ...)
2011-06-02 6:51 ` [Qemu-devel] [PATCH 06/13] target-s390x: Add missing tcg_temp_free_i64() in do_mh() Alexander Graf
@ 2011-06-02 6:51 ` Alexander Graf
2011-06-02 6:51 ` [Qemu-devel] [PATCH 08/13] target-s390x: Add missing tcg_temp_free_i64() in disas_s390_insn(), opc == 0x8e Alexander Graf
` (6 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Alexander Graf @ 2011-06-02 6:51 UTC (permalink / raw)
To: qemu-devel@nongnu.org Developers; +Cc: Aurelien Jarno
From: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/translate.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index a11cb19..f3f42a9 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -2964,6 +2964,8 @@ static void disas_b2(DisasContext *s, int op, uint32_t insn)
/* we need to keep cc_op intact */
s->is_jmp = DISAS_JUMP;
tcg_temp_free_i64(tmp);
+ tcg_temp_free_i64(tmp2);
+ tcg_temp_free_i64(tmp3);
break;
case 0x20: /* SERVC R1,R2 [RRE] */
/* SCLP Service call (PV hypercall) */
--
1.6.0.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Qemu-devel] [PATCH 08/13] target-s390x: Add missing tcg_temp_free_i64() in disas_s390_insn(), opc == 0x8e
2011-06-02 6:51 [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Alexander Graf
` (6 preceding siblings ...)
2011-06-02 6:51 ` [Qemu-devel] [PATCH 07/13] target-s390x: Add missing tcg_temp_free_i64() in disas_b2() Alexander Graf
@ 2011-06-02 6:51 ` Alexander Graf
2011-06-02 6:51 ` [Qemu-devel] [PATCH 09/13] target-s390x: Add missing tcg_temp_free_i64() in disas_s390_insn(), opc == 0x90 Alexander Graf
` (5 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Alexander Graf @ 2011-06-02 6:51 UTC (permalink / raw)
To: qemu-devel@nongnu.org Developers; +Cc: Aurelien Jarno
From: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/translate.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index f3f42a9..c5a3930 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -4596,6 +4596,8 @@ static void disas_s390_insn(DisasContext *s)
store_reg32(r1, tmp32_1);
tcg_gen_trunc_i64_i32(tmp32_2, tmp2);
store_reg32(r1 + 1, tmp32_2);
+ tcg_temp_free_i64(tmp);
+ tcg_temp_free_i64(tmp2);
break;
case 0x98: /* LM R1,R3,D2(B2) [RS] */
case 0x90: /* STM R1,R3,D2(B2) [RS] */
--
1.6.0.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Qemu-devel] [PATCH 09/13] target-s390x: Add missing tcg_temp_free_i64() in disas_s390_insn(), opc == 0x90
2011-06-02 6:51 [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Alexander Graf
` (7 preceding siblings ...)
2011-06-02 6:51 ` [Qemu-devel] [PATCH 08/13] target-s390x: Add missing tcg_temp_free_i64() in disas_s390_insn(), opc == 0x8e Alexander Graf
@ 2011-06-02 6:51 ` Alexander Graf
2011-06-02 6:51 ` [Qemu-devel] [PATCH 10/13] target-s390x: Add missing tcg_temp_free_i32() Alexander Graf
` (4 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Alexander Graf @ 2011-06-02 6:51 UTC (permalink / raw)
To: qemu-devel@nongnu.org Developers; +Cc: Aurelien Jarno
From: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/translate.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index c5a3930..81b8c5b 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -4621,6 +4621,7 @@ static void disas_s390_insn(DisasContext *s)
}
tcg_gen_add_i64(tmp, tmp, tmp3);
}
+ tcg_temp_free_i64(tmp);
tcg_temp_free_i64(tmp2);
tcg_temp_free_i64(tmp3);
tcg_temp_free_i64(tmp4);
--
1.6.0.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Qemu-devel] [PATCH 10/13] target-s390x: Add missing tcg_temp_free_i32()
2011-06-02 6:51 [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Alexander Graf
` (8 preceding siblings ...)
2011-06-02 6:51 ` [Qemu-devel] [PATCH 09/13] target-s390x: Add missing tcg_temp_free_i64() in disas_s390_insn(), opc == 0x90 Alexander Graf
@ 2011-06-02 6:51 ` Alexander Graf
2011-06-02 6:51 ` [Qemu-devel] [PATCH 11/13] s390x: free tmp explicitly in every opcode for disas_a5() Alexander Graf
` (3 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Alexander Graf @ 2011-06-02 6:51 UTC (permalink / raw)
To: qemu-devel@nongnu.org Developers; +Cc: Aurelien Jarno
From: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/translate.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index 81b8c5b..5828b5f 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -1078,9 +1078,12 @@ static void gen_jcc(DisasContext *s, uint32_t mask, int skip)
tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, skip);
break;
default:
+ tcg_temp_free_i32(tmp);
+ tcg_temp_free_i32(tmp2);
goto do_dynamic;
}
tcg_temp_free_i32(tmp);
+ tcg_temp_free_i32(tmp2);
account_inline_branch(s);
break;
case CC_OP_TM_64:
--
1.6.0.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Qemu-devel] [PATCH 11/13] s390x: free tmp explicitly in every opcode for disas_a5()
2011-06-02 6:51 [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Alexander Graf
` (9 preceding siblings ...)
2011-06-02 6:51 ` [Qemu-devel] [PATCH 10/13] target-s390x: Add missing tcg_temp_free_i32() Alexander Graf
@ 2011-06-02 6:51 ` Alexander Graf
2011-06-02 6:51 ` [Qemu-devel] [PATCH 12/13] s390x: fix cksm instruction Alexander Graf
` (2 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Alexander Graf @ 2011-06-02 6:51 UTC (permalink / raw)
To: qemu-devel@nongnu.org Developers; +Cc: Aurelien Jarno
The disas_a5() function provided a TCG tmp variable which was populated
by the respective opcode implementations, but freed at the end of the
function in generic code.
That makes it really hard for code review, so let's move the freeing
to the same scope as the actual allocation.
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/translate.c | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index 5828b5f..afeb5e6 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -2334,18 +2334,22 @@ static void disas_a5(DisasContext *s, int op, int r1, int i2)
case 0x0: /* IIHH R1,I2 [RI] */
tmp = tcg_const_i64(i2);
tcg_gen_deposit_i64(regs[r1], regs[r1], tmp, 48, 16);
+ tcg_temp_free_i64(tmp);
break;
case 0x1: /* IIHL R1,I2 [RI] */
tmp = tcg_const_i64(i2);
tcg_gen_deposit_i64(regs[r1], regs[r1], tmp, 32, 16);
+ tcg_temp_free_i64(tmp);
break;
case 0x2: /* IILH R1,I2 [RI] */
tmp = tcg_const_i64(i2);
tcg_gen_deposit_i64(regs[r1], regs[r1], tmp, 16, 16);
+ tcg_temp_free_i64(tmp);
break;
case 0x3: /* IILL R1,I2 [RI] */
tmp = tcg_const_i64(i2);
tcg_gen_deposit_i64(regs[r1], regs[r1], tmp, 0, 16);
+ tcg_temp_free_i64(tmp);
break;
case 0x4: /* NIHH R1,I2 [RI] */
case 0x8: /* OIHH R1,I2 [RI] */
@@ -2370,6 +2374,7 @@ static void disas_a5(DisasContext *s, int op, int r1, int i2)
set_cc_nz_u32(s, tmp32);
tcg_temp_free_i64(tmp2);
tcg_temp_free_i32(tmp32);
+ tcg_temp_free_i64(tmp);
break;
case 0x5: /* NIHL R1,I2 [RI] */
case 0x9: /* OIHL R1,I2 [RI] */
@@ -2395,6 +2400,7 @@ static void disas_a5(DisasContext *s, int op, int r1, int i2)
set_cc_nz_u32(s, tmp32);
tcg_temp_free_i64(tmp2);
tcg_temp_free_i32(tmp32);
+ tcg_temp_free_i64(tmp);
break;
case 0x6: /* NILH R1,I2 [RI] */
case 0xa: /* OILH R1,I2 [RI] */
@@ -2420,6 +2426,7 @@ static void disas_a5(DisasContext *s, int op, int r1, int i2)
set_cc_nz_u32(s, tmp32);
tcg_temp_free_i64(tmp2);
tcg_temp_free_i32(tmp32);
+ tcg_temp_free_i64(tmp);
break;
case 0x7: /* NILL R1,I2 [RI] */
case 0xb: /* OILL R1,I2 [RI] */
@@ -2443,29 +2450,33 @@ static void disas_a5(DisasContext *s, int op, int r1, int i2)
set_cc_nz_u32(s, tmp32); /* signedness should not matter here */
tcg_temp_free_i64(tmp2);
tcg_temp_free_i32(tmp32);
+ tcg_temp_free_i64(tmp);
break;
case 0xc: /* LLIHH R1,I2 [RI] */
tmp = tcg_const_i64( ((uint64_t)i2) << 48 );
store_reg(r1, tmp);
+ tcg_temp_free_i64(tmp);
break;
case 0xd: /* LLIHL R1,I2 [RI] */
tmp = tcg_const_i64( ((uint64_t)i2) << 32 );
store_reg(r1, tmp);
+ tcg_temp_free_i64(tmp);
break;
case 0xe: /* LLILH R1,I2 [RI] */
tmp = tcg_const_i64( ((uint64_t)i2) << 16 );
store_reg(r1, tmp);
+ tcg_temp_free_i64(tmp);
break;
case 0xf: /* LLILL R1,I2 [RI] */
tmp = tcg_const_i64(i2);
store_reg(r1, tmp);
+ tcg_temp_free_i64(tmp);
break;
default:
LOG_DISAS("illegal a5 operation 0x%x\n", op);
gen_illegal_opcode(s, 2);
return;
}
- tcg_temp_free_i64(tmp);
}
static void disas_a7(DisasContext *s, int op, int r1, int i2)
--
1.6.0.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Qemu-devel] [PATCH 12/13] s390x: fix cksm instruction
2011-06-02 6:51 [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Alexander Graf
` (10 preceding siblings ...)
2011-06-02 6:51 ` [Qemu-devel] [PATCH 11/13] s390x: free tmp explicitly in every opcode for disas_a5() Alexander Graf
@ 2011-06-02 6:51 ` Alexander Graf
2011-06-02 6:51 ` [Qemu-devel] [PATCH 13/13] s390x: implement lrvgr Alexander Graf
2011-06-03 16:22 ` [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Aurelien Jarno
13 siblings, 0 replies; 15+ messages in thread
From: Alexander Graf @ 2011-06-02 6:51 UTC (permalink / raw)
To: qemu-devel@nongnu.org Developers; +Cc: Aurelien Jarno
The cksm instruction was implemented incorrectly, rendering UDP and TCP
checksum calculation wrong, making an emulated s390x Linux guest break
in most networking operations.
This patch fixes odd end checksum calculation, takes the input register
as input for the checksum and optimizes the overflow pieces by a bit.
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/op_helper.c | 28 ++++++++--------------------
1 files changed, 8 insertions(+), 20 deletions(-)
diff --git a/target-s390x/op_helper.c b/target-s390x/op_helper.c
index 49760a4..db03a79 100644
--- a/target-s390x/op_helper.c
+++ b/target-s390x/op_helper.c
@@ -1731,25 +1731,15 @@ void HELPER(sqdbr)(uint32_t f1, uint32_t f2)
env->fregs[f1].d = float64_sqrt(env->fregs[f2].d, &env->fpu_status);
}
-static inline uint64_t cksm_overflow(uint64_t cksm)
-{
- if (cksm > 0xffffffffULL) {
- cksm &= 0xffffffffULL;
- cksm++;
- }
- return cksm;
-}
-
/* checksum */
void HELPER(cksm)(uint32_t r1, uint32_t r2)
{
uint64_t src = get_address_31fix(r2);
uint64_t src_len = env->regs[(r2 + 1) & 15];
- uint64_t cksm = 0;
+ uint64_t cksm = (uint32_t)env->regs[r1];
while (src_len >= 4) {
cksm += ldl(src);
- cksm = cksm_overflow(cksm);
/* move to next word */
src_len -= 4;
@@ -1760,26 +1750,24 @@ void HELPER(cksm)(uint32_t r1, uint32_t r2)
case 0:
break;
case 1:
- cksm += ldub(src);
- cksm = cksm_overflow(cksm);
+ cksm += ldub(src) << 24;
break;
case 2:
- cksm += lduw(src);
- cksm = cksm_overflow(cksm);
+ cksm += lduw(src) << 16;
break;
case 3:
- /* XXX check if this really is correct */
- cksm += lduw(src) << 8;
- cksm += ldub(src + 2);
- cksm = cksm_overflow(cksm);
+ cksm += lduw(src) << 16;
+ cksm += ldub(src + 2) << 8;
break;
}
/* indicate we've processed everything */
+ env->regs[r2] = src + src_len;
env->regs[(r2 + 1) & 15] = 0;
/* store result */
- env->regs[r1] = (env->regs[r1] & 0xffffffff00000000ULL) | (uint32_t)cksm;
+ env->regs[r1] = (env->regs[r1] & 0xffffffff00000000ULL) |
+ ((uint32_t)cksm + (cksm >> 32));
}
static inline uint32_t cc_calc_ltgt_32(CPUState *env, int32_t src,
--
1.6.0.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Qemu-devel] [PATCH 13/13] s390x: implement lrvgr
2011-06-02 6:51 [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Alexander Graf
` (11 preceding siblings ...)
2011-06-02 6:51 ` [Qemu-devel] [PATCH 12/13] s390x: fix cksm instruction Alexander Graf
@ 2011-06-02 6:51 ` Alexander Graf
2011-06-03 16:22 ` [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Aurelien Jarno
13 siblings, 0 replies; 15+ messages in thread
From: Alexander Graf @ 2011-06-02 6:51 UTC (permalink / raw)
To: qemu-devel@nongnu.org Developers; +Cc: Aurelien Jarno
The LRVGR instruction was missing. Implement it, so everyone's happy.
Reported-by: Balazs Kutil <bkutil@novell.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/translate.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index afeb5e6..eda4624 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -3473,6 +3473,9 @@ static void disas_b9(DisasContext *s, int op, int r1, int r2)
tcg_temp_free_i64(tmp2);
tcg_temp_free_i64(tmp3);
break;
+ case 0x0f: /* LRVGR R1,R2 [RRE] */
+ tcg_gen_bswap64_i64(regs[r1], regs[r2]);
+ break;
case 0x1f: /* LRVR R1,R2 [RRE] */
tmp32_1 = load_reg32(r2);
tcg_gen_bswap32_i32(tmp32_1, tmp32_1);
--
1.6.0.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011
2011-06-02 6:51 [Qemu-devel] [PULL 00/13] s390x patch queue June 03 2011 Alexander Graf
` (12 preceding siblings ...)
2011-06-02 6:51 ` [Qemu-devel] [PATCH 13/13] s390x: implement lrvgr Alexander Graf
@ 2011-06-03 16:22 ` Aurelien Jarno
13 siblings, 0 replies; 15+ messages in thread
From: Aurelien Jarno @ 2011-06-03 16:22 UTC (permalink / raw)
To: Alexander Graf; +Cc: qemu-devel@nongnu.org Developers
On Thu, Jun 02, 2011 at 08:51:30AM +0200, Alexander Graf wrote:
> Hi,
>
> This is my current patch queue for s390x related work. It contains:
>
> * compile fixes
> * add temp_frees where missing
> * fix LMH, CKSM instructions
> * update bootloader for increased bootup speed
> * implement LRVGR instruction
>
> With these patches, networking finally works for emulated s390x guests.
>
> Please pull.
>
> Alex
Thanks, pulled.
> The following changes since commit 578c7b2ca8ee9e97fa8693b1a83d517e8e3f962e:
> Juha Riihim?ki (1):
> audio: fix integer overflow expression
>
> are available in the git repository at:
>
> git://repo.or.cz/qemu/agraf.git s390-next
>
> Alexander Graf (4):
> s390x: update zipl rom
> s390x: free tmp explicitly in every opcode for disas_a5()
> s390x: fix cksm instruction
> s390x: implement lrvgr
>
> Stefan Weil (9):
> target-s390x: Fix build for non-linux hosts
> target-s390x: Fix wrong argument in call of tcg_gen_shl_i64()
> target-s390x: Fix duplicate call of tcg_temp_new_i64
> target-s390x: Add missing tcg_temp_free_i64() in gen_jcc()
> target-s390x: Add missing tcg_temp_free_i64() in do_mh()
> target-s390x: Add missing tcg_temp_free_i64() in disas_b2()
> target-s390x: Add missing tcg_temp_free_i64() in disas_s390_insn(),
> opc == 0x8e
> target-s390x: Add missing tcg_temp_free_i64() in disas_s390_insn(),
> opc == 0x90
> target-s390x: Add missing tcg_temp_free_i32()
>
> pc-bios/s390-zipl.rom | Bin 3336 -> 3304 bytes
> target-s390x/helper.c | 5 -----
> target-s390x/op_helper.c | 28 ++++++++--------------------
> target-s390x/translate.c | 31 +++++++++++++++++++++++++++----
> 4 files changed, 35 insertions(+), 29 deletions(-)
>
>
--
Aurelien Jarno GPG: 1024D/F1BCDB73
aurelien@aurel32.net http://www.aurel32.net
^ permalink raw reply [flat|nested] 15+ messages in thread