All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Hildenbrand <david@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Florian Weimer" <fweimer@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"David Hildenbrand" <david@redhat.com>,
	"Dan Horák" <dan@danny.cz>, "Cornelia Huck" <cohuck@redhat.com>,
	"Stefano Brivio" <sbrivio@redhat.com>,
	qemu-s390x@nongnu.org, "Cole Robinson" <crobinso@redhat.com>,
	"Richard Henderson" <rth@twiddle.net>
Subject: [Qemu-devel] [PATCH v3 11/29] s390x/tcg: MVCOS: Lengths are 32 bit in 24/31-bit mode
Date: Mon, 16 Sep 2019 15:57:48 +0200	[thread overview]
Message-ID: <20190916135806.1269-12-david@redhat.com> (raw)
In-Reply-To: <20190916135806.1269-1-david@redhat.com>

Triggered by a review comment from Richard, also MVCOS has a 32-bit
length in 24/31-bit addressing mode. Add a new helper.

Rename wrap_length() to wrap_length31().

Signed-off-by: David Hildenbrand <david@redhat.com>
---
 target/s390x/mem_helper.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c
index 20e1ac0ea9..320e9ee65c 100644
--- a/target/s390x/mem_helper.c
+++ b/target/s390x/mem_helper.c
@@ -528,7 +528,15 @@ static inline void set_address(CPUS390XState *env, int reg, uint64_t address)
     }
 }
 
-static inline uint64_t wrap_length(CPUS390XState *env, uint64_t length)
+static inline uint64_t wrap_length32(CPUS390XState *env, uint64_t length)
+{
+    if (!(env->psw.mask & PSW_MASK_64)) {
+        return (uint32_t)length;
+    }
+    return length;
+}
+
+static inline uint64_t wrap_length31(CPUS390XState *env, uint64_t length)
 {
     if (!(env->psw.mask & PSW_MASK_64)) {
         /* 24-Bit and 31-Bit mode */
@@ -539,7 +547,7 @@ static inline uint64_t wrap_length(CPUS390XState *env, uint64_t length)
 
 static inline uint64_t get_length(CPUS390XState *env, int reg)
 {
-    return wrap_length(env, env->regs[reg]);
+    return wrap_length31(env, env->regs[reg]);
 }
 
 static inline void set_length(CPUS390XState *env, int reg, uint64_t length)
@@ -2378,7 +2386,7 @@ uint32_t HELPER(mvcos)(CPUS390XState *env, uint64_t dest, uint64_t src,
         s390_program_interrupt(env, PGM_PRIVILEGED, 6, ra);
     }
 
-    len = wrap_length(env, len);
+    len = wrap_length32(env, len);
     if (len > 4096) {
         cc = 3;
         len = 4096;
-- 
2.21.0



  parent reply	other threads:[~2019-09-16 14:09 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-16 13:57 [Qemu-devel] [PATCH v3 00/29] s390x/tcg: mem_helper: Fault-safe handling David Hildenbrand
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 01/29] s390x/tcg: Reset exception_index to -1 instead of 0 David Hildenbrand
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 02/29] s390x/tcg: MVCL: Zero out unused bits of address David Hildenbrand
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 03/29] s390x/tcg: MVCL: Detect destructive overlaps David Hildenbrand
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 04/29] s390x/tcg: MVCL: Process max 4k bytes at a time David Hildenbrand
2019-09-17 19:56   ` Richard Henderson
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 05/29] s390x/tcg: MVC: Increment the length once David Hildenbrand
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 06/29] s390x/tcg: MVC: Use is_destructive_overlap() David Hildenbrand
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 07/29] s390x/tcg: MVPG: Check for specification exceptions David Hildenbrand
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 08/29] s390x/tcg: MVPG: Properly wrap the addresses David Hildenbrand
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 09/29] s390x/tcg: MVCLU/MVCLE: Process max 4k bytes at a time David Hildenbrand
2019-09-17 20:01   ` Richard Henderson
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 10/29] s390x/tcg: MVCS/MVCP: Check for special operation exceptions David Hildenbrand
2019-09-16 13:57 ` David Hildenbrand [this message]
2019-09-17 20:03   ` [Qemu-devel] [PATCH v3 11/29] s390x/tcg: MVCOS: Lengths are 32 bit in 24/31-bit mode Richard Henderson
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 12/29] s390x/tcg: MVCS/MVCP: Properly wrap the length David Hildenbrand
2019-09-17 20:04   ` Richard Henderson
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 13/29] s390x/tcg: MVST: Check for specification exceptions David Hildenbrand
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 14/29] s390x/tcg: MVST: Fix storing back the addresses to registers David Hildenbrand
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 15/29] s390x/tcg: Always use MMU_USER_IDX for CONFIG_USER_ONLY David Hildenbrand
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 16/29] s390x/tcg: Fault-safe memset David Hildenbrand
2019-09-17 20:11   ` Richard Henderson
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 17/29] s390x/tcg: Fault-safe memmove David Hildenbrand
2019-09-17 20:18   ` Richard Henderson
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 18/29] s390x/tcg: MVCS/MVCP: Use access_memmove() David Hildenbrand
2019-09-17 20:20   ` Richard Henderson
2019-09-18  7:38     ` David Hildenbrand
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 19/29] s390x/tcg: MVC: Fault-safe handling on destructive overlaps David Hildenbrand
2019-09-17 20:20   ` Richard Henderson
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 20/29] s390x/tcg: MVCLU: Fault-safe handling David Hildenbrand
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 21/29] s390x/tcg: OC: " David Hildenbrand
2019-09-16 13:57 ` [Qemu-devel] [PATCH v3 22/29] s390x/tcg: XC: " David Hildenbrand
2019-09-16 13:58 ` [Qemu-devel] [PATCH v3 23/29] s390x/tcg: NC: " David Hildenbrand
2019-09-16 13:58 ` [Qemu-devel] [PATCH v3 24/29] s390x/tcg: MVCIN: " David Hildenbrand
2019-09-16 13:58 ` [Qemu-devel] [PATCH v3 25/29] s390x/tcg: MVN: " David Hildenbrand
2019-09-16 13:58 ` [Qemu-devel] [PATCH v3 26/29] s390x/tcg: MVZ: " David Hildenbrand
2019-09-16 13:58 ` [Qemu-devel] [PATCH v3 27/29] s390x/tcg: MVST: " David Hildenbrand
2019-09-16 13:58 ` [Qemu-devel] [PATCH v3 28/29] s390x/tcg: MVO: " David Hildenbrand
2019-09-16 13:58 ` [Qemu-devel] [PATCH v3 29/29] tests/tcg: target/s390x: Test MVO David Hildenbrand
2019-09-17 20:24   ` Richard Henderson
2019-09-18  9:47   ` Alex Bennée
2019-09-18  9:54     ` David Hildenbrand
2019-09-18 11:24       ` Alex Bennée
2019-09-18 14:07         ` David Hildenbrand
2019-09-18  8:25 ` [Qemu-devel] [PATCH v3 00/29] s390x/tcg: mem_helper: Fault-safe handling David Hildenbrand
2019-09-18  9:26   ` Cornelia Huck
2019-09-18  9:27     ` David Hildenbrand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190916135806.1269-12-david@redhat.com \
    --to=david@redhat.com \
    --cc=cohuck@redhat.com \
    --cc=crobinso@redhat.com \
    --cc=dan@danny.cz \
    --cc=fweimer@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=sbrivio@redhat.com \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.