qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-devel@nongnu.org
Cc: Andreas Schwab <schwab@suse.de>, Alexander Graf <agraf@suse.de>,
	"Mian M. Hamayun" <m.hamayun@virtualopensystems.com>,
	patches@linaro.org
Subject: [Qemu-devel] [PATCH v5 12/21] linux-user: Fix up AArch64 syscall handlers
Date: Mon,  1 Jul 2013 18:35:11 +0100	[thread overview]
Message-ID: <1372700120-8896-13-git-send-email-peter.maydell@linaro.org> (raw)
In-Reply-To: <1372700120-8896-1-git-send-email-peter.maydell@linaro.org>

From: Alexander Graf <agraf@suse.de>

Some syscall handlers have special code for ARM enabled that we don't
need on AArch64. Exclude AArch64 in those cases. In other places we
can share struct definitions with other targets or have to provide our
own.

With this patch applied, most syscall definitions in linux-user should
be sound for AArch64.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: John Rigby <john.rigby@linaro.org>
Message-id: 1368505980-17151-9-git-send-email-john.rigby@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 linux-user/syscall.c      |    5 +++--
 linux-user/syscall_defs.h |   28 ++++++++++++++++++++++++++--
 2 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index cdd0c28..802ec95 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -4695,7 +4695,7 @@ static inline abi_long host_to_target_stat64(void *cpu_env,
                                              abi_ulong target_addr,
                                              struct stat *host_st)
 {
-#ifdef TARGET_ARM
+#if defined(TARGET_ARM) && defined(TARGET_ABI32)
     if (((CPUARMState *)cpu_env)->eabi) {
         struct target_eabi_stat64 *target_st;
 
@@ -6327,7 +6327,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
 #endif
 #ifdef TARGET_NR_mmap
     case TARGET_NR_mmap:
-#if (defined(TARGET_I386) && defined(TARGET_ABI32)) || defined(TARGET_ARM) || \
+#if (defined(TARGET_I386) && defined(TARGET_ABI32)) || \
+    (defined(TARGET_ARM) && defined(TARGET_ABI32)) || \
     defined(TARGET_M68K) || defined(TARGET_CRIS) || defined(TARGET_MICROBLAZE) \
     || defined(TARGET_S390X)
         {
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index 92c01a9..08f7559 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -1137,7 +1137,8 @@ struct target_winsize {
 #define TARGET_MAP_UNINITIALIZED 0x4000000	/* for anonymous mmap, memory could be uninitialized */
 #endif
 
-#if (defined(TARGET_I386) && defined(TARGET_ABI32)) || defined(TARGET_ARM) \
+#if (defined(TARGET_I386) && defined(TARGET_ABI32)) \
+    || (defined(TARGET_ARM) && defined(TARGET_ABI32)) \
     || defined(TARGET_CRIS) || defined(TARGET_UNICORE32) \
     || defined(TARGET_OPENRISC)
 struct target_stat {
@@ -1836,6 +1837,28 @@ struct target_stat {
     abi_long       st_blocks;
     abi_ulong  __unused[3];
 };
+#elif defined(TARGET_AARCH64)
+struct target_stat {
+    abi_ulong  st_dev;
+    abi_ulong  st_ino;
+    unsigned int st_mode;
+    unsigned int st_nlink;
+    unsigned int   st_uid;
+    unsigned int   st_gid;
+    abi_ulong  st_rdev;
+    abi_ulong  _pad1;
+    abi_long  st_size;
+    int        st_blksize;
+    int        __pad2;
+    abi_long   st_blocks;
+    abi_long  target_st_atime;
+    abi_ulong  target_st_atime_nsec;
+    abi_long  target_st_mtime;
+    abi_ulong  target_st_mtime_nsec;
+    abi_long  target_st_ctime;
+    abi_ulong  target_st_ctime_nsec;
+    unsigned int __unused[2];
+};
 #elif defined(TARGET_OPENRISC)
 struct target_stat {
     abi_ulong st_dev;
@@ -1918,7 +1941,8 @@ struct target_statfs64 {
 	uint32_t	f_spare[6];
 };
 #elif (defined(TARGET_PPC64) || defined(TARGET_X86_64) || \
-       defined(TARGET_SPARC64)) && !defined(TARGET_ABI32)
+       defined(TARGET_SPARC64) || defined(TARGET_AARCH64)) && \
+       !defined(TARGET_ABI32)
 struct target_statfs {
 	abi_long f_type;
 	abi_long f_bsize;
-- 
1.7.9.5

  parent reply	other threads:[~2013-07-01 18:20 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-01 17:34 [Qemu-devel] [PATCH v5 00/21] AArch64 preparation patchset Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 01/21] target-arm: Abstract out load/store from a vaddr in AArch32 Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 02/21] target-arm: Extract the disas struct to a header file Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 03/21] target-arm: Export cpu_env Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 04/21] target-arm: Fix target_ulong/uint32_t confusions Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 05/21] target-arm: Pass DisasContext* to gen_set_pc_im() Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 06/21] target-arm: Prepare translation for AArch64 code Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 07/21] target-arm: Add AArch64 translation stub Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 08/21] gdbstub: Add AArch64 support Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 09/21] linux-user: Don't treat AArch64 cpu names specially Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 10/21] linux-user: Add cpu loop for AArch64 Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 11/21] linux-user: Add syscall number definitions " Peter Maydell
2013-07-01 17:35 ` Peter Maydell [this message]
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 13/21] linux-user: Add signal handling " Peter Maydell
2013-09-02 12:44   ` Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 14/21] linux-user: Make sure NWFPE code is 32 bit ARM only Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 15/21] target-arm: Implement cpu_set_tls() and cpu_clone_regs() for AArch64 Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 16/21] linux-user: Add AArch64 termbits.h definitions Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 17/21] linux-user: Add AArch64 support Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 18/21] linux-user: AArch64 requires at least 3.8.0 Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 19/21] configure: Add handling code for AArch64 targets Peter Maydell
2013-09-02 16:44   ` Peter Maydell
2013-09-02 17:03     ` Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 20/21] default-configs: Add config for aarch64-linux-user Peter Maydell
2013-07-01 17:35 ` [Qemu-devel] [PATCH v5 21/21] default-configs: Add config for aarch64-softmmu Peter Maydell
2013-07-01 19:07 ` [Qemu-devel] [PATCH v5 00/21] AArch64 preparation patchset Peter Maydell
2013-07-18 13:31   ` Peter Maydell
2013-08-05 13:13     ` Peter Maydell
2013-09-03 10:05 ` Andreas Färber

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=1372700120-8896-13-git-send-email-peter.maydell@linaro.org \
    --to=peter.maydell@linaro.org \
    --cc=agraf@suse.de \
    --cc=m.hamayun@virtualopensystems.com \
    --cc=patches@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=schwab@suse.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).