diff --git a/include/mm/gdt.h b/include/mm/gdt.h
new file mode 100644
index 0000000..289f911
--- /dev/null
+++ b/include/mm/gdt.h
@@ -0,0 +1,115 @@
+//----------------------------------------------------------------------------//
+// GNU GPL OS/K //
+// //
+// Desc: GDT related functions //
+// //
+// //
+// Copyright © 2018-2019 The OS/K Team //
+// //
+// This file is part of OS/K. //
+// //
+// OS/K 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 3 of the License, or //
+// any later version. //
+// //
+// OS/K 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. //
+// //
+// You should have received a copy of the GNU General Public License //
+// along with OS/K. If not, see . //
+//----------------------------------------------------------------------------//
+
+#ifndef _KERNEL_H
+#include
+#endif
+
+#ifndef _MM_GDT_H
+#define _MM_GDT_H
+
+//----------------------------------------------------------------------------//
+
+#define IOMAP_SIZE (8 * 1024)
+
+//----------------------------------------------------------------------------//
+
+// The gdt entry
+struct GdtEntry_t
+{
+ ushort lowLimit; // lower 16 bits
+ ushort lowBase; // lower 16 bits
+ uchar middleBase; // next 8 bits
+ uchar access; // determine what ring this segment can be used in
+ uchar flags;
+ uchar highBase; // last 8 bits
+} __attribute__((__packed__));
+
+struct TssDescriptor_t
+{
+ ushort lowLimit;
+ ushort lowBase;
+ uchar middleBase;
+ uchar access;
+ uchar flags;
+ uchar highBase;
+ uint veryHighBase;
+ uint reserved;
+} __attribute__ ((packed));
+
+struct Tss_t
+{
+ uint reserved1;
+
+ // Stack pointers (RSP) for privilege levels 0-2
+ ulong rsp0;
+ ulong rsp1;
+ ulong rsp2;
+ ulong reserved2;
+
+ // Interrupt stack table pointers
+ ulong ist1;
+ ulong ist2;
+ ulong ist3;
+ ulong ist4;
+ ulong ist5;
+ ulong ist6;
+ ulong ist7;
+ ulong reserved3;
+ ushort reserved4;
+
+ // Offset to the I/O permission bit map from the 64-bit TSS base
+ ushort iomap_base;
+ uchar iomap[IOMAP_SIZE];
+
+} __attribute__ ((packed)) __attribute__((aligned(8)));
+
+// The gdt pointer
+struct GdtPtr_t
+{
+ ushort limit; // upper 16 bits
+ ulong base; // address of the first entry
+} __attribute__((__packed__));
+
+//----------------------------------------------------------------------------//
+
+//
+// Initializes the descriptor table
+//
+void MmInitGdt(void);
+
+//
+// Loads the descriptor table
+//
+extern void MmLoadGdt(GdtPtr_t *gdtPtr, ushort tssOffset);
+
+
+//
+// Stores the descriptor table
+//
+extern void MmStoreGdt(void);
+
+//----------------------------------------------------------------------------//
+
+#endif
diff --git a/include/mm/map.h b/include/mm/map.h
new file mode 100644
index 0000000..d7c9ea7
--- /dev/null
+++ b/include/mm/map.h
@@ -0,0 +1,85 @@
+//----------------------------------------------------------------------------//
+// GNU GPL OS/K //
+// //
+// Desc: Mapping and checking memory related functions //
+// //
+// //
+// Copyright © 2018-2019 The OS/K Team //
+// //
+// This file is part of OS/K. //
+// //
+// OS/K 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 3 of the License, or //
+// any later version. //
+// //
+// OS/K 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. //
+// //
+// You should have received a copy of the GNU General Public License //
+// along with OS/K. If not, see . //
+//----------------------------------------------------------------------------//
+
+#ifndef _KERNEL_H
+#include
+#endif
+
+#ifndef _MM_MAP_H
+#define _MM_MAP_H
+
+//----------------------------------------------------------------------------//
+
+#define MINIMUM_RAM_SIZE 16 // Mio, the minimum RAM size.
+
+#define AVAILABLE_ZONE 1 // Fully usable RAM zone
+#define RESERVED_ZONE 2 // Used by the firmware
+#define ACPI_ZONE 3 // Used by ACPI but can be freed
+#define NVS_ZONE 4 // Dunno
+#define BADRAM_ZONE 5 // Invalid zone because material problem...
+#define MAX_ENTRIES 2048 // Max number of memory map entries
+
+//----------------------------------------------------------------------------//
+
+// The entry structure of the map
+struct MapEntry_t {
+ void *addr;
+ size_t length; // in bytes
+ uint type; // reserved or not
+} __attribute__((__packed__));
+
+// the map structure
+struct MemoryMap_t {
+ size_t length;
+ size_t freeRamSize;
+ size_t nonfreeRamSize;
+ MapEntry_t entry[MAX_ENTRIES];
+} __attribute__((__packed__));
+
+//----------------------------------------------------------------------------//
+
+//
+// Initializes the memory map structure
+//
+void MmInitMemoryMap(void);
+
+//
+// Initializes the memory map structure
+//
+void MmPrintMemoryMap(void);
+
+//
+// Returns the size of the first available memory zone
+// from the start address pointer
+//
+size_t MmGetAvailZoneSize(void *start);
+
+//
+// Returns the first available memory zone from the start address pointer
+//
+void *MmGetFirstAvailZone(void *start);
+
+//----------------------------------------------------------------------------//
+
+#endif
diff --git a/include/mm/paging.h b/include/mm/paging.h
new file mode 100644
index 0000000..c25ed08
--- /dev/null
+++ b/include/mm/paging.h
@@ -0,0 +1,92 @@
+//----------------------------------------------------------------------------//
+// GNU GPL OS/K //
+// //
+// Desc: Paging memory related functions //
+// //
+// //
+// Copyright © 2018-2019 The OS/K Team //
+// //
+// This file is part of OS/K. //
+// //
+// OS/K 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 3 of the License, or //
+// any later version. //
+// //
+// OS/K 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. //
+// //
+// You should have received a copy of the GNU General Public License //
+// along with OS/K. If not, see . //
+//----------------------------------------------------------------------------//
+
+#ifndef _KERNEL_H
+#include
+#endif
+
+#ifndef _MM_PAGING_H
+#define _MM_PAGING_H
+
+//----------------------------------------------------------------------------//
+
+#define KPAGESIZE (4 * KB)
+#define UPAGESIZE (4 * KB)
+
+//----------------------------------------------------------------------------//
+
+// Page table entry
+typedef ulong pte_t;
+
+// Page directory offset
+typedef pte_t* pde_t;
+
+// Page directory pointer offset
+typedef pde_t* pdpe_t;
+
+// Page directory L4 pointer offset
+typedef pdpe_t* pml4_t;
+
+//----------------------------------------------------------------------------//
+
+//
+// Paging activation
+//
+void MmInitPaging(void);
+
+void MmActivatePageHandler(void);
+
+//
+// Returns the address of the stack guard pages
+//
+void *MmGetStackGuards(char rank);
+
+//
+// Translate a virtual address into physical address and the opposite
+//
+void *MmTransVirtToPhyAddr(void*);
+void *MmTransPhyToVirtAddr(void* virtualAddr);
+
+//
+// Set flags to a page
+//
+void MmSetPage(void* virtualAddr, ulong flags);
+void MmUnSetPage(void* virtualAddr, ulong flags);
+
+//
+// Map a page
+//
+void MmMapPage(void* virtualAddr, void* physicalAddr, ulong flags);
+void MmUnmapPage(void* virtualAddr);
+
+//
+// Paging misc
+//
+void MmLoadPML4(void *);
+void MmEnableWriteProtect(void);
+void MmDisableWriteProtect(void);
+
+//----------------------------------------------------------------------------//
+
+#endif