changeset 654272b82e94 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=654272b82e94
description:
        syscall_emul: add many Linux kernel flags

diffstat:

 src/arch/alpha/linux/linux.cc |   72 ++++++++++++++------
 src/arch/alpha/linux/linux.hh |   66 ++++++++++++++----
 src/arch/arm/linux/linux.cc   |   84 ++++++++++++++++++-----
 src/arch/arm/linux/linux.hh   |  144 +++++++++++++++++++++++++++++++----------
 src/arch/mips/linux/linux.cc  |   46 ++++++++++--
 src/arch/mips/linux/linux.hh  |   56 +++++++++++++--
 src/arch/power/linux/linux.cc |   54 +++++++++++---
 src/arch/power/linux/linux.hh |   70 +++++++++++++++----
 src/arch/sparc/linux/linux.cc |   67 +++++++++++++------
 src/arch/sparc/linux/linux.hh |   52 +++++++++++++-
 src/arch/x86/linux/linux.cc   |  144 +++++++++++++++++++++++++++++------------
 src/arch/x86/linux/linux.hh   |  142 +++++++++++++++++++++++++++++++---------
 src/kern/linux/linux.hh       |   23 ++++++
 13 files changed, 780 insertions(+), 240 deletions(-)

diffs (truncated from 1341 to 300 lines):

diff -r 516213d2f0cf -r 654272b82e94 src/arch/alpha/linux/linux.cc
--- a/src/arch/alpha/linux/linux.cc     Thu Mar 17 10:22:39 2016 -0700
+++ b/src/arch/alpha/linux/linux.cc     Thu Mar 17 10:22:39 2016 -0700
@@ -35,34 +35,64 @@
 // open(2) flags translation table
 SyscallFlagTransTable AlphaLinux::openFlagTable[] = {
 #ifdef _MSC_VER
-  { AlphaLinux::TGT_O_RDONLY,   _O_RDONLY },
-  { AlphaLinux::TGT_O_WRONLY,   _O_WRONLY },
-  { AlphaLinux::TGT_O_RDWR,     _O_RDWR },
-  { AlphaLinux::TGT_O_APPEND,   _O_APPEND },
-  { AlphaLinux::TGT_O_CREAT,    _O_CREAT },
-  { AlphaLinux::TGT_O_TRUNC,    _O_TRUNC },
-  { AlphaLinux::TGT_O_EXCL,     _O_EXCL },
+  { AlphaLinux::TGT_O_RDONLY,    _O_RDONLY },
+  { AlphaLinux::TGT_O_WRONLY,    _O_WRONLY },
+  { AlphaLinux::TGT_O_RDWR,      _O_RDWR },
+  { AlphaLinux::TGT_O_CREAT,     _O_CREAT },
+  { AlphaLinux::TGT_O_EXCL,      _O_EXCL },
+#ifdef _O_NOCTTY
+  { AlphaLinux::TGT_O_NOCTTY,    _O_NOCTTY },
+#endif
+  { AlphaLinux::TGT_O_TRUNC,     _O_TRUNC },
+  { AlphaLinux::TGT_O_APPEND,    _O_APPEND },
 #ifdef _O_NONBLOCK
-  { AlphaLinux::TGT_O_NONBLOCK, _O_NONBLOCK },
+  { AlphaLinux::TGT_O_NONBLOCK,  _O_NONBLOCK },
 #endif
-#ifdef _O_NOCTTY
-  { AlphaLinux::TGT_O_NOCTTY,   _O_NOCTTY },
+#ifdef _O_DSYNC
+  { AlphaLinux::TGT_O_DSYNC,     _O_DSYNC },
+#endif
+  { AlphaLinux::TGT_FASYNC,      _O_ASYNC },
+  { AlphaLinux::TGT_O_DIRECT,    _O_DIRECT },
+  { AlphaLinux::TGT_O_LARGEFILE, _O_LARGEFILE },
+  { AlphaLinux::TGT_O_DIRECTORY, _O_DIRECTORY },
+  { AlphaLinux::TGT_O_NOFOLLOW,  _O_NOFOLLOW },
+  { AlphaLinux::TGT_O_NOATIME,   _O_NOATIME },
+#ifdef _O_CLOEXEC
+  { AlphaLinux::TGT_O_CLOEXEC,   _O_CLOEXEC },
 #endif
 #ifdef _O_SYNC
-  { AlphaLinux::TGT_O_SYNC,     _O_SYNC },
+  { AlphaLinux::TGT_O_SYNC,      _O_SYNC },
+#endif
+#ifdef _O_PATH
+  { AlphaLinux::TGT_O_PATH,      _O_PATH },
 #endif
 #else /* !_MSC_VER */
-  { AlphaLinux::TGT_O_RDONLY,   O_RDONLY },
-  { AlphaLinux::TGT_O_WRONLY,   O_WRONLY },
-  { AlphaLinux::TGT_O_RDWR,     O_RDWR },
-  { AlphaLinux::TGT_O_APPEND,   O_APPEND },
-  { AlphaLinux::TGT_O_CREAT,    O_CREAT },
-  { AlphaLinux::TGT_O_TRUNC,    O_TRUNC },
-  { AlphaLinux::TGT_O_EXCL,     O_EXCL },
-  { AlphaLinux::TGT_O_NONBLOCK, O_NONBLOCK },
-  { AlphaLinux::TGT_O_NOCTTY,   O_NOCTTY },
+  { AlphaLinux::TGT_O_RDONLY,    O_RDONLY },
+  { AlphaLinux::TGT_O_WRONLY,    O_WRONLY },
+  { AlphaLinux::TGT_O_RDWR,      O_RDWR },
+  { AlphaLinux::TGT_O_CREAT,     O_CREAT },
+  { AlphaLinux::TGT_O_EXCL,      O_EXCL },
+  { AlphaLinux::TGT_O_NOCTTY,    O_NOCTTY },
+  { AlphaLinux::TGT_O_TRUNC,     O_TRUNC },
+  { AlphaLinux::TGT_O_APPEND,    O_APPEND },
+  { AlphaLinux::TGT_O_NONBLOCK,  O_NONBLOCK },
+#ifdef O_DSYNC
+  { AlphaLinux::TGT_O_DSYNC,     O_DSYNC },
+#endif
+  { AlphaLinux::TGT_FASYNC,     O_ASYNC },
+  { AlphaLinux::TGT_O_DIRECT,    O_DIRECT },
+  { AlphaLinux::TGT_O_LARGEFILE, O_LARGEFILE },
+  { AlphaLinux::TGT_O_DIRECTORY, O_DIRECTORY },
+  { AlphaLinux::TGT_O_NOFOLLOW,  O_NOFOLLOW },
+  { AlphaLinux::TGT_O_NOATIME,   O_NOATIME },
+#ifdef O_CLOEXEC
+  { AlphaLinux::TGT_O_CLOEXEC,   O_CLOEXEC },
+#endif
 #ifdef O_SYNC
-  { AlphaLinux::TGT_O_SYNC,     O_SYNC },
+  { AlphaLinux::TGT_O_SYNC,      O_SYNC },
+#endif
+#ifdef O_PATH
+  { AlphaLinux::TGT_O_PATH,      O_PATH },
 #endif
 #endif /* _MSC_VER */
 };
diff -r 516213d2f0cf -r 654272b82e94 src/arch/alpha/linux/linux.hh
--- a/src/arch/alpha/linux/linux.hh     Thu Mar 17 10:22:39 2016 -0700
+++ b/src/arch/alpha/linux/linux.hh     Thu Mar 17 10:22:39 2016 -0700
@@ -41,6 +41,38 @@
 {
   public:
 
+    static const int TGT_SIGHUP         = 0x000001;
+    static const int TGT_SIGINT         = 0x000002;
+    static const int TGT_SIGQUIT        = 0x000003;
+    static const int TGT_SIGILL         = 0x000004;
+    static const int TGT_SIGTRAP        = 0x000005;
+    static const int TGT_SIGABRT        = 0x000006;
+    static const int TGT_SIGEMT         = 0x000007;
+    static const int TGT_SIGFPE         = 0x000008;
+    static const int TGT_SIGKILL        = 0x000009;
+    static const int TGT_SIGBUS         = 0x00000a;
+    static const int TGT_SIGSEGV        = 0x00000b;
+    static const int TGT_SIGSYS         = 0x00000c;
+    static const int TGT_SIGPIPE        = 0x00000d;
+    static const int TGT_SIGALRM        = 0x00000e;
+    static const int TGT_SIGTERM        = 0x00000f;
+    static const int TGT_SIGURG         = 0x000010;
+    static const int TGT_SIGSTOP        = 0x000011;
+    static const int TGT_SIGTSTP        = 0x000012;
+    static const int TGT_SIGCONT        = 0x000013;
+    static const int TGT_SIGCHLD        = 0x000014;
+    static const int TGT_SIGTTIN        = 0x000015;
+    static const int TGT_SIGTTOU        = 0x000016;
+    static const int TGT_SIGIO          = 0x000017;
+    static const int TGT_SIGXCPU        = 0x000018;
+    static const int TGT_SIGXFSZ        = 0x000019;
+    static const int TGT_SIGVTALRM      = 0x00001a;
+    static const int TGT_SIGPROF        = 0x00001b;
+    static const int TGT_SIGWINCH       = 0x00001c;
+    static const int TGT_SIGINFO        = 0x00001d;
+    static const int TGT_SIGUSR1        = 0x00001e;
+    static const int TGT_SIGUSR2        = 0x00001f;
+
     /// This table maps the target open() flags to the corresponding
     /// host open() flags.
     static SyscallFlagTransTable openFlagTable[];
@@ -50,21 +82,25 @@
 
     //@{
     /// open(2) flag values.
-    static const int TGT_O_RDONLY       = 00000000;     //!< O_RDONLY
-    static const int TGT_O_WRONLY       = 00000001;     //!< O_WRONLY
-    static const int TGT_O_RDWR         = 00000002;     //!< O_RDWR
-    static const int TGT_O_NONBLOCK     = 00000004;     //!< O_NONBLOCK
-    static const int TGT_O_APPEND       = 00000010;     //!< O_APPEND
-    static const int TGT_O_CREAT        = 00001000;     //!< O_CREAT
-    static const int TGT_O_TRUNC        = 00002000;     //!< O_TRUNC
-    static const int TGT_O_EXCL         = 00004000;     //!< O_EXCL
-    static const int TGT_O_NOCTTY       = 00010000;     //!< O_NOCTTY
-    static const int TGT_O_SYNC         = 00040000;     //!< O_SYNC
-    static const int TGT_O_DRD          = 00100000;     //!< O_DRD
-    static const int TGT_O_DIRECTIO     = 00200000;     //!< O_DIRECTIO
-    static const int TGT_O_CACHE        = 00400000;     //!< O_CACHE
-    static const int TGT_O_DSYNC        = 02000000;     //!< O_DSYNC
-    static const int TGT_O_RSYNC        = 04000000;     //!< O_RSYNC
+    static const int TGT_O_RDONLY       = 000000000;    //!< O_RDONLY
+    static const int TGT_O_WRONLY       = 000000001;    //!< O_WRONLY
+    static const int TGT_O_RDWR         = 000000002;    //!< O_RDWR
+    static const int TGT_O_CREAT        = 000001000;    //!< O_CREAT
+    static const int TGT_O_EXCL         = 000004000;    //!< O_EXCL
+    static const int TGT_O_NOCTTY       = 000010000;    //!< O_NOCTTY
+    static const int TGT_O_TRUNC        = 000002000;    //!< O_TRUNC
+    static const int TGT_O_APPEND       = 000000010;    //!< O_APPEND
+    static const int TGT_O_NONBLOCK     = 000000004;    //!< O_NONBLOCK
+    static const int TGT_O_DSYNC        = 000040000;    //!< O_DSYNC
+    static const int TGT_FASYNC         = 000020000;    //!< FASYNC
+    static const int TGT_O_DIRECT       = 002000000;    //!< O_DIRECT
+    static const int TGT_O_LARGEFILE    = 000400000;    //!< O_LARGEFILE
+    static const int TGT_O_DIRECTORY    = 000100000;    //!< O_DIRECTORY
+    static const int TGT_O_NOFOLLOW     = 000200000;    //!< O_NOFOLLOW
+    static const int TGT_O_NOATIME      = 004000000;    //!< O_NOATIME
+    static const int TGT_O_CLOEXEC      = 010000000;    //!< O_CLOEXEC
+    static const int TGT_O_SYNC         = 020040000;    //!< O_SYNC
+    static const int TGT_O_PATH         = 040000000;    //!< O_PATH
     //@}
 
     /// For mmap().
diff -r 516213d2f0cf -r 654272b82e94 src/arch/arm/linux/linux.cc
--- a/src/arch/arm/linux/linux.cc       Thu Mar 17 10:22:39 2016 -0700
+++ b/src/arch/arm/linux/linux.cc       Thu Mar 17 10:22:39 2016 -0700
@@ -51,19 +51,34 @@
   { ArmLinux32::TGT_O_RDONLY,     _O_RDONLY },
   { ArmLinux32::TGT_O_WRONLY,     _O_WRONLY },
   { ArmLinux32::TGT_O_RDWR,       _O_RDWR },
+  { ArmLinux32::TGT_O_CREAT,      _O_CREAT },
+  { ArmLinux32::TGT_O_EXCL,       _O_EXCL },
+#ifdef _O_NOCTTY
+  { ArmLinux32::TGT_O_NOCTTY,     _O_NOCTTY },
+#endif
+  { ArmLinux32::TGT_O_TRUNC,      _O_TRUNC },
   { ArmLinux32::TGT_O_APPEND,     _O_APPEND },
-  { ArmLinux32::TGT_O_CREAT,      _O_CREAT },
-  { ArmLinux32::TGT_O_TRUNC,      _O_TRUNC },
-  { ArmLinux32::TGT_O_EXCL,       _O_EXCL },
 #ifdef _O_NONBLOCK
   { ArmLinux32::TGT_O_NONBLOCK,   _O_NONBLOCK },
 #endif
-#ifdef _O_NOCTTY
-  { ArmLinux32::TGT_O_NOCTTY,     _O_NOCTTY },
+#ifdef _O_DSYNC
+  { ArmLinux32::TGT_O_DSYNC,      _O_DSYNC },
+#endif
+  { ArmLinux32::TGT_FASYNC,       _O_ASYNC },
+  { ArmLinux32::TGT_O_DIRECT,     _O_DIRECT },
+  { ArmLinux32::TGT_O_LARGEFILE,  _O_LARGEFILE },
+  { ArmLinux32::TGT_O_DIRECTORY,  _O_DIRECTORY },
+  { ArmLinux32::TGT_O_NOFOLLOW,   _O_NOFOLLOW },
+  { ArmLinux32::TGT_O_NOATIME,    _O_NOATIME },
+#ifdef _O_CLOEXEC
+  { ArmLinux32::TGT_O_CLOEXEC,    _O_CLOEXEC },
 #endif
 #ifdef _O_SYNC
   { ArmLinux32::TGT_O_SYNC,       _O_SYNC },
 #endif
+#ifdef _O_PATH
+  { ArmLinux32::TGT_O_PATH,       _O_PATH },
+#endif
 #else /* !_MSC_VER */
   { ArmLinux32::TGT_O_RDONLY,     O_RDONLY },
   { ArmLinux32::TGT_O_WRONLY,     O_WRONLY },
@@ -74,12 +89,10 @@
   { ArmLinux32::TGT_O_TRUNC,      O_TRUNC },
   { ArmLinux32::TGT_O_APPEND,     O_APPEND },
   { ArmLinux32::TGT_O_NONBLOCK,   O_NONBLOCK },
-#ifdef O_SYNC
-  { ArmLinux32::TGT_O_SYNC,       O_SYNC },
+#ifdef O_DSYNC
+  { ArmLinux32::TGT_O_DSYNC,      O_DSYNC },
 #endif
-#ifdef FASYNC
-  { ArmLinux32::TGT_FASYNC,       FASYNC },
-#endif
+  { ArmLinux32::TGT_FASYNC,       O_ASYNC },
 #ifdef O_DIRECT
   { ArmLinux32::TGT_O_DIRECT,     O_DIRECT },
 #endif
@@ -92,6 +105,16 @@
 #ifdef O_NOFOLLOW
   { ArmLinux32::TGT_O_NOFOLLOW,   O_NOFOLLOW },
 #endif
+  { ArmLinux32::TGT_O_NOATIME,    O_NOATIME },
+#ifdef O_CLOEXEC
+  { ArmLinux32::TGT_O_CLOEXEC,    O_CLOEXEC },
+#endif
+#ifdef O_SYNC
+  { ArmLinux32::TGT_O_SYNC,       O_SYNC },
+#endif
+#ifdef O_PATH
+  { ArmLinux32::TGT_O_PATH,       O_PATH },
+#endif
 #endif /* _MSC_VER */
 };
 
@@ -104,19 +127,34 @@
   { ArmLinux64::TGT_O_RDONLY,     _O_RDONLY },
   { ArmLinux64::TGT_O_WRONLY,     _O_WRONLY },
   { ArmLinux64::TGT_O_RDWR,       _O_RDWR },
+  { ArmLinux64::TGT_O_CREAT,      _O_CREAT },
+  { ArmLinux64::TGT_O_EXCL,       _O_EXCL },
+#ifdef _O_NOCTTY
+  { ArmLinux64::TGT_O_NOCTTY,     _O_NOCTTY },
+#endif
+  { ArmLinux64::TGT_O_TRUNC,      _O_TRUNC },
   { ArmLinux64::TGT_O_APPEND,     _O_APPEND },
-  { ArmLinux64::TGT_O_CREAT,      _O_CREAT },
-  { ArmLinux64::TGT_O_TRUNC,      _O_TRUNC },
-  { ArmLinux64::TGT_O_EXCL,       _O_EXCL },
 #ifdef _O_NONBLOCK
   { ArmLinux64::TGT_O_NONBLOCK,   _O_NONBLOCK },
 #endif
-#ifdef _O_NOCTTY
-  { ArmLinux64::TGT_O_NOCTTY,     _O_NOCTTY },
+#ifdef _O_DSYNC
+  { ArmLinux64::TGT_O_DSYNC,       _O_DSYNC },
+#endif
+  { ArmLinux64::TGT_FASYNC,       _O_ASYNC },
+  { ArmLinux64::TGT_O_DIRECT,     _O_DIRECT },
+  { ArmLinux64::TGT_O_LARGEFILE,  _O_LARGEFILE },
+  { ArmLinux64::TGT_O_DIRECTORY,  _O_DIRECTORY },
+  { ArmLinux64::TGT_O_NOFOLLOW,   _O_NOFOLLOW },
+  { ArmLinux64::TGT_O_NOATIME,    _O_NOATIME },
+#ifdef _O_CLOEXEC
+  { ArmLinux64::TGT_O_CLOEXEC,    _O_CLOEXEC },
 #endif
 #ifdef _O_SYNC
   { ArmLinux64::TGT_O_SYNC,       _O_SYNC },
 #endif
+#ifdef _O_PATH
+  { ArmLinux64::TGT_O_PATH,       _O_PATH },
+#endif
 #else /* !_MSC_VER */
   { ArmLinux64::TGT_O_RDONLY,     O_RDONLY },
   { ArmLinux64::TGT_O_WRONLY,     O_WRONLY },
@@ -127,11 +165,9 @@
   { ArmLinux64::TGT_O_TRUNC,      O_TRUNC },
   { ArmLinux64::TGT_O_APPEND,     O_APPEND },
   { ArmLinux64::TGT_O_NONBLOCK,   O_NONBLOCK },
-#ifdef O_SYNC
-  { ArmLinux64::TGT_O_SYNC,       O_SYNC },
-#endif
+  { ArmLinux64::TGT_O_DSYNC,      O_DSYNC },
 #ifdef FASYNC
-  { ArmLinux64::TGT_FASYNC,       FASYNC },
+  { ArmLinux64::TGT_FASYNC,       O_ASYNC },
 #endif
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to