--- uClibc-0.9.29.oorig/test/mmap/mmap2.c	(revision 0)
+++ uClibc-0.9.29/test/mmap/mmap2.c	(revision 18616)
@@ -0,0 +1,41 @@
+/* When trying to map /dev/mem with offset 0xFFFFF000 on the ARM platform, mmap
+ * returns -EOVERFLOW.
+ *
+ * Since off_t is defined as a long int and the sign bit is set in the address,
+ * the shift operation shifts in ones instead of zeroes
+ * from the left. This results the offset sent to the kernel function becomes
+ * 0xFFFFFFFF instead of 0x000FFFFF with MMAP2_PAGE_SHIFT set to 12.
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/mman.h>
+
+#define FATAL do { fprintf(stderr, "Error at line %d, file %s (%d) [%s]\n", \
+  __LINE__, __FILE__, errno, strerror(errno)); exit(1); } while(0)
+
+#define MAP_SIZE 4096UL
+#define MAP_MASK (MAP_SIZE - 1)
+
+int main(int argc, char **argv) {
+    void* map_base = 0;
+    int fd;
+    off_t target = 0xfffff000;
+    if((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) FATAL;
+    printf("/dev/mem opened.\n");
+    fflush(stdout);
+
+   /* Map one page */
+    map_base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED,
+                        fd, target & ~MAP_MASK);
+    if(map_base == (void *) -1) FATAL;
+    printf("Memory mapped at address %p.\n", map_base);
+    fflush(stdout);
+    if(munmap(map_base, MAP_SIZE) == -1) FATAL;
+    close(fd);
+    return 0;
+}
--- uClibc-0.9.29.oorig/libc/sysdeps/linux/arm/mmap.c	(revision 18615)
+++ uClibc-0.9.29/libc/sysdeps/linux/arm/mmap.c	(revision 18616)
@@ -27,7 +27,6 @@ __ptr_t mmap(__ptr_t addr, size_t len, i
 
 #elif defined  (__NR_mmap2)
 #define __NR__mmap __NR_mmap2
-
 #ifndef MMAP2_PAGE_SHIFT
 # define MMAP2_PAGE_SHIFT 12
 #endif
@@ -39,9 +38,17 @@ __ptr_t mmap(__ptr_t addr, size_t len, i
 {
   /* check if offset is page aligned */
     if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1))
+    {
+        __set_errno(EINVAL);
         return MAP_FAILED;
+    }
+#ifdef __USE_FILE_OFFSET64
+  return (__ptr_t) _mmap (addr, len, prot, flags,
+						  fd,((__u_quad_t) offset >> MMAP2_PAGE_SHIFT));
+#else
   return (__ptr_t) _mmap (addr, len, prot, flags,
-						  fd,(off_t) (offset >> MMAP2_PAGE_SHIFT));
+                          fd,((__u_long) offset >> MMAP2_PAGE_SHIFT));
+#endif
 }
 #elif defined (__NR_mmap)
 # define __NR__mmap __NR_mmap
--- uClibc-0.9.29.oorig/libc/sysdeps/linux/common/mmap64.c	(revision 18615)
+++ uClibc-0.9.29/libc/sysdeps/linux/common/mmap64.c	(revision 18616)
@@ -58,8 +58,13 @@ __ptr_t mmap64(__ptr_t addr, size_t len,
 		__set_errno(EINVAL);
 		return MAP_FAILED;
 	}
-
-	return __syscall_mmap2(addr, len, prot, flags, fd, (off_t) (offset >> MMAP2_PAGE_SHIFT));
+#ifdef __USE_FILE_OFFSET64
+  return __syscall_mmap2(addr, len, prot, flags,
+                         fd,((__u_quad_t)offset >> MMAP2_PAGE_SHIFT));
+#else
+   return __syscall_mmap2(addr, len, prot, flags,
+                          fd,((__u_long)offset >> MMAP2_PAGE_SHIFT));
+#endif
 }
 
 # endif
