From e4b0743cf29ff7e2971b925bdd9f4b2c66aa252e Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 9 Feb 2019 20:10:05 +0000 Subject: [PATCH] added compatability for 32bit ARM platforms --- common/lib/kernel/vfio.cpp | 14 ++++++++++++-- common/lib/memory.cpp | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/common/lib/kernel/vfio.cpp b/common/lib/kernel/vfio.cpp index c97a845ae..6b12bb2f0 100644 --- a/common/lib/kernel/vfio.cpp +++ b/common/lib/kernel/vfio.cpp @@ -24,6 +24,11 @@ #define _DEFAULT_SOURCE +#ifdef __arm__ + #define _LARGEFILE64_SOURCE 1 + #define _FILE_OFFSET_BITS 64 +#endif + #include #include #include @@ -476,10 +481,15 @@ VfioDevice::regionMap(size_t index) if (!(r->flags & VFIO_REGION_INFO_FLAG_MMAP)) return MAP_FAILED; + int flags = MAP_SHARED; + +#ifndef __arm__ + flags |= MAP_SHARED; +#endif + mappings[index] = mmap(nullptr, r->size, PROT_READ | PROT_WRITE, - MAP_SHARED | MAP_32BIT, - fd, r->offset); + flags, fd, r->offset); return mappings[index]; } diff --git a/common/lib/memory.cpp b/common/lib/memory.cpp index bd1af926a..d2b6fb1d0 100644 --- a/common/lib/memory.cpp +++ b/common/lib/memory.cpp @@ -39,7 +39,7 @@ HostRam::HostRamAllocator::allocateBlock(size_t size) size &= size_t(~0xFFF); } -#ifdef __linux__ +#if defined(__linux__) && !defined(__arm__) const int mmap_flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_32BIT; #else const int mmap_flags = MAP_PRIVATE | MAP_ANONYMOUS;