diff --git a/ada/posix/hw-file.adb b/ada/posix/hw-file.adb
new file mode 100644
index 0000000..ae0792b
--- /dev/null
+++ b/ada/posix/hw-file.adb
@@ -0,0 +1,68 @@
+--
+-- Copyright (C) 2017 Nico Huber <nico.h@gmx.de>
+--
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+
+with Interfaces.C;
+with Interfaces.C.Strings;
+
+with HW.Debug;
+
+use Interfaces.C;
+use Interfaces.C.Strings;
+
+package body HW.File is
+
+   READ  : constant := 16#01#;
+   WRITE : constant := 16#02#;
+
+   function c_map
+     (path  : chars_ptr;
+      addr  : Word64;
+      len   : Word32;
+      mode  : Word32;
+      copy  : int)
+      return int;
+   pragma Import (C, c_map, "hw_file_map");
+
+   procedure Map
+     (Path     : in     String;
+      Addr     : in     Word64;
+      Len      : in     Natural;
+      Readable : in     Boolean := False;
+      Writable : in     Boolean := False;
+      Map_Copy : in     Boolean := False;
+      Success  :    out Boolean)
+   is
+      use type HW.Word32;
+
+      cpath : chars_ptr := New_String (Path);
+      ret : constant int := c_map
+        (path  => cpath,
+         addr  => Addr,
+         len   => Word32 (Len),
+         mode  => (if Readable then READ else 0) or
+                  (if Writable then WRITE else 0),
+         copy  => (if Map_Copy then 1 else 0));
+   begin
+      pragma Warnings(GNAT, Off, """cpath"" modified*, but* never referenced",
+                      Reason => "Free() demands to set it to null_ptr");
+      Free (cpath);
+      pragma Warnings(GNAT, On, """cpath"" modified*, but* never referenced");
+      Success := ret = 0;
+
+      pragma Debug (not Success, Debug.Put ("Mapping failed: "));
+      pragma Debug (not Success, Debug.Put_Int32 (Int32 (ret)));
+      pragma Debug (not Success, Debug.New_Line);
+   end Map;
+
+end HW.File;
