diff --git a/src/platform/redox/mod.rs b/src/platform/redox/mod.rs
index 58117dd3205a1c9c1bd012e2cbb109caa5ee4303..4b561831eff854259d97910823f47c57b90ff8f3 100644
--- a/src/platform/redox/mod.rs
+++ b/src/platform/redox/mod.rs
@@ -1,7 +1,7 @@
 use core::{mem, ptr, result::Result as CoreResult, slice};
 use syscall::{
     self,
-    data::{Map, Stat as redox_stat, StatVfs as redox_statvfs, TimeSpec as redox_timespec},
+    data::{Map2, Stat as redox_stat, StatVfs as redox_statvfs, TimeSpec as redox_timespec},
     PtraceEvent, Result,
 };
 
@@ -658,19 +658,20 @@ impl Pal for Sys {
     }
 
     unsafe fn mmap(
-        _addr: *mut c_void,
+        addr: *mut c_void,
         len: usize,
         prot: c_int,
         flags: c_int,
         fildes: c_int,
         off: off_t,
     ) -> *mut c_void {
-        let map = Map {
+        let map = Map2 {
             offset: off as usize,
             size: len,
             flags: syscall::MapFlags::from_bits_truncate(
                 ((prot as usize) << 16) | ((flags as usize) & 0xFFFF),
             ),
+            address: addr as usize,
         };
 
         if flags & MAP_ANON == MAP_ANON {
@@ -682,13 +683,13 @@ impl Pal for Sys {
                 return !0 as *mut c_void;
             }
 
-            let addr = e(syscall::fmap(fd, &map)) as *mut c_void;
+            let addr = e(syscall::fmap2(fd, &map)) as *mut c_void;
 
             let _ = syscall::close(fd);
 
             addr
         } else {
-            e(syscall::fmap(fildes as usize, &map)) as *mut c_void
+            e(syscall::fmap2(fildes as usize, &map)) as *mut c_void
         }
     }