s390x/tcg: MVC: Fault-safe handling on destructive overlaps
authorDavid Hildenbrand <david@redhat.com>
Wed, 4 Sep 2019 09:30:29 +0000 (11:30 +0200)
committerDavid Hildenbrand <david@redhat.com>
Mon, 23 Sep 2019 07:28:29 +0000 (09:28 +0200)
The last remaining bit for MVC is handling destructive overlaps in a
fault-safe way.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: David Hildenbrand <david@redhat.com>
target/s390x/mem_helper.c

index 04c4228f135030357b513acd15db105b4e982a77..aed53a37daed141632d23f5bf8e3f65dac1fec5c 100644 (file)
@@ -438,8 +438,9 @@ static uint32_t do_helper_mvc(CPUS390XState *env, uint32_t l, uint64_t dest,
         access_memmove(env, &desta, &srca, ra);
     } else {
         for (i = 0; i < l; i++) {
-            uint8_t x = cpu_ldub_data_ra(env, src + i, ra);
-            cpu_stb_data_ra(env, dest + i, x, ra);
+            uint8_t byte = access_get_byte(env, &srca, i, ra);
+
+            access_set_byte(env, &desta, i, byte, ra);
         }
     }