On 03/08/2023 02.29, Luca Bonissi wrote:
From: Luca Bonissi <q...@bonslack.org>
Date: Thu, 3 Aug 2023 02:15:57 +0200
Subject: [PATCH] Fixed incorrect LLONG alignment for openrisc and cris

OpenRISC (or1k) has long long alignment to 4 bytes, but currently not
defined in abitypes.h. This lead to incorrect packing of /epoll_event/
structure and eventually infinite loop while waiting for file
descriptor[s] event[s].

Fixed also CRIS alignments (1 byte for all types).

Signed-off-by: Luca Bonissi <q...@bonslack.org>
---
  include/exec/user/abitypes.h | 8 ++++++++
  1 file changed, 8 insertions(+)

diff --git a/include/exec/user/abitypes.h b/include/exec/user/abitypes.h
index 6191ce9f74..6178453d94 100644
--- a/include/exec/user/abitypes.h
+++ b/include/exec/user/abitypes.h
@@ -15,8 +15,16 @@
  #define ABI_LLONG_ALIGNMENT 2
  #endif

+#ifdef TARGET_CRIS
+#define ABI_SHORT_ALIGNMENT 1
+#define ABI_INT_ALIGNMENT 1
+#define ABI_LONG_ALIGNMENT 1
+#define ABI_LLONG_ALIGNMENT 1
+#endif
+
  #if (defined(TARGET_I386) && !defined(TARGET_X86_64)) \
      || defined(TARGET_SH4) \
+    || defined(TARGET_OPENRISC) \
      || defined(TARGET_MICROBLAZE) \
      || defined(TARGET_NIOS2)
  #define ABI_LLONG_ALIGNMENT 4

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1770
Reviewed-by: Thomas Huth <th...@redhat.com>


Reply via email to