qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 04/24] linux-user: Split TARGET_MAP_* out of syscall_defs.h


From: Richard Henderson
Subject: [PATCH 04/24] linux-user: Split TARGET_MAP_* out of syscall_defs.h
Date: Fri, 30 Jun 2023 15:21:39 +0200

Move the values into the per-target target_mman.h headers

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 linux-user/alpha/target_mman.h   | 13 +++++
 linux-user/generic/target_mman.h | 54 ++++++++++++++++++++
 linux-user/hppa/target_mman.h    | 10 ++++
 linux-user/mips/target_mman.h    | 11 +++++
 linux-user/mips64/target_mman.h  |  2 +-
 linux-user/ppc/target_mman.h     |  3 ++
 linux-user/sparc/target_mman.h   |  4 ++
 linux-user/syscall_defs.h        | 85 +-------------------------------
 linux-user/xtensa/target_mman.h  | 11 +++++
 9 files changed, 108 insertions(+), 85 deletions(-)

diff --git a/linux-user/alpha/target_mman.h b/linux-user/alpha/target_mman.h
index 051544f5ab..6bb03e7336 100644
--- a/linux-user/alpha/target_mman.h
+++ b/linux-user/alpha/target_mman.h
@@ -1,6 +1,19 @@
 #ifndef ALPHA_TARGET_MMAN_H
 #define ALPHA_TARGET_MMAN_H
 
+#define TARGET_MAP_ANONYMOUS            0x10
+#define TARGET_MAP_FIXED                0x100
+#define TARGET_MAP_GROWSDOWN            0x01000
+#define TARGET_MAP_DENYWRITE            0x02000
+#define TARGET_MAP_EXECUTABLE           0x04000
+#define TARGET_MAP_LOCKED               0x08000
+#define TARGET_MAP_NORESERVE            0x10000
+#define TARGET_MAP_POPULATE             0x20000
+#define TARGET_MAP_NONBLOCK             0x40000
+#define TARGET_MAP_STACK                0x80000
+#define TARGET_MAP_HUGETLB              0x100000
+#define TARGET_MAP_FIXED_NOREPLACE      0x200000
+
 #define TARGET_MADV_DONTNEED 6
 
 #define TARGET_MS_ASYNC 1
diff --git a/linux-user/generic/target_mman.h b/linux-user/generic/target_mman.h
index 32bf1a52d0..7b888fb7f8 100644
--- a/linux-user/generic/target_mman.h
+++ b/linux-user/generic/target_mman.h
@@ -1,6 +1,60 @@
 #ifndef LINUX_USER_TARGET_MMAN_H
 #define LINUX_USER_TARGET_MMAN_H
 
+/* These are defined in linux/mmap.h */
+#define TARGET_MAP_SHARED               0x01
+#define TARGET_MAP_PRIVATE              0x02
+#define TARGET_MAP_SHARED_VALIDATE      0x03
+
+/* 0x0100 - 0x4000 flags are defined in asm-generic/mman.h */
+#ifndef TARGET_MAP_GROWSDOWN
+#define TARGET_MAP_GROWSDOWN            0x0100
+#endif
+#ifndef TARGET_MAP_DENYWRITE
+#define TARGET_MAP_DENYWRITE            0x0800
+#endif
+#ifndef TARGET_MAP_EXECUTABLE
+#define TARGET_MAP_EXECUTABLE           0x1000
+#endif
+#ifndef TARGET_MAP_LOCKED
+#define TARGET_MAP_LOCKED               0x2000
+#endif
+#ifndef TARGET_MAP_NORESERVE
+#define TARGET_MAP_NORESERVE            0x4000
+#endif
+
+/* Other MAP flags are defined in asm-generic/mman-common.h */
+#ifndef TARGET_MAP_TYPE
+#define TARGET_MAP_TYPE                 0x0f
+#endif
+#ifndef TARGET_MAP_FIXED
+#define TARGET_MAP_FIXED                0x10
+#endif
+#ifndef TARGET_MAP_ANONYMOUS
+#define TARGET_MAP_ANONYMOUS            0x20
+#endif
+#ifndef TARGET_MAP_POPULATE
+#define TARGET_MAP_POPULATE             0x008000
+#endif
+#ifndef TARGET_MAP_NONBLOCK
+#define TARGET_MAP_NONBLOCK             0x010000
+#endif
+#ifndef TARGET_MAP_STACK
+#define TARGET_MAP_STACK                0x020000
+#endif
+#ifndef TARGET_MAP_HUGETLB
+#define TARGET_MAP_HUGETLB              0x040000
+#endif
+#ifndef TARGET_MAP_SYNC
+#define TARGET_MAP_SYNC                 0x080000
+#endif
+#ifndef TARGET_MAP_FIXED_NOREPLACE
+#define TARGET_MAP_FIXED_NOREPLACE      0x100000
+#endif
+#ifndef TARGET_MAP_UNINITIALIZED
+#define TARGET_MAP_UNINITIALIZED        0x4000000
+#endif
+
 #ifndef TARGET_MADV_NORMAL
 #define TARGET_MADV_NORMAL 0
 #endif
diff --git a/linux-user/hppa/target_mman.h b/linux-user/hppa/target_mman.h
index f9b6b97032..97f87d042a 100644
--- a/linux-user/hppa/target_mman.h
+++ b/linux-user/hppa/target_mman.h
@@ -1,6 +1,16 @@
 #ifndef HPPA_TARGET_MMAN_H
 #define HPPA_TARGET_MMAN_H
 
+#define TARGET_MAP_TYPE                 0x2b
+#define TARGET_MAP_FIXED                0x04
+#define TARGET_MAP_ANONYMOUS            0x10
+#define TARGET_MAP_GROWSDOWN            0x8000
+#define TARGET_MAP_POPULATE             0x10000
+#define TARGET_MAP_NONBLOCK             0x20000
+#define TARGET_MAP_STACK                0x40000
+#define TARGET_MAP_HUGETLB              0x80000
+#define TARGET_MAP_UNINITIALIZED        0
+
 #define TARGET_MADV_MERGEABLE 65
 #define TARGET_MADV_UNMERGEABLE 66
 #define TARGET_MADV_HUGEPAGE 67
diff --git a/linux-user/mips/target_mman.h b/linux-user/mips/target_mman.h
index e7ba6070fe..d1d96decf5 100644
--- a/linux-user/mips/target_mman.h
+++ b/linux-user/mips/target_mman.h
@@ -1 +1,12 @@
+#define TARGET_MAP_NORESERVE            0x0400
+#define TARGET_MAP_ANONYMOUS            0x0800
+#define TARGET_MAP_GROWSDOWN            0x1000
+#define TARGET_MAP_DENYWRITE            0x2000
+#define TARGET_MAP_EXECUTABLE           0x4000
+#define TARGET_MAP_LOCKED               0x8000
+#define TARGET_MAP_POPULATE             0x10000
+#define TARGET_MAP_NONBLOCK             0x20000
+#define TARGET_MAP_STACK                0x40000
+#define TARGET_MAP_HUGETLB              0x80000
+
 #include "../generic/target_mman.h"
diff --git a/linux-user/mips64/target_mman.h b/linux-user/mips64/target_mman.h
index e7ba6070fe..7bdc47d902 100644
--- a/linux-user/mips64/target_mman.h
+++ b/linux-user/mips64/target_mman.h
@@ -1 +1 @@
-#include "../generic/target_mman.h"
+#include "../mips/target_mman.h"
diff --git a/linux-user/ppc/target_mman.h b/linux-user/ppc/target_mman.h
index e7ba6070fe..c90be347f6 100644
--- a/linux-user/ppc/target_mman.h
+++ b/linux-user/ppc/target_mman.h
@@ -1 +1,4 @@
+#define TARGET_MAP_NORESERVE            0x40
+#define TARGET_MAP_LOCKED               0x80
+
 #include "../generic/target_mman.h"
diff --git a/linux-user/sparc/target_mman.h b/linux-user/sparc/target_mman.h
index e7ba6070fe..3fdee19d8a 100644
--- a/linux-user/sparc/target_mman.h
+++ b/linux-user/sparc/target_mman.h
@@ -1 +1,5 @@
+#define TARGET_MAP_NORESERVE           0x40
+#define TARGET_MAP_LOCKED              0x100
+#define TARGET_MAP_GROWSDOWN           0x0200
+
 #include "../generic/target_mman.h"
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index cc37054cb5..118a8ac7da 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -1262,90 +1262,7 @@ struct target_winsize {
 #define TARGET_PROT_MTE         0x20
 #endif
 
-/* Common */
-#define TARGET_MAP_SHARED      0x01            /* Share changes */
-#define TARGET_MAP_PRIVATE     0x02            /* Changes are private */
-#if defined(TARGET_HPPA)
-#define TARGET_MAP_TYPE         0x03           /* Mask for type of mapping */
-#else
-#define TARGET_MAP_TYPE         0x0f           /* Mask for type of mapping */
-#endif
-
-/* Target specific */
-#if defined(TARGET_MIPS)
-#define TARGET_MAP_FIXED       0x10            /* Interpret addr exactly */
-#define TARGET_MAP_ANONYMOUS   0x0800          /* don't use a file */
-#define TARGET_MAP_GROWSDOWN   0x1000          /* stack-like segment */
-#define TARGET_MAP_DENYWRITE   0x2000          /* ETXTBSY */
-#define TARGET_MAP_EXECUTABLE  0x4000          /* mark it as an executable */
-#define TARGET_MAP_LOCKED      0x8000          /* pages are locked */
-#define TARGET_MAP_NORESERVE   0x0400          /* don't check for reservations 
*/
-#define TARGET_MAP_POPULATE    0x10000         /* populate (prefault) 
pagetables */
-#define TARGET_MAP_NONBLOCK    0x20000         /* do not block on IO */
-#define TARGET_MAP_STACK        0x40000         /* ignored */
-#define TARGET_MAP_HUGETLB      0x80000         /* create a huge page mapping 
*/
-#elif defined(TARGET_PPC)
-#define TARGET_MAP_FIXED       0x10            /* Interpret addr exactly */
-#define TARGET_MAP_ANONYMOUS   0x20            /* don't use a file */
-#define TARGET_MAP_GROWSDOWN   0x0100          /* stack-like segment */
-#define TARGET_MAP_DENYWRITE   0x0800          /* ETXTBSY */
-#define TARGET_MAP_EXECUTABLE  0x1000          /* mark it as an executable */
-#define TARGET_MAP_LOCKED      0x0080          /* pages are locked */
-#define TARGET_MAP_NORESERVE   0x0040          /* don't check for reservations 
*/
-#define TARGET_MAP_POPULATE    0x8000          /* populate (prefault) 
pagetables */
-#define TARGET_MAP_NONBLOCK    0x10000         /* do not block on IO */
-#define TARGET_MAP_STACK        0x20000         /* ignored */
-#define TARGET_MAP_HUGETLB      0x40000         /* create a huge page mapping 
*/
-#elif defined(TARGET_ALPHA)
-#define TARGET_MAP_ANONYMOUS   0x10            /* don't use a file */
-#define TARGET_MAP_FIXED       0x100           /* Interpret addr exactly */
-#define TARGET_MAP_GROWSDOWN   0x01000         /* stack-like segment */
-#define TARGET_MAP_DENYWRITE   0x02000         /* ETXTBSY */
-#define TARGET_MAP_EXECUTABLE  0x04000         /* mark it as an executable */
-#define TARGET_MAP_LOCKED      0x08000         /* lock the mapping */
-#define TARGET_MAP_NORESERVE   0x10000         /* no check for reservations */
-#define TARGET_MAP_POPULATE    0x20000         /* pop (prefault) pagetables */
-#define TARGET_MAP_NONBLOCK    0x40000         /* do not block on IO */
-#define TARGET_MAP_STACK        0x80000         /* ignored */
-#define TARGET_MAP_HUGETLB      0x100000        /* create a huge page mapping 
*/
-#elif defined(TARGET_HPPA)
-#define TARGET_MAP_ANONYMOUS   0x10            /* don't use a file */
-#define TARGET_MAP_FIXED       0x04            /* Interpret addr exactly */
-#define TARGET_MAP_GROWSDOWN   0x08000         /* stack-like segment */
-#define TARGET_MAP_DENYWRITE   0x00800         /* ETXTBSY */
-#define TARGET_MAP_EXECUTABLE  0x01000         /* mark it as an executable */
-#define TARGET_MAP_LOCKED      0x02000         /* lock the mapping */
-#define TARGET_MAP_NORESERVE   0x04000         /* no check for reservations */
-#define TARGET_MAP_POPULATE    0x10000         /* pop (prefault) pagetables */
-#define TARGET_MAP_NONBLOCK    0x20000         /* do not block on IO */
-#define TARGET_MAP_STACK        0x40000         /* ignored */
-#define TARGET_MAP_HUGETLB      0x80000         /* create a huge page mapping 
*/
-#elif defined(TARGET_XTENSA)
-#define TARGET_MAP_FIXED       0x10            /* Interpret addr exactly */
-#define TARGET_MAP_ANONYMOUS   0x0800          /* don't use a file */
-#define TARGET_MAP_GROWSDOWN   0x1000          /* stack-like segment */
-#define TARGET_MAP_DENYWRITE   0x2000          /* ETXTBSY */
-#define TARGET_MAP_EXECUTABLE  0x4000          /* mark it as an executable */
-#define TARGET_MAP_LOCKED      0x8000          /* pages are locked */
-#define TARGET_MAP_NORESERVE   0x0400          /* don't check for reservations 
*/
-#define TARGET_MAP_POPULATE    0x10000         /* populate (prefault) 
pagetables */
-#define TARGET_MAP_NONBLOCK    0x20000         /* do not block on IO */
-#define TARGET_MAP_STACK       0x40000
-#define TARGET_MAP_HUGETLB  0x80000         /* create a huge page mapping */
-#else
-#define TARGET_MAP_FIXED       0x10            /* Interpret addr exactly */
-#define TARGET_MAP_ANONYMOUS   0x20            /* don't use a file */
-#define TARGET_MAP_GROWSDOWN   0x0100          /* stack-like segment */
-#define TARGET_MAP_DENYWRITE   0x0800          /* ETXTBSY */
-#define TARGET_MAP_EXECUTABLE  0x1000          /* mark it as an executable */
-#define TARGET_MAP_LOCKED      0x2000          /* pages are locked */
-#define TARGET_MAP_NORESERVE   0x4000          /* don't check for reservations 
*/
-#define TARGET_MAP_POPULATE    0x8000          /* populate (prefault) 
pagetables */
-#define TARGET_MAP_NONBLOCK    0x10000         /* do not block on IO */
-#define TARGET_MAP_STACK        0x20000         /* ignored */
-#define TARGET_MAP_HUGETLB      0x40000         /* create a huge page mapping 
*/
-#define TARGET_MAP_UNINITIALIZED 0x4000000     /* for anonymous mmap, memory 
could be uninitialized */
-#endif
+#include "target_mman.h"
 
 #if (defined(TARGET_I386) && defined(TARGET_ABI32)) \
     || (defined(TARGET_ARM) && defined(TARGET_ABI32)) \
diff --git a/linux-user/xtensa/target_mman.h b/linux-user/xtensa/target_mman.h
index e7ba6070fe..d1d96decf5 100644
--- a/linux-user/xtensa/target_mman.h
+++ b/linux-user/xtensa/target_mman.h
@@ -1 +1,12 @@
+#define TARGET_MAP_NORESERVE            0x0400
+#define TARGET_MAP_ANONYMOUS            0x0800
+#define TARGET_MAP_GROWSDOWN            0x1000
+#define TARGET_MAP_DENYWRITE            0x2000
+#define TARGET_MAP_EXECUTABLE           0x4000
+#define TARGET_MAP_LOCKED               0x8000
+#define TARGET_MAP_POPULATE             0x10000
+#define TARGET_MAP_NONBLOCK             0x20000
+#define TARGET_MAP_STACK                0x40000
+#define TARGET_MAP_HUGETLB              0x80000
+
 #include "../generic/target_mman.h"
-- 
2.34.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]