[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v7 08/74] linux-user: Reduce regpairs_aligned & targ
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v7 08/74] linux-user: Reduce regpairs_aligned & target_offset64 ifdefs |
Date: |
Sun, 19 May 2019 13:36:20 -0700 |
Signed-off-by: Richard Henderson <address@hidden>
---
linux-user/syscall.c | 54 ++++++++++++++++++++------------------------
1 file changed, 25 insertions(+), 29 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index de80ddb330..61cd73db26 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -464,37 +464,38 @@ static inline int next_free_host_timer(void)
}
#endif
-/* ARM EABI and MIPS expect 64bit types aligned even on pairs or registers */
+/*
+ * Returns true if syscall NUM expects 64bit types aligned even
+ * on pairs of registers.
+ */
+static inline bool regpairs_aligned(void *cpu_env, int num)
+{
#ifdef TARGET_ARM
-static inline int regpairs_aligned(void *cpu_env, int num)
-{
- return ((((CPUARMState *)cpu_env)->eabi) == 1) ;
-}
-#elif defined(TARGET_MIPS) && (TARGET_ABI_BITS == 32)
-static inline int regpairs_aligned(void *cpu_env, int num) { return 1; }
+ return ((CPUARMState *)cpu_env)->eabi;
+#elif defined(TARGET_MIPS) && TARGET_ABI_BITS == 32
+ return true;
#elif defined(TARGET_PPC) && !defined(TARGET_PPC64)
-/* SysV AVI for PPC32 expects 64bit parameters to be passed on odd/even pairs
- * of registers which translates to the same as ARM/MIPS, because we start with
- * r3 as arg1 */
-static inline int regpairs_aligned(void *cpu_env, int num) { return 1; }
+ /*
+ * SysV AVI for PPC32 expects 64bit parameters to be passed on
+ * odd/even pairs of registers which translates to the same as
+ * we start with r3 as arg1.
+ */
+ return true;
#elif defined(TARGET_SH4)
-/* SH4 doesn't align register pairs, except for p{read,write}64 */
-static inline int regpairs_aligned(void *cpu_env, int num)
-{
+ /* SH4 doesn't align register pairs, except for p{read,write}64. */
switch (num) {
case TARGET_NR_pread64:
case TARGET_NR_pwrite64:
- return 1;
-
+ return true;
default:
- return 0;
+ return false;
}
-}
#elif defined(TARGET_XTENSA)
-static inline int regpairs_aligned(void *cpu_env, int num) { return 1; }
+ return true;
#else
-static inline int regpairs_aligned(void *cpu_env, int num) { return 0; }
+ return false;
#endif
+}
#define ERRNO_TABLE_SIZE 1200
@@ -6161,21 +6162,16 @@ void syscall_init(void)
}
}
-#if TARGET_ABI_BITS == 32
-static inline uint64_t target_offset64(uint32_t word0, uint32_t word1)
+static inline uint64_t target_offset64(abi_ulong word0, abi_ulong word1)
{
-#ifdef TARGET_WORDS_BIGENDIAN
+#if TARGET_ABI_BITS == 64
+ return word0;
+#elif defined(TARGET_WORDS_BIGENDIAN)
return ((uint64_t)word0 << 32) | word1;
#else
return ((uint64_t)word1 << 32) | word0;
#endif
}
-#else /* TARGET_ABI_BITS == 32 */
-static inline uint64_t target_offset64(uint64_t word0, uint64_t word1)
-{
- return word0;
-}
-#endif /* TARGET_ABI_BITS != 32 */
#ifdef TARGET_NR_truncate64
static inline abi_long target_truncate64(void *cpu_env, const char *arg1,
--
2.17.1
- [Qemu-devel] [PATCH v7 00/74] linux-user: Split do_syscall, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 03/74] linux-user: Share more code for open and openat, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 04/74] linux-user: Tidy do_openat loop over fakes, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 02/74] linux-user: Split out open, open_at, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 01/74] linux-user: Setup split syscall infrastructure, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 05/74] linux-user: Split out readlink, readlinkat, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 06/74] linux-user: Split out close, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 07/74] linux-user: Split out read, write, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 08/74] linux-user: Reduce regpairs_aligned & target_offset64 ifdefs,
Richard Henderson <=
- [Qemu-devel] [PATCH v7 09/74] linux-user: Split out readv, writev, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 10/74] linux-user: Split out pread64, pwrite64, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 11/74] linux-user: Split out preadv, pwritev, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 12/74] linux-user: Split out name_to_handle_at, open_by_handle_at, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 15/74] linux-user: Split out exit, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 14/74] linux-user: Split out memory syscalls, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 16/74] linux-user: Split out brk, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 18/74] linux-user: Split out wait4, waitid, waitpid, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 19/74] linux-user: Implement rusage argument to waitid, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 17/74] linux-user: Split out clone, fork, vfork, Richard Henderson, 2019/05/19