On 2017-05-26 08:32, Richard Henderson wrote:
> On 05/25/2017 02:04 PM, Aurelien Jarno wrote:
> > -if (srclen) {
> > -v1 = cpu_ldub_data_ra(env, src, ra);
> > +if (*srclen) {
> > +v1 = cpu_ldub_data_ra(env, *src, ra);
> > }
> > -if (destlen)
On 05/25/2017 02:04 PM, Aurelien Jarno wrote:
+static ExitStatus op_clcl(DisasContext *s, DisasOps *o)
+{
+TCGv_i32 r1 = tcg_const_i32(get_field(s->fields, r1));
+TCGv_i32 r2 = tcg_const_i32(get_field(s->fields, r2));
Need to force r1 and r2 even. I guess we didn't do that for clcle ei
On 05/25/2017 02:04 PM, Aurelien Jarno wrote:
-if (srclen) {
-v1 = cpu_ldub_data_ra(env, src, ra);
+if (*srclen) {
+v1 = cpu_ldub_data_ra(env, *src, ra);
}
-if (destlen) {
-v2 = cpu_ldub_data_ra(env, dest, ra);
+if (*de
As CLCL and CLCLE mostly differ by their operands, use a common do_clcl
helper. Another difference is that CLCL is not interruptible.
Signed-off-by: Aurelien Jarno
---
target/s390x/helper.h | 1 +
target/s390x/insn-data.def | 2 ++
target/s390x/mem_helper.c | 86 +