Index: kernel/arch/amd64/_link.ld.in
===================================================================
--- kernel/arch/amd64/_link.ld.in	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/_link.ld.in	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -9,5 +9,4 @@
  */
 
-#define __ASM__
 #include <arch/boot/boot.h>
 #include <arch/mm/page.h>
Index: kernel/arch/amd64/include/asm.h
===================================================================
--- kernel/arch/amd64/include/asm.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/include/asm.h	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -36,6 +36,4 @@
 #define KERN_amd64_ASM_H_
 
-#include <arch/pm.h>
-#include <arch/types.h>
 #include <config.h>
 
Index: kernel/arch/amd64/include/atomic.h
===================================================================
--- kernel/arch/amd64/include/atomic.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/include/atomic.h	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -39,5 +39,4 @@
 #include <arch/barrier.h>
 #include <preemption.h>
-#include <typedefs.h>
 
 static inline void atomic_inc(atomic_t *val) {
Index: kernel/arch/amd64/include/cpu.h
===================================================================
--- kernel/arch/amd64/include/cpu.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/include/cpu.h	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -55,5 +55,4 @@
 #ifndef __ASM__
 
-#include <typedefs.h>
 #include <arch/pm.h>
 
Index: kernel/arch/amd64/include/interrupt.h
===================================================================
--- kernel/arch/amd64/include/interrupt.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/include/interrupt.h	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -70,5 +70,5 @@
 
 /** This is passed to interrupt handlers */
-struct istate {
+typedef struct {
 	uint64_t rax;
 	uint64_t rbx;
@@ -91,5 +91,5 @@
 	uint64_t rflags;
 	uint64_t stack[]; /* Additional data on stack */
-};
+} istate_t;
 
 /** Return true if exception happened while in userspace */
Index: kernel/arch/amd64/include/mm/as.h
===================================================================
--- kernel/arch/amd64/include/mm/as.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/include/mm/as.h	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -45,7 +45,4 @@
 #define USTACK_ADDRESS_ARCH	(USER_ADDRESS_SPACE_END_ARCH-(PAGE_SIZE-1))
 
-typedef struct {
-} as_arch_t;
-
 #define as_constructor_arch(as, flags)		(as != as)
 #define as_destructor_arch(as)			(as != as)
@@ -55,4 +52,9 @@
 #define as_invalidate_translation_cache(as, page, cnt)
 
+typedef struct {
+} as_arch_t;
+
+#include <genarch/mm/as_pt.h>
+
 extern void as_arch_init(void);
 
Index: kernel/arch/amd64/include/mm/page.h
===================================================================
--- kernel/arch/amd64/include/mm/page.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/include/mm/page.h	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -58,9 +58,8 @@
 
 #ifndef __ASM__
-#  include <mm/page.h>
-#  include <arch/types.h>
-#endif
+#	include <mm/mm.h>
+#	include <arch/types.h>
+#	include <arch/interrupt.h>
 
-#ifndef __ASM__
 static inline uintptr_t ka2pa(uintptr_t x)
 {
@@ -70,10 +69,11 @@
 		return x - 0xffff800000000000;
 }
-# define KA2PA(x)      ka2pa((uintptr_t)x)
-# define PA2KA_CODE(x)      (((uintptr_t) (x)) + 0xffffffff80000000)
-# define PA2KA(x)      (((uintptr_t) (x)) + 0xffff800000000000)
+
+#	define KA2PA(x)      ka2pa((uintptr_t)x)
+#	define PA2KA_CODE(x)      (((uintptr_t) (x)) + 0xffffffff80000000)
+#	define PA2KA(x)      (((uintptr_t) (x)) + 0xffff800000000000)
 #else
-# define KA2PA(x)      ((x) - 0xffffffff80000000)
-# define PA2KA(x)      ((x) + 0xffffffff80000000)
+#	define KA2PA(x)      ((x) - 0xffffffff80000000)
+#	define PA2KA(x)      ((x) + 0xffffffff80000000)
 #endif
 
@@ -134,22 +134,4 @@
 #define PFERR_CODE_ID		(1<<4)
 
-/** Page Table Entry. */
-struct page_specifier {
-	unsigned present : 1;
-	unsigned writeable : 1;
-	unsigned uaccessible : 1;
-	unsigned page_write_through : 1;
-	unsigned page_cache_disable : 1;
-	unsigned accessed : 1;
-	unsigned dirty : 1;
-	unsigned unused: 1;
-	unsigned global : 1;
-	unsigned soft_valid : 1;		/**< Valid content even if present bit is cleared. */
-	unsigned avl : 2;
-	unsigned addr_12_31 : 30;
-	unsigned addr_32_51 : 21;
-	unsigned no_execute : 1;
-} __attribute__ ((packed));
-
 static inline int get_pt_flags(pte_t *pt, index_t i)
 {
Index: kernel/arch/amd64/include/pm.h
===================================================================
--- kernel/arch/amd64/include/pm.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/include/pm.h	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -37,7 +37,6 @@
 
 #ifndef __ASM__
-# include <arch/types.h>
-# include <typedefs.h>
-# include <arch/context.h>
+#	include <arch/types.h>
+#	include <arch/context.h>
 #endif
 
Index: kernel/arch/amd64/include/proc/task.h
===================================================================
--- kernel/arch/amd64/include/proc/task.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/include/proc/task.h	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -36,5 +36,4 @@
 #define KERN_amd64_TASK_H_
 
-#include <typedefs.h>
 #include <arch/types.h>
 #include <adt/bitmap.h>
Index: kernel/arch/amd64/include/proc/thread.h
===================================================================
--- kernel/arch/amd64/include/proc/thread.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/include/proc/thread.h	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -36,6 +36,4 @@
 #define KERN_amd64_THREAD_H_
 
-#include <arch/types.h>
-
 typedef struct {
 	unative_t tls;
Index: kernel/arch/amd64/include/types.h
===================================================================
--- kernel/arch/amd64/include/types.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/include/types.h	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -37,4 +37,6 @@
 
 #define NULL 0
+#define false 0
+#define true 1
 
 typedef signed char int8_t;
@@ -48,8 +50,11 @@
 typedef unsigned long long uint64_t;
 
+typedef uint64_t size_t;
+typedef uint64_t count_t;
+typedef uint64_t index_t;
+
 typedef uint64_t uintptr_t;
 typedef uint64_t pfn_t;
 
-/* Flags of processor (return value of interrupts_disable()) */
 typedef uint64_t ipl_t;
 
@@ -57,5 +62,28 @@
 typedef int64_t native_t;
 
-typedef struct page_specifier pte_t;
+typedef uint8_t bool;
+typedef uint64_t task_id_t;
+typedef uint32_t context_id_t;
+
+typedef int32_t inr_t;
+typedef int32_t devno_t;
+
+/** Page Table Entry. */
+typedef struct {
+	unsigned present : 1;
+	unsigned writeable : 1;
+	unsigned uaccessible : 1;
+	unsigned page_write_through : 1;
+	unsigned page_cache_disable : 1;
+	unsigned accessed : 1;
+	unsigned dirty : 1;
+	unsigned unused: 1;
+	unsigned global : 1;
+	unsigned soft_valid : 1;		/**< Valid content even if present bit is cleared. */
+	unsigned avl : 2;
+	unsigned addr_12_31 : 30;
+	unsigned addr_32_51 : 21;
+	unsigned no_execute : 1;
+} __attribute__ ((packed)) pte_t;
 
 #endif
Index: kernel/arch/amd64/src/cpu/cpu.c
===================================================================
--- kernel/arch/amd64/src/cpu/cpu.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/src/cpu/cpu.c	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -33,4 +33,5 @@
  */
 
+#include <cpu.h>
 #include <arch/cpu.h>
 #include <arch/cpuid.h>
@@ -40,5 +41,4 @@
 #include <arch/types.h>
 #include <print.h>
-#include <typedefs.h>
 #include <fpu_context.h>
 
@@ -57,5 +57,5 @@
 
 enum vendor {
-	VendorUnknown=0,
+	VendorUnknown = 0,
 	VendorAMD,
 	VendorIntel
Index: kernel/arch/amd64/src/ddi/ddi.c
===================================================================
--- kernel/arch/amd64/src/ddi/ddi.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/src/ddi/ddi.c	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -37,5 +37,4 @@
 #include <proc/task.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <adt/bitmap.h>
 #include <mm/slab.h>
Index: kernel/arch/amd64/src/fpu_context.c
===================================================================
--- kernel/arch/amd64/src/fpu_context.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/src/fpu_context.c	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -35,6 +35,4 @@
 
 #include <fpu_context.h>
-#include <arch.h>
-#include <cpu.h>
 
 /** Save FPU (mmx, sse) context using fxsave instruction */
Index: kernel/arch/amd64/src/mm/memory_init.c
===================================================================
--- kernel/arch/amd64/src/mm/memory_init.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/src/mm/memory_init.c	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -39,5 +39,5 @@
 
 uint8_t e820counter = 0xff;
-struct e820memmap_ e820table[MEMMAP_E820_MAX_RECORDS];
+e820memmap_t e820table[MEMMAP_E820_MAX_RECORDS];
 uint32_t e801memorysize;
 
Index: kernel/arch/amd64/src/pm.c
===================================================================
--- kernel/arch/amd64/src/pm.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/src/pm.c	(revision 0b3a78fec9fcd0f2d1ba2ad32efec95c4ad2cfdf)
@@ -35,16 +35,9 @@
 
 #include <arch/pm.h>
-#include <arch/mm/page.h>
-#include <arch/types.h>
-#include <arch/interrupt.h>
 #include <arch/asm.h>
-#include <interrupt.h>
 #include <mm/as.h>
-
-#include <config.h>
-
+#include <mm/frame.h>
 #include <memstr.h>
 #include <mm/slab.h>
-#include <debug.h>
 
 /*
