On 19/05/2026 19.12, Philippe Mathieu-Daudé wrote:
We still build QEMU tools on 32-bit hosts (see commit
cf634dfcd8f), however no OS supported by QEMU still runs
on ESA/390 (Linux dropped support in release 4.1 in 2015).

Technically, the 64-bit Linux kernels on IBM Z still supported 32-bit userspace until recently:

 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8e0b986c59c67e08ada646249f834655a9e6da16

... which got released with Linux v6.19. So there theoretically could still be Linux distros around that use a 64-bit kernel with a 32-bit userspace. Practically, I haven't seens such a setup in ages, so I think it is safe to go ahead with this patch.

Thus:
Reviewed-by: Thomas Huth <[email protected]>


Remove the configure check, directly checking for the 64-bit
z/Architecture.

Also per commit 3704993f545 from 2020:

   "we don't support s390, only 64-bit s390x hosts".

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
---
  configure                 | 12 ++----------
  include/qemu/cacheflush.h |  2 +-
  include/qemu/timer.h      |  2 +-
  block/file-posix.c        |  2 +-
  disas/disas-host.c        |  2 +-
  util/cacheflush.c         |  2 +-
  6 files changed, 7 insertions(+), 15 deletions(-)

diff --git a/configure b/configure
index eea90306728..513ef7a153d 100755
--- a/configure
+++ b/configure
@@ -401,12 +401,8 @@ elif check_define _ARCH_PPC64 ; then
    fi
  elif check_define __mips64 ; then
    cpu="mips64"
-elif check_define __s390__ ; then
-  if check_define __s390x__ ; then
-    cpu="s390x"
-  else
-    cpu="s390"
-  fi
+elif check_define __s390x__ ; then
+  cpu="s390x"
  elif check_define __riscv && check_define _LP64 ; then
    cpu="riscv64"
  elif check_define __aarch64__ ; then
@@ -469,10 +465,6 @@ case "$cpu" in
      linux_arch=riscv
      ;;
- s390)
-    linux_arch=s390
-    CPU_CFLAGS="-m31"
-    ;;
    s390x)
      host_arch=s390x
      linux_arch=s390
diff --git a/include/qemu/cacheflush.h b/include/qemu/cacheflush.h
index 8c64b878145..0618966ddde 100644
--- a/include/qemu/cacheflush.h
+++ b/include/qemu/cacheflush.h
@@ -19,7 +19,7 @@
   * mappings of the same physical page(s).
   */
-#if defined(__x86_64__) || defined(__s390__)
+#if defined(__x86_64__) || defined(__s390x__)
static inline void flush_idcache_range(uintptr_t rx, uintptr_t rw, size_t len)
  {
diff --git a/include/qemu/timer.h b/include/qemu/timer.h
index b931181f53d..fc021f8f966 100644
--- a/include/qemu/timer.h
+++ b/include/qemu/timer.h
@@ -889,7 +889,7 @@ static inline int64_t cpu_get_host_ticks(void)
      return val;
  }
-#elif defined(__s390__)
+#elif defined(__s390x__)
static inline int64_t cpu_get_host_ticks(void)
  {
diff --git a/block/file-posix.c b/block/file-posix.c
index e49b13d6abb..5019ddade9b 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -79,7 +79,7 @@
  #include <linux/hdreg.h>
  #include <linux/magic.h>
  #include <scsi/sg.h>
-#ifdef __s390__
+#ifdef __s390x__
  #include <asm/dasd.h>
  #endif
  #ifndef FS_NOCOW_FL
diff --git a/disas/disas-host.c b/disas/disas-host.c
index 7cf432938e0..d41235250a0 100644
--- a/disas/disas-host.c
+++ b/disas/disas-host.c
@@ -74,7 +74,7 @@ static void initialize_debug_host(CPUDebug *s)
      s->info.print_insn = print_insn_little_mips;
  #elif defined(__m68k__)
      s->info.print_insn = print_insn_m68k;
-#elif defined(__s390__)
+#elif defined(__s390x__)
      s->info.cap_arch = CS_ARCH_SYSZ;
      s->info.cap_insn_unit = 2;
      s->info.cap_insn_split = 6;
diff --git a/util/cacheflush.c b/util/cacheflush.c
index c043c5f881a..77440ddb478 100644
--- a/util/cacheflush.c
+++ b/util/cacheflush.c
@@ -223,7 +223,7 @@ static void __attribute__((constructor)) 
init_cache_info(void)
   * Architecture (+ OS) specific cache flushing mechanisms.
   */
-#if defined(__x86_64__) || defined(__s390__)
+#if defined(__x86_64__) || defined(__s390x__)
/* Caches are coherent and do not require flushing; symbol inline. */


Reply via email to