diff options
Diffstat (limited to 'src/arch/sparc/solaris')
-rw-r--r-- | src/arch/sparc/solaris/solaris.cc | 29 | ||||
-rw-r--r-- | src/arch/sparc/solaris/solaris.hh | 23 |
2 files changed, 48 insertions, 4 deletions
diff --git a/src/arch/sparc/solaris/solaris.cc b/src/arch/sparc/solaris/solaris.cc index e17de3af0..afedcfe88 100644 --- a/src/arch/sparc/solaris/solaris.cc +++ b/src/arch/sparc/solaris/solaris.cc @@ -28,10 +28,11 @@ * Authors: Ali Saidi */ -#include <fcntl.h> - #include "arch/sparc/solaris/solaris.hh" +#include <fcntl.h> +#include <sys/mman.h> + // open(2) flags translation table SyscallFlagTransTable SparcSolaris::openFlagTable[] = { #ifdef _MSC_VER @@ -76,3 +77,27 @@ SyscallFlagTransTable SparcSolaris::openFlagTable[] = { const int SparcSolaris::NUM_OPEN_FLAGS = (sizeof(SparcSolaris::openFlagTable)/sizeof(SparcSolaris::openFlagTable[0])); +// mmap(2) flags translation table +SyscallFlagTransTable SparcSolaris::mmapFlagTable[] = { + { TGT_MAP_SHARED, MAP_SHARED }, + { TGT_MAP_PRIVATE, MAP_PRIVATE }, + { TGT_MAP_32BIT, MAP_32BIT}, + { TGT_MAP_ANON, MAP_ANON }, + { TGT_MAP_DENYWRITE, MAP_DENYWRITE }, + { TGT_MAP_EXECUTABLE, MAP_EXECUTABLE }, + { TGT_MAP_FILE, MAP_FILE }, + { TGT_MAP_GROWSDOWN, MAP_GROWSDOWN }, + { TGT_MAP_HUGETLB, MAP_HUGETLB }, + { TGT_MAP_LOCKED, MAP_LOCKED }, + { TGT_MAP_NONBLOCK, MAP_NONBLOCK }, + { TGT_MAP_NORESERVE, MAP_NORESERVE }, + { TGT_MAP_POPULATE, MAP_POPULATE }, + { TGT_MAP_STACK, MAP_STACK }, + { TGT_MAP_ANONYMOUS, MAP_ANONYMOUS }, + { TGT_MAP_FIXED, MAP_FIXED }, +}; + +const unsigned SparcSolaris::NUM_MMAP_FLAGS = + sizeof(SparcSolaris::mmapFlagTable) / + sizeof(SparcSolaris::mmapFlagTable[0]); + diff --git a/src/arch/sparc/solaris/solaris.hh b/src/arch/sparc/solaris/solaris.hh index 9827b6b50..1e814bc53 100644 --- a/src/arch/sparc/solaris/solaris.hh +++ b/src/arch/sparc/solaris/solaris.hh @@ -58,8 +58,27 @@ class SparcSolaris : public Solaris static const int NUM_OPEN_FLAGS; - static const unsigned TGT_MAP_ANONYMOUS = 0x100; - static const unsigned TGT_MAP_FIXED = 0x10; + /// For mmap(). + static SyscallFlagTransTable mmapFlagTable[]; + + static const unsigned TGT_MAP_SHARED = 0x00001; + static const unsigned TGT_MAP_PRIVATE = 0x00002; + static const unsigned TGT_MAP_32BIT = 0x00040; + static const unsigned TGT_MAP_ANON = 0x00020; + static const unsigned TGT_MAP_DENYWRITE = 0x00800; + static const unsigned TGT_MAP_EXECUTABLE = 0x01000; + static const unsigned TGT_MAP_FILE = 0x00000; + static const unsigned TGT_MAP_GROWSDOWN = 0x00100; + static const unsigned TGT_MAP_HUGETLB = 0x40000; + static const unsigned TGT_MAP_LOCKED = 0x02000; + static const unsigned TGT_MAP_NONBLOCK = 0x10000; + static const unsigned TGT_MAP_NORESERVE = 0x04000; + static const unsigned TGT_MAP_POPULATE = 0x08000; + static const unsigned TGT_MAP_STACK = 0x20000; + static const unsigned TGT_MAP_ANONYMOUS = 0x00020; + static const unsigned TGT_MAP_FIXED = 0x00010; + + static const unsigned NUM_MMAP_FLAGS; }; #endif |