diff --git a/doc/efun/mkmapping b/doc/efun/mkmapping
new file mode 100644
index 0000000..75cf827
--- /dev/null
+++ b/doc/efun/mkmapping
@@ -0,0 +1,37 @@
+SYNOPSIS
+        mapping mkmapping(mixed *arr1, mixed *arr2, mixed *arr3, ...);
+        mapping mkmapping(struct st);
+
+BESCHREIBUNG
+        Liefert ein Mapping mit Keys aus <arr1> und Datenelementen aus
+        <arr2>, <arr3>.... Dem Key <arr1[0]> werden die Datenelemente
+        <arr2[0]>, <arr3[0]>... zugeordnet. Wenn die Datenarrays
+        ungleich gross sind, enthaelt das Mapping nur so viele Eintraege,
+        wie im kleinsten Datenarray enthalten sind.
+
+        Die zweite Form konvertiert die angegebene struct <st> in ein Mapping.
+        Hierbei werden die Namen des jeweiligen Elementes in der struct als
+        als Schluessel.
+
+        Gewoehnlich werden Mappings erweitert, indem einfach neue Elemente
+        eingefuegt werden. Diese Funktion ist nuetzlich, wenn der
+        ungefaehr benoetigte Speicherplatz bereits vorher bekannt ist,
+        um so den Overhead bei der Speicherallokation zu minimieren.
+        Allenfalls zu viel allozierter Speicher wird freigegeben, sobald
+        die Funktion, die die mkmapping() Anweisung enthaelt, beendet ist.
+
+BESIPIEL
+        mkmapping( ({ 1, 2 }), ({ 10, 11 }), ({ 20, 21, 22}));
+          liefert ([ 1:10;20, 2:11;21 ])
+
+        struct s { int a, b, c; };
+        mkmapping( (<s> 1, ({ 2, 3 }), 3 )
+          liefert ([ "a":1, "b":({2,3}), "c":3 ])
+
+AeNDERUNGEN
+        LDMud 3.3.433 ermoeglichte die Konversion von structs.
+
+VERGLEICHE
+        mappings(LPC), mappingp(E), m_indices(E), m_values(E),
+        m_add(E), m_delete(E), sizeof(E), widthof(E), unmkmapping(E),
+        to_struct(E)
