diff options
Diffstat (limited to 'src/arch/alpha/linux')
-rw-r--r-- | src/arch/alpha/linux/linux.cc | 30 | ||||
-rw-r--r-- | src/arch/alpha/linux/linux.hh | 21 |
2 files changed, 47 insertions, 4 deletions
diff --git a/src/arch/alpha/linux/linux.cc b/src/arch/alpha/linux/linux.cc index b86b92c2e..7b747f127 100644 --- a/src/arch/alpha/linux/linux.cc +++ b/src/arch/alpha/linux/linux.cc @@ -28,10 +28,11 @@ * Authors: Korey Sewell */ -#include <fcntl.h> - #include "arch/alpha/linux/linux.hh" +#include <fcntl.h> +#include <sys/mman.h> + // open(2) flags translation table SyscallFlagTransTable AlphaLinux::openFlagTable[] = { #ifdef _MSC_VER @@ -99,3 +100,28 @@ SyscallFlagTransTable AlphaLinux::openFlagTable[] = { const int AlphaLinux::NUM_OPEN_FLAGS = (sizeof(AlphaLinux::openFlagTable)/sizeof(AlphaLinux::openFlagTable[0])); + +// mmap(2) flags translation table +SyscallFlagTransTable AlphaLinux::mmapFlagTable[] = { + { AlphaLinux::TGT_MAP_SHARED, MAP_SHARED }, + { AlphaLinux::TGT_MAP_PRIVATE, MAP_PRIVATE }, + { AlphaLinux::TGT_MAP_ANON, MAP_ANON }, + { AlphaLinux::TGT_MAP_DENYWRITE, MAP_DENYWRITE }, + { AlphaLinux::TGT_MAP_EXECUTABLE, MAP_EXECUTABLE }, + { AlphaLinux::TGT_MAP_FILE, MAP_FILE }, + { AlphaLinux::TGT_MAP_GROWSDOWN, MAP_GROWSDOWN }, + { AlphaLinux::TGT_MAP_HUGETLB, MAP_HUGETLB }, + { AlphaLinux::TGT_MAP_LOCKED, MAP_LOCKED }, + { AlphaLinux::TGT_MAP_NONBLOCK, MAP_NONBLOCK }, + { AlphaLinux::TGT_MAP_NORESERVE, MAP_NORESERVE }, + { AlphaLinux::TGT_MAP_POPULATE, MAP_POPULATE }, +#ifdef MAP_STACK + { AlphaLinux::TGT_MAP_STACK, MAP_STACK }, +#endif + { AlphaLinux::TGT_MAP_ANONYMOUS, MAP_ANONYMOUS }, + { AlphaLinux::TGT_MAP_FIXED, MAP_FIXED }, +}; + +const unsigned AlphaLinux::NUM_MMAP_FLAGS = + sizeof(AlphaLinux::mmapFlagTable) / + sizeof(AlphaLinux::mmapFlagTable[0]); diff --git a/src/arch/alpha/linux/linux.hh b/src/arch/alpha/linux/linux.hh index 7864c6414..409ad4dd1 100644 --- a/src/arch/alpha/linux/linux.hh +++ b/src/arch/alpha/linux/linux.hh @@ -104,8 +104,25 @@ class AlphaLinux : public Linux //@} /// For mmap(). - static const unsigned TGT_MAP_ANONYMOUS = 0x10; - static const unsigned TGT_MAP_FIXED = 0x100; + static SyscallFlagTransTable mmapFlagTable[]; + + static const unsigned TGT_MAP_SHARED = 0x000001; + static const unsigned TGT_MAP_PRIVATE = 0x000002; + static const unsigned TGT_MAP_ANON = 0x000010; + static const unsigned TGT_MAP_DENYWRITE = 0x002000; + static const unsigned TGT_MAP_EXECUTABLE = 0x004000; + static const unsigned TGT_MAP_FILE = 0x000000; + static const unsigned TGT_MAP_GROWSDOWN = 0x001000; + static const unsigned TGT_MAP_HUGETLB = 0x100000; + static const unsigned TGT_MAP_LOCKED = 0x008000; + static const unsigned TGT_MAP_NONBLOCK = 0x040000; + static const unsigned TGT_MAP_NORESERVE = 0x010000; + static const unsigned TGT_MAP_POPULATE = 0x020000; + static const unsigned TGT_MAP_STACK = 0x080000; + static const unsigned TGT_MAP_ANONYMOUS = 0x000010; + static const unsigned TGT_MAP_FIXED = 0x000100; + + static const unsigned NUM_MMAP_FLAGS; //@{ /// For getsysinfo(). |