Index: kernel/arch/amd64/_link.ld.in
===================================================================
--- kernel/arch/amd64/_link.ld.in	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/amd64/_link.ld.in	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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 b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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 b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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 b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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 b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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 b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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 b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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 b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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 b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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 b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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 b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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 b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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 b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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 b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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 b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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 b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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>
 
 /*
Index: kernel/arch/ia32/_link.ld.in
===================================================================
--- kernel/arch/ia32/_link.ld.in	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/_link.ld.in	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -9,5 +9,4 @@
  */
 
-#define __ASM__
 #include <arch/boot/boot.h>
 #include <arch/mm/page.h>
Index: kernel/arch/ia32/include/atomic.h
===================================================================
--- kernel/arch/ia32/include/atomic.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/include/atomic.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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/ia32/include/boot/memmap.h
===================================================================
--- kernel/arch/ia32/include/boot/memmap.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/include/boot/memmap.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -58,15 +58,13 @@
 #include <arch/types.h>
 
-struct e820memmap_ {
+typedef struct {
 	uint64_t base_address;
 	uint64_t size;
 	uint32_t type;
-} __attribute__ ((packed));
+} __attribute__ ((packed)) e820memmap_t;
 
-extern struct e820memmap_ e820table[MEMMAP_E820_MAX_RECORDS];
-
+extern e820memmap_t e820table[MEMMAP_E820_MAX_RECORDS];
 extern uint8_t e820counter; 
-
-extern uint32_t e801memorysize; /**< Size of available memory in KB. */
+extern uint32_t e801memorysize;         /**< Size of available memory in KB. */
 
 #endif
Index: kernel/arch/ia32/include/cpu.h
===================================================================
--- kernel/arch/ia32/include/cpu.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/include/cpu.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,4 @@
 #define KERN_ia32_CPU_H_
 
-#include <typedefs.h>
 #include <arch/pm.h>
 #include <arch/asm.h>
Index: kernel/arch/ia32/include/interrupt.h
===================================================================
--- kernel/arch/ia32/include/interrupt.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/include/interrupt.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -69,5 +69,5 @@
 #define VECTOR_DEBUG_IPI			(IVT_FREEBASE + 2)
 
-struct istate {
+typedef struct {
 	uint32_t eax;
 	uint32_t ecx;
@@ -88,5 +88,5 @@
 	uint32_t eflags;
 	uint32_t stack[];
-};
+} istate_t;
 
 /** Return true if exception happened while in userspace */
Index: kernel/arch/ia32/include/mm/as.h
===================================================================
--- kernel/arch/ia32/include/mm/as.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/include/mm/as.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -48,4 +48,6 @@
 } as_arch_t;
 
+#include <genarch/mm/as_pt.h>
+
 #define as_constructor_arch(as, flags)		(as != as)
 #define as_destructor_arch(as)			(as != as)
Index: kernel/arch/ia32/include/mm/asid.h
===================================================================
--- kernel/arch/ia32/include/mm/asid.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/include/mm/asid.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -43,9 +43,11 @@
 #define KERN_ia32_ASID_H_
 
-typedef int asid_t;
+#include <arch/types.h>
+
+typedef int32_t asid_t;
 
 #define ASID_MAX_ARCH		3
 
-#define asid_get()		(ASID_START+1)
+#define asid_get()		(ASID_START + 1)
 #define asid_put(asid)
 
Index: kernel/arch/ia32/include/mm/memory_init.h
===================================================================
--- kernel/arch/ia32/include/mm/memory_init.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/include/mm/memory_init.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,6 +37,4 @@
 #define KERN_ia32_MEMORY_INIT_H_
 
-#include <typedefs.h>
-
 size_t get_memory_size(void);
 
Index: kernel/arch/ia32/include/mm/page.h
===================================================================
--- kernel/arch/ia32/include/mm/page.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/include/mm/page.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -62,13 +62,13 @@
 #define PTL3_ENTRIES_ARCH	1024
 
-#define PTL0_INDEX_ARCH(vaddr)	(((vaddr)>>22)&0x3ff)
+#define PTL0_INDEX_ARCH(vaddr)	(((vaddr) >> 22) & 0x3ff)
 #define PTL1_INDEX_ARCH(vaddr)	0
 #define PTL2_INDEX_ARCH(vaddr)	0
-#define PTL3_INDEX_ARCH(vaddr)	(((vaddr)>>12)&0x3ff)
+#define PTL3_INDEX_ARCH(vaddr)	(((vaddr) >> 12) & 0x3ff)
 
-#define GET_PTL1_ADDRESS_ARCH(ptl0, i)		((pte_t *)((((pte_t *)(ptl0))[(i)].frame_address)<<12))
+#define GET_PTL1_ADDRESS_ARCH(ptl0, i)		((pte_t *)((((pte_t *)(ptl0))[(i)].frame_address) << 12))
 #define GET_PTL2_ADDRESS_ARCH(ptl1, i)		(ptl1)
 #define GET_PTL3_ADDRESS_ARCH(ptl2, i)		(ptl2)
-#define GET_FRAME_ADDRESS_ARCH(ptl3, i)		((uintptr_t)((((pte_t *)(ptl3))[(i)].frame_address)<<12))
+#define GET_FRAME_ADDRESS_ARCH(ptl3, i)		((uintptr_t)((((pte_t *)(ptl3))[(i)].frame_address) << 12))
 
 #define SET_PTL0_ADDRESS_ARCH(ptl0)		(write_cr3((uintptr_t) (ptl0)))
@@ -90,5 +90,5 @@
 #define PTE_VALID_ARCH(p)			(*((uint32_t *) (p)) != 0)
 #define PTE_PRESENT_ARCH(p)			((p)->present != 0)
-#define PTE_GET_FRAME_ARCH(p)			((p)->frame_address<<FRAME_WIDTH)
+#define PTE_GET_FRAME_ARCH(p)			((p)->frame_address << FRAME_WIDTH)
 #define PTE_WRITABLE_ARCH(p)			((p)->writeable != 0)
 #define PTE_EXECUTABLE_ARCH(p)			1
@@ -96,38 +96,20 @@
 #ifndef __ASM__
 
-#include <mm/page.h>
-#include <arch/types.h>
-#include <arch/mm/frame.h>
-#include <typedefs.h>
+#include <mm/mm.h>
+#include <arch/interrupt.h>
 
 /* Page fault error codes. */
 
 /** When bit on this position is 0, the page fault was caused by a not-present page. */
-#define PFERR_CODE_P		(1<<0)
+#define PFERR_CODE_P		(1 << 0)
 
 /** When bit on this position is 1, the page fault was caused by a write. */
-#define PFERR_CODE_RW		(1<<1)
+#define PFERR_CODE_RW		(1 << 1)
 
 /** When bit on this position is 1, the page fault was caused in user mode. */
-#define PFERR_CODE_US		(1<<2)
+#define PFERR_CODE_US		(1 << 2)
 
 /** When bit on this position is 1, a reserved bit was set in page directory. */ 
-#define PFERR_CODE_RSVD		(1<<3)	
-
-/** 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 pat : 1;
-	unsigned global : 1;
-	unsigned soft_valid : 1;	/**< Valid content even if the present bit is not set. */
-	unsigned avl : 2;
-	unsigned frame_address : 20;
-} __attribute__ ((packed));
+#define PFERR_CODE_RSVD		(1 << 3)	
 
 static inline int get_pt_flags(pte_t *pt, index_t i)
@@ -136,11 +118,11 @@
 	
 	return (
-		(!p->page_cache_disable)<<PAGE_CACHEABLE_SHIFT |
-		(!p->present)<<PAGE_PRESENT_SHIFT |
-		p->uaccessible<<PAGE_USER_SHIFT |
+		(!p->page_cache_disable) << PAGE_CACHEABLE_SHIFT |
+		(!p->present) << PAGE_PRESENT_SHIFT |
+		p->uaccessible << PAGE_USER_SHIFT |
 		1<<PAGE_READ_SHIFT |
-		p->writeable<<PAGE_WRITE_SHIFT |
+		p->writeable << PAGE_WRITE_SHIFT |
 		1<<PAGE_EXEC_SHIFT |
-		p->global<<PAGE_GLOBAL_SHIFT
+		p->global << PAGE_GLOBAL_SHIFT
 	);
 }
Index: kernel/arch/ia32/include/pm.h
===================================================================
--- kernel/arch/ia32/include/pm.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/include/pm.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -82,5 +82,4 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
 #include <arch/context.h>
 
Index: kernel/arch/ia32/include/proc/task.h
===================================================================
--- kernel/arch/ia32/include/proc/task.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/include/proc/task.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,4 @@
 #define KERN_ia32_TASK_H_
 
-#include <typedefs.h>
 #include <arch/types.h>
 #include <adt/bitmap.h>
Index: kernel/arch/ia32/include/smp/apic.h
===================================================================
--- kernel/arch/ia32/include/smp/apic.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/include/smp/apic.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -108,5 +108,5 @@
 #define ICRlo		(0x300/sizeof(uint32_t))
 #define ICRhi		(0x310/sizeof(uint32_t))
-struct icr {
+typedef struct {
 	union {
 		uint32_t lo;
@@ -131,6 +131,5 @@
 		} __attribute__ ((packed));
 	};
-} __attribute__ ((packed));
-typedef struct icr icr_t;
+} __attribute__ ((packed)) icr_t;
 
 /* End Of Interrupt. */
@@ -139,5 +138,5 @@
 /** Error Status Register. */
 #define ESR		(0x280/sizeof(uint32_t))
-union esr {
+typedef union {
 	uint32_t value;
 	uint8_t err_bitmap;
@@ -153,10 +152,9 @@
 		unsigned : 24;
 	} __attribute__ ((packed));
-};
-typedef union esr esr_t;
+} esr_t;
 
 /* Task Priority Register */
 #define TPR		(0x080/sizeof(uint32_t))
-union tpr {
+typedef union {
 	uint32_t value;
 	struct {
@@ -164,10 +162,9 @@
 		unsigned pri : 4;		/**< Task Priority. */
 	} __attribute__ ((packed));
-};
-typedef union tpr tpr_t;
+} tpr_t;
 
 /** Spurious-Interrupt Vector Register. */
 #define SVR		(0x0f0/sizeof(uint32_t))
-union svr {
+typedef union {
 	uint32_t value;
 	struct {
@@ -177,10 +174,9 @@
 		unsigned : 22;			/**< Reserved. */
 	} __attribute__ ((packed));
-};
-typedef union svr svr_t;
+} svr_t;
 
 /** Time Divide Configuration Register. */
 #define TDCR		(0x3e0/sizeof(uint32_t))
-union tdcr {
+typedef union {
 	uint32_t value;
 	struct {
@@ -188,6 +184,5 @@
 		unsigned : 28;			/**< Reserved. */
 	} __attribute__ ((packed));
-};
-typedef union tdcr tdcr_t;
+} tdcr_t;
 
 /* Initial Count Register for Timer */
@@ -199,5 +194,5 @@
 /** LVT Timer register. */
 #define LVT_Tm		(0x320/sizeof(uint32_t))
-union lvt_tm {
+typedef union {
 	uint32_t value;
 	struct {
@@ -210,11 +205,10 @@
 		unsigned : 14;		/**< Reserved. */
 	} __attribute__ ((packed));
-};
-typedef union lvt_tm lvt_tm_t;
+} lvt_tm_t;
 
 /** LVT LINT registers. */
 #define LVT_LINT0	(0x350/sizeof(uint32_t))
 #define LVT_LINT1	(0x360/sizeof(uint32_t))
-union lvt_lint {
+typedef union {
 	uint32_t value;
 	struct {
@@ -229,10 +223,9 @@
 		unsigned : 15;			/**< Reserved. */
 	} __attribute__ ((packed));
-};
-typedef union lvt_lint lvt_lint_t;
+} lvt_lint_t;
 
 /** LVT Error register. */
 #define LVT_Err		(0x370/sizeof(uint32_t))
-union lvt_error {
+typedef union {
 	uint32_t value;
 	struct {
@@ -244,10 +237,9 @@
 		unsigned : 15;		/**< Reserved. */
 	} __attribute__ ((packed));
-};
-typedef union lvt_error lvt_error_t;
+} lvt_error_t;
 
 /** Local APIC ID Register. */
 #define L_APIC_ID	(0x020/sizeof(uint32_t))
-union l_apic_id {
+typedef union {
 	uint32_t value;
 	struct {
@@ -255,6 +247,5 @@
 		uint8_t apic_id;		/**< Local APIC ID. */
 	} __attribute__ ((packed));
-};
-typedef union l_apic_id l_apic_id_t;
+} l_apic_id_t;
 
 /** Local APIC Version Register */
@@ -267,5 +258,5 @@
 /** Logical Destination Register. */
 #define  LDR		(0x0d0/sizeof(uint32_t))
-union ldr {
+typedef union {
 	uint32_t value;
 	struct {
@@ -273,10 +264,9 @@
 		uint8_t id;		/**< Logical APIC ID. */
 	} __attribute__ ((packed));
-};
-typedef union ldr ldr_t;
+} ldr_t;
 
 /** Destination Format Register. */
 #define DFR		(0x0e0/sizeof(uint32_t))
-union dfr {
+typedef union {
 	uint32_t value;
 	struct {
@@ -284,6 +274,5 @@
 		unsigned model : 4;	/**< Model. */
 	} __attribute__ ((packed));
-};
-typedef union dfr dfr_t;
+} dfr_t;
 
 /* IO APIC */
@@ -297,5 +286,5 @@
 
 /** I/O Register Select Register. */
-union io_regsel {
+typedef union {
 	uint32_t value;
 	struct {
@@ -303,9 +292,8 @@
 		unsigned : 24;		/**< Reserved. */
 	} __attribute__ ((packed));
-};
-typedef union io_regsel io_regsel_t;
+} io_regsel_t;
 
 /** I/O Redirection Register. */
-struct io_redirection_reg {
+typedef struct io_redirection_reg {
 	union {
 		uint32_t lo;
@@ -330,10 +318,9 @@
 	};
 	
-} __attribute__ ((packed));
-typedef struct io_redirection_reg io_redirection_reg_t;
+} __attribute__ ((packed)) io_redirection_reg_t;
 
 
 /** IO APIC Identification Register. */
-union io_apic_id {
+typedef union {
 	uint32_t value;
 	struct {
@@ -342,6 +329,5 @@
 		unsigned : 4;		/**< Reserved. */
 	} __attribute__ ((packed));
-};
-typedef union io_apic_id io_apic_id_t;
+} io_apic_id_t;
 
 extern volatile uint32_t *l_apic;
Index: kernel/arch/ia32/include/smp/mps.h
===================================================================
--- kernel/arch/ia32/include/smp/mps.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/include/smp/mps.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,5 +37,4 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
 #include <synch/waitq.h>
 #include <config.h>
Index: kernel/arch/ia32/include/smp/smp.h
===================================================================
--- kernel/arch/ia32/include/smp/smp.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/include/smp/smp.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,5 +37,4 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
 
 /** SMP config opertaions interface. */
Index: kernel/arch/ia32/include/types.h
===================================================================
--- kernel/arch/ia32/include/types.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/include/types.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,4 +37,6 @@
 
 #define NULL 0
+#define false 0
+#define true 1
 
 typedef signed char int8_t;
@@ -48,4 +50,8 @@
 typedef unsigned long long uint64_t;
 
+typedef uint32_t size_t;
+typedef uint32_t count_t;
+typedef uint32_t index_t;
+
 typedef uint32_t uintptr_t;
 typedef uint32_t pfn_t;
@@ -56,5 +62,26 @@
 typedef int32_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 pat : 1;
+	unsigned global : 1;
+	unsigned soft_valid : 1;	/**< Valid content even if the present bit is not set. */
+	unsigned avl : 2;
+	unsigned frame_address : 20;
+} __attribute__ ((packed)) pte_t;
 
 #endif
Index: kernel/arch/ia32/src/boot/boot.S
===================================================================
--- kernel/arch/ia32/src/boot/boot.S	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/src/boot/boot.S	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -75,5 +75,5 @@
 
 	mov $VESA_INIT_SEGMENT << 4, %edi
-	jmpl %edi
+	jmpl *%edi
 	
 	vesa_meeting_point:
Index: kernel/arch/ia32/src/cpu/cpu.c
===================================================================
--- kernel/arch/ia32/src/cpu/cpu.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/src/cpu/cpu.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -40,5 +40,4 @@
 #include <arch/types.h>
 #include <print.h>
-#include <typedefs.h>
 #include <fpu_context.h>
 
Index: kernel/arch/ia32/src/ddi/ddi.c
===================================================================
--- kernel/arch/ia32/src/ddi/ddi.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/src/ddi/ddi.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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/ia32/src/drivers/vesa.c
===================================================================
--- kernel/arch/ia32/src/drivers/vesa.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/src/drivers/vesa.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -48,5 +48,4 @@
 #include <arch/asm.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <memstr.h>
 #include <bitops.h>
Index: kernel/arch/ia32/src/ia32.c
===================================================================
--- kernel/arch/ia32/src/ia32.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/src/ia32.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,4 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
 
 #include <arch/pm.h>
Index: kernel/arch/ia32/src/mm/as.c
===================================================================
--- kernel/arch/ia32/src/mm/as.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/src/mm/as.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -35,5 +35,5 @@
 
 #include <arch/mm/as.h>
-#include <genarch/mm/as_pt.h>
+#include <genarch/mm/page_pt.h>
 
 /** Architecture dependent address space init. */
Index: kernel/arch/ia32/src/mm/memory_init.c
===================================================================
--- kernel/arch/ia32/src/mm/memory_init.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/src/mm/memory_init.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -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/ia32/src/pm.c
===================================================================
--- kernel/arch/ia32/src/pm.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/src/pm.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,4 @@
 #include <config.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <arch/interrupt.h>
 #include <arch/asm.h>
Index: kernel/arch/ia32/src/smp/mps.c
===================================================================
--- kernel/arch/ia32/src/smp/mps.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32/src/smp/mps.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -43,5 +43,4 @@
 #include <func.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <cpu.h>
 #include <arch/asm.h>
Index: kernel/arch/ia32xen/_link.ld.in
===================================================================
--- kernel/arch/ia32xen/_link.ld.in	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/_link.ld.in	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -2,6 +2,5 @@
  */
 
-#define __ASM__
-#include <arch/boot/boot.h>
+#include <arch/hypercall.h>
 #include <arch/mm/page.h>
 
Index: kernel/arch/ia32xen/include/boot/boot.h
===================================================================
--- kernel/arch/ia32xen/include/boot/boot.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ 	(revision )
@@ -1,190 +1,0 @@
-/*
- * Copyright (c) 2006 Martin Decky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - The name of the author may not be used to endorse or promote products
- *   derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/** @addtogroup ia32xen
- * @{
- */
-/** @file
- */
-
-#ifndef KERN_ia32xen_BOOT_H_
-#define KERN_ia32xen_BOOT_H_
-
-#define GUEST_CMDLINE	1024
-#define VIRT_CPUS	32
-#define START_INFO_SIZE	1104
-
-#define BOOT_OFFSET		0x0000
-#define TEMP_STACK_SIZE 0x1000
-
-#define XEN_VIRT_START	0xFC000000
-#define XEN_CS			0xe019
-
-#define XEN_ELFNOTE_INFO			0
-#define XEN_ELFNOTE_ENTRY			1
-#define XEN_ELFNOTE_HYPERCALL_PAGE	2
-#define XEN_ELFNOTE_VIRT_BASE		3
-#define XEN_ELFNOTE_PADDR_OFFSET	4
-#define XEN_ELFNOTE_XEN_VERSION 	5
-#define XEN_ELFNOTE_GUEST_OS		6
-#define XEN_ELFNOTE_GUEST_VERSION	7
-#define XEN_ELFNOTE_LOADER			8
-#define XEN_ELFNOTE_PAE_MODE		9
-#define XEN_ELFNOTE_FEATURES		10
-#define XEN_ELFNOTE_BSD_SYMTAB		11
-
-#ifndef __ASM__
-
-#define mp_map ((pfn_t *) XEN_VIRT_START)
-
-#define SIF_PRIVILEGED	(1 << 0)  /**< Privileged domain */
-#define SIF_INITDOMAIN	(1 << 1)  /**< Iinitial control domain */
-
-#include <arch/types.h>
-
-typedef uint32_t evtchn_t;
-
-typedef struct {
-	uint32_t version;
-	uint32_t pad0;
-	uint64_t tsc_timestamp;   /**< TSC at last update of time vals */
-	uint64_t system_time;     /**< Time, in nanosecs, since boot */
-	uint32_t tsc_to_system_mul;
-	int8_t tsc_shift;
-	int8_t pad1[3];
-} vcpu_time_info_t;
-
-typedef struct {
-	uint32_t cr2;
-	uint32_t pad[5];
-} arch_vcpu_info_t;
-
-typedef struct arch_shared_info {
-	pfn_t max_pfn;                  /**< max pfn that appears in table */
-	uint32_t pfn_to_mfn_frame_list_list;
-    uint32_t nmi_reason;
-} arch_shared_info_t;
-
-typedef struct {
-	uint8_t evtchn_upcall_pending;
-	ipl_t evtchn_upcall_mask;
-	evtchn_t evtchn_pending_sel;
-	arch_vcpu_info_t arch;
-	vcpu_time_info_t time;
-} vcpu_info_t;
-
-typedef struct {
-	vcpu_info_t vcpu_info[VIRT_CPUS];
-	evtchn_t evtchn_pending[32];
-	evtchn_t evtchn_mask[32];
-	
-	uint32_t wc_version;                  /**< Version counter */
-	uint32_t wc_sec;                      /**< Secs  00:00:00 UTC, Jan 1, 1970 */
-	uint32_t wc_nsec;                     /**< Nsecs 00:00:00 UTC, Jan 1, 1970 */
-	
-	arch_shared_info_t arch;
-} shared_info_t;
-
-typedef struct {
-	int8_t magic[32];           /**< "xen-<version>-<platform>" */
-	uint32_t frames;            /**< Available frames */
-	shared_info_t *shared_info; /**< Shared info structure (machine address) */
-	uint32_t flags;             /**< SIF_xxx flags */
-	pfn_t store_mfn;            /**< Shared page (machine page) */
-	evtchn_t store_evtchn;      /**< Event channel for store communication */
-	
-	union {
-        struct {
-			pfn_t mfn;          /**< Console page (machine page) */
-			evtchn_t evtchn;    /**< Event channel for console messages */
-        } domU;
-		
-        struct {
-            uint32_t info_off;  /**< Offset of console_info struct */
-            uint32_t info_size; /**< Size of console_info struct from start */
-        } dom0;
-    } console;
-	
-	pte_t *ptl0;                /**< Boot PTL0 (kernel address) */
-	uint32_t pt_frames;         /**< Number of bootstrap page table frames */
-	pfn_t *pm_map;              /**< Physical->machine frame map (kernel address) */
-	void *mod_start;            /**< Modules start (kernel address) */
-	uint32_t mod_len;           /**< Modules size (bytes) */
-	int8_t cmd_line[GUEST_CMDLINE];
-} start_info_t;
-
-#define XEN_CONSOLE_VGA		0x03
-#define XEN_CONSOLE_VESA	0x23
-
-typedef struct {
-    uint8_t video_type;  
-
-    union {
-        struct {
-            uint16_t font_height;
-            uint16_t cursor_x;
-			uint16_t cursor_y;
-            uint16_t rows;
-			uint16_t columns;
-        } vga;
-
-        struct {
-            uint16_t width;
-			uint16_t height;
-            uint16_t bytes_per_line;
-            uint16_t bits_per_pixel;
-            uint32_t lfb_base;
-            uint32_t lfb_size;
-            uint8_t red_pos;
-			uint8_t red_size;
-            uint8_t green_pos;
-			uint8_t green_size;
-            uint8_t blue_pos;
-			uint8_t blue_size;
-            uint8_t rsvd_pos;
-			uint8_t rsvd_size;
-        } vesa_lfb;
-    } info;
-} console_info_t;
-
-typedef struct {
-	pfn_t start;
-	pfn_t size;
-	pfn_t reserved;
-} memzone_t;
-
-extern start_info_t start_info;
-extern shared_info_t shared_info;
-extern memzone_t meminfo;
-
-#endif
-
-#endif
-
-/** @}
- */
Index: kernel/arch/ia32xen/include/hypercall.h
===================================================================
--- kernel/arch/ia32xen/include/hypercall.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/include/hypercall.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -30,28 +30,39 @@
 #define KERN_ia32xen_HYPERCALL_H_
 
-#include <arch/types.h>
-#include <macros.h>
-
-typedef uint16_t domid_t;
-
-typedef struct {
-	uint8_t vector;     /**< Exception vector */
-	uint8_t flags;      /**< 0-3: privilege level; 4: clear event enable */
-	uint16_t cs;        /**< Code selector */
-	void *address;      /**< Code offset */
-} trap_info_t;
-
-
-typedef struct {
-	evtchn_t port;
-} evtchn_send_t;
-
-typedef struct {
-	uint32_t cmd;
-	union {
-		evtchn_send_t send;
-    };
-} evtchn_op_t;
-
+#ifndef __ASM__
+#	include <arch/types.h>
+#	include <macros.h>
+#endif
+
+#define GUEST_CMDLINE	1024
+#define VIRT_CPUS	32
+#define START_INFO_SIZE	1104
+
+#define BOOT_OFFSET		0x0000
+#define TEMP_STACK_SIZE 0x1000
+
+#define XEN_VIRT_START	0xFC000000
+#define XEN_CS			0xe019
+
+#define XEN_ELFNOTE_INFO			0
+#define XEN_ELFNOTE_ENTRY			1
+#define XEN_ELFNOTE_HYPERCALL_PAGE	2
+#define XEN_ELFNOTE_VIRT_BASE		3
+#define XEN_ELFNOTE_PADDR_OFFSET	4
+#define XEN_ELFNOTE_XEN_VERSION 	5
+#define XEN_ELFNOTE_GUEST_OS		6
+#define XEN_ELFNOTE_GUEST_VERSION	7
+#define XEN_ELFNOTE_LOADER			8
+#define XEN_ELFNOTE_PAE_MODE		9
+#define XEN_ELFNOTE_FEATURES		10
+#define XEN_ELFNOTE_BSD_SYMTAB		11
+
+#define mp_map ((pfn_t *) XEN_VIRT_START)
+
+#define SIF_PRIVILEGED	(1 << 0)  /**< Privileged domain */
+#define SIF_INITDOMAIN	(1 << 1)  /**< Iinitial control domain */
+
+#define XEN_CONSOLE_VGA		0x03
+#define XEN_CONSOLE_VESA	0x23
 
 #define XEN_SET_TRAP_TABLE		0
@@ -104,4 +115,136 @@
 #define DOMID_IO   (0x7FF1U)
 
+#ifndef __ASM__
+
+typedef uint16_t domid_t;
+typedef uint32_t evtchn_t;
+
+typedef struct {
+	uint32_t version;
+	uint32_t pad0;
+	uint64_t tsc_timestamp;   /**< TSC at last update of time vals */
+	uint64_t system_time;     /**< Time, in nanosecs, since boot */
+	uint32_t tsc_to_system_mul;
+	int8_t tsc_shift;
+	int8_t pad1[3];
+} vcpu_time_info_t;
+
+typedef struct {
+	uint32_t cr2;
+	uint32_t pad[5];
+} arch_vcpu_info_t;
+
+typedef struct arch_shared_info {
+	pfn_t max_pfn;                  /**< max pfn that appears in table */
+	uint32_t pfn_to_mfn_frame_list_list;
+    uint32_t nmi_reason;
+} arch_shared_info_t;
+
+typedef struct {
+	uint8_t evtchn_upcall_pending;
+	ipl_t evtchn_upcall_mask;
+	evtchn_t evtchn_pending_sel;
+	arch_vcpu_info_t arch;
+	vcpu_time_info_t time;
+} vcpu_info_t;
+
+typedef struct {
+	vcpu_info_t vcpu_info[VIRT_CPUS];
+	evtchn_t evtchn_pending[32];
+	evtchn_t evtchn_mask[32];
+	
+	uint32_t wc_version;                  /**< Version counter */
+	uint32_t wc_sec;                      /**< Secs  00:00:00 UTC, Jan 1, 1970 */
+	uint32_t wc_nsec;                     /**< Nsecs 00:00:00 UTC, Jan 1, 1970 */
+	
+	arch_shared_info_t arch;
+} shared_info_t;
+
+typedef struct {
+	int8_t magic[32];           /**< "xen-<version>-<platform>" */
+	uint32_t frames;            /**< Available frames */
+	shared_info_t *shared_info; /**< Shared info structure (machine address) */
+	uint32_t flags;             /**< SIF_xxx flags */
+	pfn_t store_mfn;            /**< Shared page (machine page) */
+	evtchn_t store_evtchn;      /**< Event channel for store communication */
+	
+	union {
+        struct {
+			pfn_t mfn;          /**< Console page (machine page) */
+			evtchn_t evtchn;    /**< Event channel for console messages */
+        } domU;
+		
+        struct {
+            uint32_t info_off;  /**< Offset of console_info struct */
+            uint32_t info_size; /**< Size of console_info struct from start */
+        } dom0;
+    } console;
+	
+	pte_t *ptl0;                /**< Boot PTL0 (kernel address) */
+	uint32_t pt_frames;         /**< Number of bootstrap page table frames */
+	pfn_t *pm_map;              /**< Physical->machine frame map (kernel address) */
+	void *mod_start;            /**< Modules start (kernel address) */
+	uint32_t mod_len;           /**< Modules size (bytes) */
+	int8_t cmd_line[GUEST_CMDLINE];
+} start_info_t;
+
+typedef struct {
+    uint8_t video_type;  
+
+    union {
+        struct {
+            uint16_t font_height;
+            uint16_t cursor_x;
+			uint16_t cursor_y;
+            uint16_t rows;
+			uint16_t columns;
+        } vga;
+
+        struct {
+            uint16_t width;
+			uint16_t height;
+            uint16_t bytes_per_line;
+            uint16_t bits_per_pixel;
+            uint32_t lfb_base;
+            uint32_t lfb_size;
+            uint8_t red_pos;
+			uint8_t red_size;
+            uint8_t green_pos;
+			uint8_t green_size;
+            uint8_t blue_pos;
+			uint8_t blue_size;
+            uint8_t rsvd_pos;
+			uint8_t rsvd_size;
+        } vesa_lfb;
+    } info;
+} console_info_t;
+
+typedef struct {
+	pfn_t start;
+	pfn_t size;
+	pfn_t reserved;
+} memzone_t;
+
+extern start_info_t start_info;
+extern shared_info_t shared_info;
+extern memzone_t meminfo;
+
+typedef struct {
+	uint8_t vector;     /**< Exception vector */
+	uint8_t flags;      /**< 0-3: privilege level; 4: clear event enable */
+	uint16_t cs;        /**< Code selector */
+	void *address;      /**< Code offset */
+} trap_info_t;
+
+typedef struct {
+	evtchn_t port;
+} evtchn_send_t;
+
+typedef struct {
+	uint32_t cmd;
+	union {
+		evtchn_send_t send;
+    };
+} evtchn_op_t;
 
 #define force_evtchn_callback() ((void) xen_version(0, 0))
@@ -235,2 +378,4 @@
 
 #endif
+
+#endif
Index: kernel/arch/ia32xen/include/mm/as.h
===================================================================
--- kernel/arch/ia32xen/include/mm/as.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/include/mm/as.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -48,4 +48,6 @@
 } as_arch_t;
 
+#include <genarch/mm/as_pt.h>
+
 #define as_constructor_arch(as, flags)		(as != as)
 #define as_destructor_arch(as)			(as != as)
Index: kernel/arch/ia32xen/include/mm/frame.h
===================================================================
--- kernel/arch/ia32xen/include/mm/frame.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/include/mm/frame.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -43,7 +43,4 @@
 #ifndef __ASM__
 
-#include <arch/types.h>
-#include <arch/boot/boot.h>
-
 #define PA2MA(x)	((start_info.pm_map[((uintptr_t) (x)) >> 12] << 12) + (((uintptr_t) (x)) & 0xfff))
 #define MA2PA(x)	((mp_map[((uintptr_t) (x)) >> 12] << 12) + (((uintptr_t) (x)) & 0xfff))
Index: kernel/arch/ia32xen/include/mm/memory_init.h
===================================================================
--- kernel/arch/ia32xen/include/mm/memory_init.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/include/mm/memory_init.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,5 +37,5 @@
 #define KERN_ia32xen_MEMORY_INIT_H_
 
-#include <typedefs.h>
+#include <arch/types.h>
 
 size_t get_memory_size(void);
Index: kernel/arch/ia32xen/include/mm/page.h
===================================================================
--- kernel/arch/ia32xen/include/mm/page.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/include/mm/page.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -122,9 +122,7 @@
 #ifndef __ASM__
 
-#include <mm/page.h>
-#include <arch/types.h>
-#include <arch/mm/frame.h>
-#include <typedefs.h>
+#include <mm/mm.h>
 #include <arch/hypercall.h>
+#include <arch/interrupt.h>
 
 /* Page fault error codes. */
@@ -141,20 +139,4 @@
 /** When bit on this position is 1, a reserved bit was set in page directory. */ 
 #define PFERR_CODE_RSVD		(1 << 3)
-
-/** 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 pat : 1;
-	unsigned global : 1;
-	unsigned soft_valid : 1;	/**< Valid content even if the present bit is not set. */
-	unsigned avl : 2;
-	unsigned frame_address : 20;
-} __attribute__ ((packed));
 
 typedef struct {
Index: kernel/arch/ia32xen/include/pm.h
===================================================================
--- kernel/arch/ia32xen/include/pm.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/include/pm.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -70,5 +70,4 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
 #include <arch/context.h>
 
Index: kernel/arch/ia32xen/include/types.h
===================================================================
--- kernel/arch/ia32xen/include/types.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/include/types.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,4 +37,6 @@
 
 #define NULL 0
+#define false 0
+#define true 1
 
 typedef signed char int8_t;
@@ -48,4 +50,8 @@
 typedef unsigned long long uint64_t;
 
+typedef uint32_t size_t;
+typedef uint32_t count_t;
+typedef uint32_t index_t;
+
 typedef uint32_t uintptr_t;
 typedef uint32_t pfn_t;
@@ -56,5 +62,26 @@
 typedef int32_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 pat : 1;
+	unsigned global : 1;
+	unsigned soft_valid : 1;	/**< Valid content even if the present bit is not set. */
+	unsigned avl : 2;
+	unsigned frame_address : 20;
+} __attribute__ ((packed)) pte_t;
 
 #endif
Index: kernel/arch/ia32xen/src/boot/boot.S
===================================================================
--- kernel/arch/ia32xen/src/boot/boot.S	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/src/boot/boot.S	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -27,7 +27,6 @@
 #
 
-#include <arch/boot/boot.h>
 #include <arch/mm/page.h>
-#include <arch/pm.h>
+#include <arch/hypercall.h>
 
 #define ELFNOTE(name, type, desctype, descval) \
Index: kernel/arch/ia32xen/src/ia32xen.c
===================================================================
--- kernel/arch/ia32xen/src/ia32xen.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/src/ia32xen.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,5 +37,4 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
 #include <align.h>
 
@@ -55,5 +54,4 @@
 #include <arch/bios/bios.h>
 
-#include <arch/boot/boot.h>
 #include <arch/mm/memory_init.h>
 #include <interrupt.h>
Index: kernel/arch/ia32xen/src/mm/as.c
===================================================================
--- kernel/arch/ia32xen/src/mm/as.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/src/mm/as.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -35,5 +35,5 @@
 
 #include <arch/mm/as.h>
-#include <genarch/mm/as_pt.h>
+#include <genarch/mm/page_pt.h>
 
 /** Architecture dependent address space init. */
Index: kernel/arch/ia32xen/src/mm/memory_init.c
===================================================================
--- kernel/arch/ia32xen/src/mm/memory_init.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/src/mm/memory_init.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -35,5 +35,4 @@
 #include <arch/mm/memory_init.h>
 #include <arch/mm/page.h>
-#include <arch/boot/boot.h>
 #include <print.h>
 #include <mm/frame.h>
Index: kernel/arch/ia32xen/src/pm.c
===================================================================
--- kernel/arch/ia32xen/src/pm.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/src/pm.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,4 @@
 #include <config.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <arch/interrupt.h>
 #include <arch/asm.h>
@@ -44,5 +43,4 @@
 #include <mm/slab.h>
 #include <memstr.h>
-#include <arch/boot/boot.h>
 #include <interrupt.h>
 
Index: kernel/arch/ia32xen/src/smp/apic.c
===================================================================
--- kernel/arch/ia32xen/src/smp/apic.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/src/smp/apic.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,5 +37,4 @@
 #include <arch/smp/ap.h>
 #include <arch/smp/mps.h>
-#include <arch/boot/boot.h>
 #include <mm/page.h>
 #include <time/delay.h>
Index: kernel/arch/ia32xen/src/smp/mps.c
===================================================================
--- kernel/arch/ia32xen/src/smp/mps.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/src/smp/mps.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -43,5 +43,4 @@
 #include <func.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <cpu.h>
 #include <arch/asm.h>
Index: kernel/arch/ia32xen/src/smp/smp.c
===================================================================
--- kernel/arch/ia32xen/src/smp/smp.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia32xen/src/smp/smp.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,5 +37,4 @@
 #include <arch/smp/mps.h>
 #include <arch/smp/ap.h>
-#include <arch/boot/boot.h>
 #include <genarch/acpi/acpi.h>
 #include <genarch/acpi/madt.h>
Index: kernel/arch/ia64/_link.ld.in
===================================================================
--- kernel/arch/ia64/_link.ld.in	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia64/_link.ld.in	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -6,6 +6,4 @@
  *
  */
-
-#define __ASM__
 
 ENTRY(kernel_image_start)
Index: kernel/arch/ia64/include/context.h
===================================================================
--- kernel/arch/ia64/include/context.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia64/include/context.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -38,5 +38,4 @@
 #include <arch/types.h>
 #include <arch/register.h>
-#include <typedefs.h>
 #include <align.h>
 #include <arch/stack.h>
@@ -48,5 +47,5 @@
  * One item is put onto the stack to support get_stack_base().
  */
-#define SP_DELTA	(0+ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT))
+#define SP_DELTA	(0 + ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT))
 
 #ifdef context_set
@@ -106,25 +105,25 @@
 	uint64_t pr;
 
-	__r128 f2 __attribute__ ((aligned(16)));
-	__r128 f3;
-	__r128 f4;
-	__r128 f5;
+	uint128_t f2 __attribute__ ((aligned(16)));
+	uint128_t f3;
+	uint128_t f4;
+	uint128_t f5;
 
-	__r128 f16;
-	__r128 f17;
-	__r128 f18;
-	__r128 f19;
-	__r128 f20;
-	__r128 f21;
-	__r128 f22;
-	__r128 f23;
-	__r128 f24;
-	__r128 f25;
-	__r128 f26;
-	__r128 f27;
-	__r128 f28;
-	__r128 f29;
-	__r128 f30;
-	__r128 f31;
+	uint128_t f16;
+	uint128_t f17;
+	uint128_t f18;
+	uint128_t f19;
+	uint128_t f20;
+	uint128_t f21;
+	uint128_t f22;
+	uint128_t f23;
+	uint128_t f24;
+	uint128_t f25;
+	uint128_t f26;
+	uint128_t f27;
+	uint128_t f28;
+	uint128_t f29;
+	uint128_t f30;
+	uint128_t f31;
 	
 	ipl_t ipl;
Index: kernel/arch/ia64/include/cpu.h
===================================================================
--- kernel/arch/ia64/include/cpu.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia64/include/cpu.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,6 +37,6 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
 #include <arch/register.h>
+#include <arch/asm.h>
 
 #define FAMILY_ITANIUM	0x7
Index: kernel/arch/ia64/include/fpu_context.h
===================================================================
--- kernel/arch/ia64/include/fpu_context.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia64/include/fpu_context.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -44,5 +44,5 @@
 
 typedef struct {
-	__r128 fr[FRS];
+	uint128_t fr[FRS];
 } fpu_context_t;
 
Index: kernel/arch/ia64/include/interrupt.h
===================================================================
--- kernel/arch/ia64/include/interrupt.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia64/include/interrupt.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,4 @@
 #define KERN_ia64_INTERRUPT_H_
 
-#include <typedefs.h>
 #include <arch/types.h>
 #include <arch/register.h>
@@ -65,35 +64,35 @@
 #define EOI	0		/**< The actual value doesn't matter. */
 
-struct istate {
-	__r128 f2;
-	__r128 f3;
-	__r128 f4;
-	__r128 f5;
-	__r128 f6;
-	__r128 f7;
-	__r128 f8;
-	__r128 f9;
-	__r128 f10;
-	__r128 f11;
-	__r128 f12;
-	__r128 f13;
-	__r128 f14;
-	__r128 f15;
-	__r128 f16;
-	__r128 f17;
-	__r128 f18;
-	__r128 f19;
-	__r128 f20;
-	__r128 f21;
-	__r128 f22;
-	__r128 f23;
-	__r128 f24;
-	__r128 f25;
-	__r128 f26;
-	__r128 f27;
-	__r128 f28;
-	__r128 f29;
-	__r128 f30;
-	__r128 f31;
+typedef struct {
+	uint128_t f2;
+	uint128_t f3;
+	uint128_t f4;
+	uint128_t f5;
+	uint128_t f6;
+	uint128_t f7;
+	uint128_t f8;
+	uint128_t f9;
+	uint128_t f10;
+	uint128_t f11;
+	uint128_t f12;
+	uint128_t f13;
+	uint128_t f14;
+	uint128_t f15;
+	uint128_t f16;
+	uint128_t f17;
+	uint128_t f18;
+	uint128_t f19;
+	uint128_t f20;
+	uint128_t f21;
+	uint128_t f22;
+	uint128_t f23;
+	uint128_t f24;
+	uint128_t f25;
+	uint128_t f26;
+	uint128_t f27;
+	uint128_t f28;
+	uint128_t f29;
+	uint128_t f30;
+	uint128_t f31;
 		
 	uintptr_t ar_bsp;
@@ -120,5 +119,5 @@
 	uint64_t in3;
 	uint64_t in4;
-};
+} istate_t;
 
 static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr)
Index: kernel/arch/ia64/include/mm/as.h
===================================================================
--- kernel/arch/ia64/include/mm/as.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia64/include/mm/as.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -48,4 +48,6 @@
 } as_arch_t;
 
+#include <genarch/mm/as_ht.h>
+
 #define as_constructor_arch(as, flags)		(as != as)
 #define as_destructor_arch(as)			(as != as)
Index: kernel/arch/ia64/include/mm/page.h
===================================================================
--- kernel/arch/ia64/include/mm/page.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia64/include/mm/page.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -86,10 +86,10 @@
 #ifndef __ASM__
 
+#include <arch/mm/as.h>
 #include <arch/mm/frame.h>
+#include <arch/interrupt.h>
 #include <arch/barrier.h>
-#include <genarch/mm/page_ht.h>
 #include <arch/mm/asid.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <debug.h>
 
Index: kernel/arch/ia64/include/mm/tlb.h
===================================================================
--- kernel/arch/ia64/include/mm/tlb.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia64/include/mm/tlb.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -43,5 +43,4 @@
 #include <arch/interrupt.h>
 #include <arch/types.h>
-#include <typedefs.h>
 
 /** Data and instruction Translation Register indices. */
Index: kernel/arch/ia64/include/types.h
===================================================================
--- kernel/arch/ia64/include/types.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia64/include/types.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,10 +36,16 @@
 #define KERN_ia64_TYPES_H_
 
-#define NULL	0
+#define NULL 0
+#define false 0
+#define true 1
 
 typedef signed char int8_t;
-typedef signed short int int16_t;
+typedef signed short int16_t;
 typedef signed int int32_t;
 typedef signed long int64_t;
+typedef struct {
+	int64_t lo;
+	int64_t hi;
+} int128_t;
 
 typedef unsigned char uint8_t;
@@ -47,13 +53,12 @@
 typedef unsigned int uint32_t;
 typedef unsigned long uint64_t;
+typedef struct {
+	uint64_t lo;
+	uint64_t hi;
+} uint128_t;
 
-typedef unsigned char __r8; 			/* Reserve byte */
-typedef unsigned short __r16;
-typedef unsigned int __r32;
-typedef unsigned long __r64;
-typedef struct __r128 {
-	__r64 lo;
-	__r64 hi;
-} __r128;
+typedef uint64_t size_t;
+typedef uint64_t count_t;
+typedef uint64_t index_t;
 
 typedef uint64_t uintptr_t;
@@ -65,5 +70,10 @@
 typedef int64_t native_t;
 
-typedef struct pte 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;
 
 #endif
Index: kernel/arch/ia64/src/ddi/ddi.c
===================================================================
--- kernel/arch/ia64/src/ddi/ddi.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia64/src/ddi/ddi.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,4 @@
 #include <proc/task.h>
 #include <arch/types.h>
-#include <typedefs.h>
 
 /** Enable I/O space range for task.
Index: kernel/arch/ia64/src/mm/page.c
===================================================================
--- kernel/arch/ia64/src/mm/page.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia64/src/mm/page.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -40,5 +40,4 @@
 #include <arch/mm/vhpt.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <print.h>
 #include <mm/page.h>
Index: kernel/arch/ia64/src/mm/tlb.c
===================================================================
--- kernel/arch/ia64/src/mm/tlb.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia64/src/mm/tlb.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -48,5 +48,4 @@
 #include <arch/pal/pal.h>
 #include <arch/asm.h>
-#include <typedefs.h>
 #include <panic.h>
 #include <print.h>
Index: kernel/arch/ia64/src/mm/vhpt.c
===================================================================
--- kernel/arch/ia64/src/mm/vhpt.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia64/src/mm/vhpt.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -33,4 +33,5 @@
 */
 
+#include <memstr.h>
 #include <arch/mm/vhpt.h>
 #include <mm/frame.h>
@@ -41,6 +42,6 @@
 uintptr_t vhpt_set_up(void)
 {
-	vhpt_base = frame_alloc(VHPT_WIDTH-FRAME_WIDTH,FRAME_KA | FRAME_ATOMIC);
-	if(!vhpt_base) 
+	vhpt_base = frame_alloc(VHPT_WIDTH - FRAME_WIDTH, FRAME_KA | FRAME_ATOMIC);
+	if (!vhpt_base) 
 		panic("Kernel configured with VHPT but no memory for table.");
 	vhpt_invalidate_all();
@@ -62,26 +63,24 @@
 	rid = ASID2RID(asid, vrn);
 																												
-  rr_save.word = rr_read(vrn);
-  rr.word = rr_save.word;
-  rr.map.rid = rid;
-  rr_write(vrn, rr.word);
-  srlz_i();
+	rr_save.word = rr_read(vrn);
+	rr.word = rr_save.word;
+	rr.map.rid = rid;
+	rr_write(vrn, rr.word);
+	srlz_i();
 	
 	ventry = (vhpt_entry_t *) thash(va);
-  tag = ttag(va);
-  rr_write(vrn, rr_save.word);
-  srlz_i();
-  srlz_d();
+	tag = ttag(va);
+	rr_write(vrn, rr_save.word);
+	srlz_i();
+	srlz_d();
 
-	ventry->word[0]=entry.word[0];
-	ventry->word[1]=entry.word[1];
+	ventry->word[0] = entry.word[0];
+	ventry->word[1] = entry.word[1];
 	ventry->present.tag.tag_word = tag;
-	
-
 }
 
 void vhpt_invalidate_all()
 {
-	memsetb((uintptr_t)vhpt_base,1<<VHPT_WIDTH,0);
+	memsetb((uintptr_t) vhpt_base, 1 << VHPT_WIDTH, 0);
 }
 
Index: kernel/arch/ia64/src/ski/ski.c
===================================================================
--- kernel/arch/ia64/src/ski/ski.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ia64/src/ski/ski.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -39,5 +39,4 @@
 #include <sysinfo/sysinfo.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <ddi/device.h>
 #include <ddi/irq.h>
Index: kernel/arch/mips32/include/asm.h
===================================================================
--- kernel/arch/mips32/include/asm.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/include/asm.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,5 +37,4 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
 #include <config.h>
 
Index: kernel/arch/mips32/include/cache.h
===================================================================
--- kernel/arch/mips32/include/cache.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/include/cache.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,5 @@
 #define KERN_mips32_CACHE_H_
 
-#include <typedefs.h>
+#include <arch/exception.h>
 
 extern void cache_error(istate_t *istate);
Index: kernel/arch/mips32/include/context_offset.h
===================================================================
--- kernel/arch/mips32/include/context_offset.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/include/context_offset.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -43,5 +43,5 @@
 #define OFFSET_GP      0x2c
 
-/* struct istate */
+/* istate_t */
 #define EOFFSET_AT     0x0
 #define EOFFSET_V0     0x4
Index: kernel/arch/mips32/include/cp0.h
===================================================================
--- kernel/arch/mips32/include/cp0.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/include/cp0.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,12 +37,11 @@
 
 #include <arch/types.h>
-#include <arch/mm/tlb.h>
 
-#define cp0_status_ie_enabled_bit	(1<<0)
-#define cp0_status_exl_exception_bit	(1<<1)
-#define cp0_status_erl_error_bit	(1<<2)
-#define cp0_status_um_bit	        (1<<4)
-#define cp0_status_bev_bootstrap_bit	(1<<22)
-#define cp0_status_fpu_bit              (1<<29)
+#define cp0_status_ie_enabled_bit	(1 << 0)
+#define cp0_status_exl_exception_bit	(1 << 1)
+#define cp0_status_erl_error_bit	(1 << 2)
+#define cp0_status_um_bit	        (1 << 4)
+#define cp0_status_bev_bootstrap_bit	(1 << 22)
+#define cp0_status_fpu_bit              (1 << 29)
 
 #define cp0_status_im_shift		8
@@ -61,6 +60,6 @@
 #define cp0_mask_all_int() cp0_status_write(cp0_status_read() & ~(cp0_status_im_mask))
 #define cp0_unmask_all_int() cp0_status_write(cp0_status_read() | cp0_status_im_mask)
-#define cp0_mask_int(it) cp0_status_write(cp0_status_read() & ~(1<<(cp0_status_im_shift+(it))))
-#define cp0_unmask_int(it) cp0_status_write(cp0_status_read() | (1<<(cp0_status_im_shift+(it))))
+#define cp0_mask_int(it) cp0_status_write(cp0_status_read() & ~(1 << (cp0_status_im_shift + (it))))
+#define cp0_unmask_int(it) cp0_status_write(cp0_status_read() | (1 << (cp0_status_im_shift + (it))))
 
 #define GEN_READ_CP0(nm,reg) static inline uint32_t cp0_ ##nm##_read(void) \
Index: kernel/arch/mips32/include/cpu.h
===================================================================
--- kernel/arch/mips32/include/cpu.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/include/cpu.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,4 +37,5 @@
 
 #include <arch/types.h>
+#include <arch/asm.h>
 
 typedef struct {
Index: kernel/arch/mips32/include/debugger.h
===================================================================
--- kernel/arch/mips32/include/debugger.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/include/debugger.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,4 @@
 #define KERN_mips32_DEBUGGER_H_
 
-#include <typedefs.h>
 #include <arch/exception.h>
 #include <arch/types.h>
Index: kernel/arch/mips32/include/exception.h
===================================================================
--- kernel/arch/mips32/include/exception.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/include/exception.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,5 +37,4 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
 #include <arch/cp0.h>
 
@@ -59,5 +58,5 @@
 #define EXC_VCED	31
 
-struct istate {
+typedef struct {
 	uint32_t at;
 	uint32_t v0;
@@ -96,5 +95,5 @@
 	uint32_t epc; /* cp0_epc */
 	uint32_t k1; /* We use it as thread-local pointer */
-};
+} istate_t;
 
 static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr)
Index: kernel/arch/mips32/include/interrupt.h
===================================================================
--- kernel/arch/mips32/include/interrupt.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/include/interrupt.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,4 +36,5 @@
 #define KERN_mips32_INTERRUPT_H_
 
+#include <typedefs.h>
 #include <arch/exception.h>
 
Index: kernel/arch/mips32/include/mm/as.h
===================================================================
--- kernel/arch/mips32/include/mm/as.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/include/mm/as.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -43,8 +43,10 @@
 #define USER_ADDRESS_SPACE_END_ARCH		(unsigned long) 0x7fffffff
 
-#define USTACK_ADDRESS_ARCH	(0x80000000-PAGE_SIZE)
+#define USTACK_ADDRESS_ARCH	(0x80000000 - PAGE_SIZE)
 
 typedef struct {
 } as_arch_t;
+
+#include <genarch/mm/as_pt.h>
 
 #define as_constructor_arch(as, flags)		(as != as)
Index: kernel/arch/mips32/include/mm/page.h
===================================================================
--- kernel/arch/mips32/include/mm/page.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/include/mm/page.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -44,9 +44,9 @@
 
 #ifndef __ASM__
-#  define KA2PA(x)	(((uintptr_t) (x)) - 0x80000000)
-#  define PA2KA(x)	(((uintptr_t) (x)) + 0x80000000)
+#	define KA2PA(x)	(((uintptr_t) (x)) - 0x80000000)
+#	define PA2KA(x)	(((uintptr_t) (x)) + 0x80000000)
 #else
-#  define KA2PA(x)	((x) - 0x80000000)
-#  define PA2KA(x)	((x) + 0x80000000)
+#	define KA2PA(x)	((x) - 0x80000000)
+#	define PA2KA(x)	((x) + 0x80000000)
 #endif
 
@@ -110,8 +110,6 @@
 #ifndef __ASM__
 
-#include <arch/mm/tlb.h>
-#include <mm/page.h>
-#include <arch/mm/frame.h>
-#include <arch/types.h>
+#include <mm/mm.h>
+#include <arch/exception.h>
 
 static inline int get_pt_flags(pte_t *pt, index_t i)
Index: kernel/arch/mips32/include/mm/tlb.h
===================================================================
--- kernel/arch/mips32/include/mm/tlb.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/include/mm/tlb.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,5 +37,4 @@
 
 #include <arch/exception.h>
-#include <typedefs.h>
 
 #ifdef TLBCNT
@@ -53,10 +52,5 @@
 #define PAGE_CACHEABLE_EXC_WRITE	5
 
-typedef union entry_lo entry_lo_t;
-typedef union entry_hi entry_hi_t;
-typedef union page_mask page_mask_t;
-typedef union index tlb_index_t;
-
-union entry_lo {
+typedef union {
 	struct {
 #ifdef BIG_ENDIAN
@@ -77,20 +71,7 @@
 	} __attribute__ ((packed));
 	uint32_t value;
-};
+} entry_lo_t;
 
-/** Page Table Entry. */
-struct pte {
-	unsigned g : 1;			/**< Global bit. */
-	unsigned p : 1;			/**< Present bit. */
-	unsigned d : 1;			/**< Dirty bit. */
-	unsigned cacheable : 1;		/**< Cacheable bit. */
-	unsigned : 1;			/**< Unused. */
-	unsigned soft_valid : 1;	/**< Valid content even if not present. */
-	unsigned pfn : 24;		/**< Physical frame number. */
-	unsigned w : 1;			/**< Page writable bit. */
-	unsigned a : 1;			/**< Accessed bit. */
-};
-
-union entry_hi {
+typedef union {
 	struct {
 #ifdef BIG_ENDIAN
@@ -105,7 +86,7 @@
 	} __attribute__ ((packed));
 	uint32_t value;
-};
+} entry_hi_t;
 
-union page_mask {
+typedef union {
 	struct {
 #ifdef BIG_ENDIAN
@@ -120,7 +101,7 @@
 	} __attribute__ ((packed));
 	uint32_t value;
-};
+} page_mask_t;
 
-union index {
+typedef union {
 	struct {
 #ifdef BIG_ENDIAN
@@ -135,5 +116,5 @@
 	} __attribute__ ((packed));
 	uint32_t value;
-};
+} tlb_index_t;
 
 /** Probe TLB for Matching Entry
Index: kernel/arch/mips32/include/types.h
===================================================================
--- kernel/arch/mips32/include/types.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/include/types.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,19 +36,24 @@
 #define KERN_mips32_TYPES_H_
 
-#define NULL	0
+#define NULL 0
+#define false 0
+#define true 1
 
 typedef signed char int8_t;
-typedef unsigned char uint8_t;
-
 typedef signed short int16_t;
-typedef unsigned short uint16_t;
-
-typedef unsigned long uint32_t;
 typedef signed long int32_t;
-
-typedef unsigned long long uint64_t;
 typedef signed long long int64_t;
 
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned long uint32_t;
+typedef unsigned long long uint64_t;
+
+typedef uint32_t size_t;
+typedef uint32_t count_t;
+typedef uint32_t index_t;
+
 typedef uint32_t uintptr_t;
+typedef uint32_t pfn_t;
 
 typedef uint32_t ipl_t;
@@ -57,7 +62,23 @@
 typedef int32_t native_t;
 
-typedef struct pte pte_t;
+typedef uint8_t bool;
+typedef uint64_t task_id_t;
+typedef uint32_t context_id_t;
 
-typedef uint32_t pfn_t;
+typedef int32_t inr_t;
+typedef int32_t devno_t;
+
+/** Page Table Entry. */
+typedef struct {
+	unsigned g : 1;			/**< Global bit. */
+	unsigned p : 1;			/**< Present bit. */
+	unsigned d : 1;			/**< Dirty bit. */
+	unsigned cacheable : 1;		/**< Cacheable bit. */
+	unsigned : 1;			/**< Unused. */
+	unsigned soft_valid : 1;	/**< Valid content even if not present. */
+	unsigned pfn : 24;		/**< Physical frame number. */
+	unsigned w : 1;			/**< Page writable bit. */
+	unsigned a : 1;			/**< Accessed bit. */
+} pte_t;
 
 #endif
Index: kernel/arch/mips32/src/cache.c
===================================================================
--- kernel/arch/mips32/src/cache.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/src/cache.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -35,5 +35,4 @@
 #include <arch/cache.h>
 #include <arch/exception.h>
-#include <typedefs.h>
 #include <panic.h>
 
Index: kernel/arch/mips32/src/cpu/cpu.c
===================================================================
--- kernel/arch/mips32/src/cpu/cpu.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/src/cpu/cpu.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -35,10 +35,6 @@
 #include <arch/cpu.h>
 #include <cpu.h>
-
 #include <arch.h>
-
 #include <arch/cp0.h>
-
-#include <typedefs.h>
 #include <print.h>	
 
Index: kernel/arch/mips32/src/ddi/ddi.c
===================================================================
--- kernel/arch/mips32/src/ddi/ddi.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/src/ddi/ddi.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,4 @@
 #include <proc/task.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <security/cap.h>
 #include <arch.h>
Index: kernel/arch/mips32/src/drivers/msim.c
===================================================================
--- kernel/arch/mips32/src/drivers/msim.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/src/drivers/msim.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -34,9 +34,9 @@
 
 #include <interrupt.h>
+#include <ipc/irq.h>
 #include <console/chardev.h>
 #include <arch/drivers/msim.h>
 #include <arch/cp0.h>
 #include <console/console.h>
-#include <ddi/irq.h>
 #include <sysinfo/sysinfo.h>
 
Index: kernel/arch/mips32/src/drivers/serial.c
===================================================================
--- kernel/arch/mips32/src/drivers/serial.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/src/drivers/serial.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -35,8 +35,8 @@
 #include <interrupt.h>
 #include <arch/cp0.h>
+#include <ipc/irq.h>
 #include <arch/drivers/serial.h>
 #include <console/chardev.h>
 #include <console/console.h>
-#include <ddi/irq.h>
 
 #define SERIAL_IRQ 2
Index: kernel/arch/mips32/src/exception.c
===================================================================
--- kernel/arch/mips32/src/exception.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/src/exception.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -35,4 +35,5 @@
 #include <arch/exception.h>
 #include <arch/interrupt.h>
+#include <arch/mm/tlb.h>
 #include <panic.h>
 #include <arch/cp0.h>
Index: kernel/arch/mips32/src/interrupt.c
===================================================================
--- kernel/arch/mips32/src/interrupt.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/src/interrupt.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -42,5 +42,4 @@
 #include <ipc/sysipc.h>
 #include <ddi/device.h>
-#include <ddi/irq.h>
 
 #define IRQ_COUNT 8
Index: kernel/arch/mips32/src/mips32.c
===================================================================
--- kernel/arch/mips32/src/mips32.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/mips32/src/mips32.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,5 +37,4 @@
 #include <arch/cp0.h>
 #include <arch/exception.h>
-#include <arch/asm.h>
 #include <mm/as.h>
 
Index: kernel/arch/ppc32/_link.ld.in
===================================================================
--- kernel/arch/ppc32/_link.ld.in	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/_link.ld.in	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -10,5 +10,4 @@
  */
 
-#define __ASM__
 #include <arch/boot/boot.h>
 #include <arch/mm/page.h>
Index: kernel/arch/ppc32/include/cpu.h
===================================================================
--- kernel/arch/ppc32/include/cpu.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/include/cpu.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,5 @@
 #define KERN_ppc32_CPU_H_
 
-#include <typedefs.h>
+#include <arch/asm.h>
 
 typedef struct {
Index: kernel/arch/ppc32/include/drivers/cuda.h
===================================================================
--- kernel/arch/ppc32/include/drivers/cuda.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/include/drivers/cuda.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,5 +37,4 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
 
 extern void cuda_init(devno_t devno, uintptr_t base, size_t size);
Index: kernel/arch/ppc32/include/drivers/pic.h
===================================================================
--- kernel/arch/ppc32/include/drivers/pic.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/include/drivers/pic.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,4 +36,6 @@
 #define KERN_ppc32_PIC_H_
 
+#include <arch/types.h>
+
 #define PIC_PENDING_LOW    8
 #define PIC_PENDING_HIGH   4
Index: kernel/arch/ppc32/include/exception.h
===================================================================
--- kernel/arch/ppc32/include/exception.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/include/exception.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,7 +37,6 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
 
-struct istate {
+typedef struct {
 	uint32_t r0;
 	uint32_t r2;
@@ -78,5 +77,5 @@
 	uint32_t r12;
 	uint32_t sp;
-};
+} istate_t;
 
 static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr)
Index: kernel/arch/ppc32/include/mm/as.h
===================================================================
--- kernel/arch/ppc32/include/mm/as.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/include/mm/as.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -43,8 +43,10 @@
 #define USER_ADDRESS_SPACE_END_ARCH		((unsigned long) 0x7fffffff)
 
-#define USTACK_ADDRESS_ARCH	(0x7fffffff-(PAGE_SIZE-1))
+#define USTACK_ADDRESS_ARCH	(0x7fffffff - (PAGE_SIZE - 1))
 
 typedef struct {
 } as_arch_t;
+
+#include <genarch/mm/as_pt.h>
 
 #define as_constructor_arch(as, flags)		(as != as)
Index: kernel/arch/ppc32/include/mm/memory_init.h
===================================================================
--- kernel/arch/ppc32/include/mm/memory_init.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/include/mm/memory_init.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,6 +36,4 @@
 #define KERN_ppc32_MEMORY_INIT_H_
 
-#include <typedefs.h>
-
 size_t get_memory_size(void);
 
Index: kernel/arch/ppc32/include/mm/page.h
===================================================================
--- kernel/arch/ppc32/include/mm/page.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/include/mm/page.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -105,7 +105,6 @@
 #ifndef __ASM__
 
-#include <mm/page.h>
-#include <arch/mm/frame.h>
-#include <arch/types.h>
+#include <mm/mm.h>
+#include <arch/interrupt.h>
 
 static inline int get_pt_flags(pte_t *pt, index_t i)
Index: kernel/arch/ppc32/include/mm/tlb.h
===================================================================
--- kernel/arch/ppc32/include/mm/tlb.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/include/mm/tlb.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,4 +36,6 @@
 #define KERN_ppc32_TLB_H_
 
+#include <arch/interrupt.h>
+
 typedef struct {
 	unsigned v : 1;          /**< Valid */
Index: kernel/arch/ppc32/include/types.h
===================================================================
--- kernel/arch/ppc32/include/types.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/include/types.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,4 +37,6 @@
 
 #define NULL 0
+#define false 0
+#define true 1
 
 typedef signed char int8_t;
@@ -48,4 +50,8 @@
 typedef unsigned long long uint64_t;
 
+typedef uint32_t size_t;
+typedef uint32_t count_t;
+typedef uint32_t index_t;
+
 typedef uint32_t uintptr_t;
 typedef uint32_t pfn_t;
@@ -54,4 +60,12 @@
 
 typedef uint32_t unative_t;
+typedef int32_t native_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. */
Index: kernel/arch/ppc32/src/cpu/cpu.c
===================================================================
--- kernel/arch/ppc32/src/cpu/cpu.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/src/cpu/cpu.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,8 +36,5 @@
 #include <arch/cpuid.h>
 #include <cpu.h>
-
 #include <arch.h>
-
-#include <typedefs.h>
 #include <print.h>
 
Index: kernel/arch/ppc32/src/ddi/ddi.c
===================================================================
--- kernel/arch/ppc32/src/ddi/ddi.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/src/ddi/ddi.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,4 @@
 #include <proc/task.h>
 #include <arch/types.h>
-#include <typedefs.h>
 
 /** Enable I/O space range for task.
Index: kernel/arch/ppc32/src/drivers/cuda.c
===================================================================
--- kernel/arch/ppc32/src/drivers/cuda.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/src/drivers/cuda.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -34,5 +34,5 @@
 
 #include <arch/drivers/cuda.h>
-#include <ddi/irq.h>
+#include <ipc/irq.h>
 #include <arch/asm.h>
 #include <console/console.h>
Index: kernel/arch/ppc32/src/drivers/pic.c
===================================================================
--- kernel/arch/ppc32/src/drivers/pic.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/src/drivers/pic.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -34,6 +34,6 @@
 
 
-#include <arch/asm.h>
 #include <arch/drivers/pic.h>
+#include <mm/page.h>
 #include <byteorder.h>
 #include <bitops.h>
Index: kernel/arch/ppc32/src/mm/memory_init.c
===================================================================
--- kernel/arch/ppc32/src/mm/memory_init.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/src/mm/memory_init.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -35,5 +35,4 @@
 #include <arch/boot/boot.h>
 #include <arch/mm/memory_init.h>
-#include <typedefs.h>
 #include <print.h>
 
Index: kernel/arch/ppc32/src/ppc32.c
===================================================================
--- kernel/arch/ppc32/src/ppc32.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc32/src/ppc32.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -33,4 +33,5 @@
  */
 
+#include <config.h>
 #include <arch.h>
 #include <arch/boot/boot.h>
Index: kernel/arch/ppc64/_link.ld.in
===================================================================
--- kernel/arch/ppc64/_link.ld.in	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc64/_link.ld.in	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -10,5 +10,4 @@
  */
 
-#define __ASM__
 #include <arch/boot/boot.h>
 #include <arch/mm/page.h>
Index: kernel/arch/ppc64/include/cpu.h
===================================================================
--- kernel/arch/ppc64/include/cpu.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc64/include/cpu.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,5 @@
 #define KERN_ppc64_CPU_H_
 
-#include <typedefs.h>
+#include <arch/asm.h>
 
 typedef struct {
Index: kernel/arch/ppc64/include/drivers/pic.h
===================================================================
--- kernel/arch/ppc64/include/drivers/pic.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc64/include/drivers/pic.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,4 +36,6 @@
 #define KERN_ppc64_PIC_H_
 
+#include <arch/types.h>
+
 #define PIC_PENDING_LOW    8
 #define PIC_PENDING_HIGH   4
Index: kernel/arch/ppc64/include/exception.h
===================================================================
--- kernel/arch/ppc64/include/exception.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc64/include/exception.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,7 +37,6 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
 
-struct istate {
+typedef struct {
 	uint64_t r0;
 	uint64_t r2;
@@ -78,5 +77,5 @@
 	uint64_t r12;
 	uint64_t sp;
-};
+} istate_t;
 
 static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr)
Index: kernel/arch/ppc64/include/mm/as.h
===================================================================
--- kernel/arch/ppc64/include/mm/as.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc64/include/mm/as.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -43,8 +43,10 @@
 #define USER_ADDRESS_SPACE_END_ARCH		((unsigned long) 0x7fffffff)
 
-#define USTACK_ADDRESS_ARCH	(0x7fffffff-(PAGE_SIZE-1))
+#define USTACK_ADDRESS_ARCH	(0x7fffffff - (PAGE_SIZE - 1))
 
 typedef struct {
 } as_arch_t;
+
+#include <genarch/mm/as_pt.h>
 
 #define as_constructor_arch(as, flags)		(as != as)
Index: kernel/arch/ppc64/include/mm/memory_init.h
===================================================================
--- kernel/arch/ppc64/include/mm/memory_init.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc64/include/mm/memory_init.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,6 +36,4 @@
 #define KERN_ppc64_MEMORY_INIT_H_
 
-#include <typedefs.h>
-
 size_t get_memory_size(void);
 
Index: kernel/arch/ppc64/include/mm/page.h
===================================================================
--- kernel/arch/ppc64/include/mm/page.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc64/include/mm/page.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -105,7 +105,6 @@
 #ifndef __ASM__
 
-#include <mm/page.h>
-#include <arch/mm/frame.h>
-#include <arch/types.h>
+#include <mm/mm.h>
+#include <arch/interrupt.h>
 
 static inline int get_pt_flags(pte_t *pt, index_t i)
Index: kernel/arch/ppc64/include/types.h
===================================================================
--- kernel/arch/ppc64/include/types.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc64/include/types.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,4 +37,6 @@
 
 #define NULL 0
+#define false 0
+#define true 1
 
 typedef signed char int8_t;
@@ -48,4 +50,8 @@
 typedef unsigned 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;
@@ -54,4 +60,12 @@
 
 typedef uint64_t unative_t;
+typedef int64_t native_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. */
Index: kernel/arch/ppc64/src/cpu/cpu.c
===================================================================
--- kernel/arch/ppc64/src/cpu/cpu.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc64/src/cpu/cpu.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,8 +36,5 @@
 #include <arch/cpuid.h>
 #include <cpu.h>
-
 #include <arch.h>
-
-#include <typedefs.h>
 #include <print.h>
 
Index: kernel/arch/ppc64/src/ddi/ddi.c
===================================================================
--- kernel/arch/ppc64/src/ddi/ddi.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc64/src/ddi/ddi.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,4 @@
 #include <proc/task.h>
 #include <arch/types.h>
-#include <typedefs.h>
 
 /** Enable I/O space range for task.
Index: kernel/arch/ppc64/src/drivers/pic.c
===================================================================
--- kernel/arch/ppc64/src/drivers/pic.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc64/src/drivers/pic.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -34,6 +34,6 @@
 
 
-#include <arch/asm.h>
 #include <arch/drivers/pic.h>
+#include <mm/page.h>
 #include <byteorder.h>
 #include <bitops.h>
Index: kernel/arch/ppc64/src/mm/as.c
===================================================================
--- kernel/arch/ppc64/src/mm/as.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc64/src/mm/as.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -34,5 +34,5 @@
 
 #include <arch/mm/as.h>
-#include <genarch/mm/as_pt.h>
+#include <genarch/mm/page_pt.h>
 
 /** Architecture dependent address space init. */
Index: kernel/arch/ppc64/src/mm/memory_init.c
===================================================================
--- kernel/arch/ppc64/src/mm/memory_init.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/ppc64/src/mm/memory_init.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -35,5 +35,4 @@
 #include <arch/boot/boot.h>
 #include <arch/mm/memory_init.h>
-#include <typedefs.h>
 #include <print.h>
 
Index: kernel/arch/sparc64/_link.ld.in
===================================================================
--- kernel/arch/sparc64/_link.ld.in	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/_link.ld.in	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -7,5 +7,4 @@
  */
 
-#define __LINKER__
 #include <arch/boot/boot.h>
 
Index: kernel/arch/sparc64/include/asm.h
===================================================================
--- kernel/arch/sparc64/include/asm.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/asm.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,10 +36,9 @@
 #define KERN_sparc64_ASM_H_
 
-#include <arch.h>
-#include <typedefs.h>
+#include <arch/arch.h>
 #include <arch/types.h>
+#include <align.h>
 #include <arch/register.h>
 #include <config.h>
-#include <time/clock.h>
 #include <arch/stack.h>
 
Index: kernel/arch/sparc64/include/atomic.h
===================================================================
--- kernel/arch/sparc64/include/atomic.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/atomic.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -38,5 +38,4 @@
 #include <arch/barrier.h>
 #include <arch/types.h>
-#include <typedefs.h>
 
 /** Atomic add operation.
Index: kernel/arch/sparc64/include/boot/boot.h
===================================================================
--- kernel/arch/sparc64/include/boot/boot.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/boot/boot.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -44,5 +44,4 @@
 #include <config.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <genarch/ofw/ofw_tree.h>
 
Index: kernel/arch/sparc64/include/cpu.h
===================================================================
--- kernel/arch/sparc64/include/cpu.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/cpu.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -38,4 +38,5 @@
 #include <arch/types.h>
 #include <arch/register.h>
+#include <arch/asm.h>
 
 #define MANUF_FUJITSU		0x04
Index: kernel/arch/sparc64/include/drivers/tick.h
===================================================================
--- kernel/arch/sparc64/include/drivers/tick.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/drivers/tick.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,5 @@
 #define KERN_sparc64_TICK_H_
 
-#include <typedefs.h>
+#include <arch/interrupt.h>
 
 extern void tick_init(void);
Index: kernel/arch/sparc64/include/drivers/z8530.h
===================================================================
--- kernel/arch/sparc64/include/drivers/z8530.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/drivers/z8530.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,5 +37,4 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
 #include <arch/drivers/kbd.h>
 
Index: kernel/arch/sparc64/include/interrupt.h
===================================================================
--- kernel/arch/sparc64/include/interrupt.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/interrupt.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -37,5 +37,4 @@
 #define KERN_sparc64_INTERRUPT_H_
 
-#include <typedefs.h>
 #include <arch/types.h>
 #include <arch/regdef.h>
@@ -51,9 +50,9 @@
 };		
 
-struct istate {
+typedef struct {
 	uint64_t	tnpc;
 	uint64_t	tpc;
 	uint64_t	tstate;
-};
+} istate_t;
 
 static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr)
@@ -72,7 +71,4 @@
 }
 
-
-extern void interrupt_register(int n, const char *name, iroutine f);
-
 #endif
 
Index: kernel/arch/sparc64/include/mm/as.h
===================================================================
--- kernel/arch/sparc64/include/mm/as.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/mm/as.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,7 +36,5 @@
 #define KERN_sparc64_AS_H_
 
-#ifdef CONFIG_TSB
-#include <arch/mm/tsb.h>
-#endif
+#include <arch/mm/tte.h>
 
 #define KERNEL_ADDRESS_SPACE_SHADOWED_ARCH	1
@@ -47,14 +45,42 @@
 #define USER_ADDRESS_SPACE_END_ARCH		(unsigned long) 0xffffffffffffffff
 
-#define USTACK_ADDRESS_ARCH	(0xffffffffffffffffULL-(PAGE_SIZE-1))
+#define USTACK_ADDRESS_ARCH	(0xffffffffffffffffULL - (PAGE_SIZE - 1))
+
+#ifdef CONFIG_TSB
+
+/** TSB Tag Target register. */
+typedef union tsb_tag_target {
+	uint64_t value;
+	struct {
+		unsigned invalid : 1;	/**< Invalidated by software. */
+		unsigned : 2;
+		unsigned context : 13;	/**< Software ASID. */
+		unsigned : 6;
+		uint64_t va_tag : 42;	/**< Virtual address bits <63:22>. */
+	} __attribute__ ((packed));
+} tsb_tag_target_t;
+
+/** TSB entry. */
+typedef struct tsb_entry {
+	tsb_tag_target_t tag;
+	tte_data_t data;
+} __attribute__ ((packed)) tsb_entry_t;
 
 typedef struct {
-#ifdef CONFIG_TSB
 	tsb_entry_t *itsb;
 	tsb_entry_t *dtsb;
-#endif /* CONFIG_TSB */
 } as_arch_t;
 
+#else
+
+typedef struct {
+} as_arch_t;
+
+#endif /* CONFIG_TSB */
+
+#include <genarch/mm/as_ht.h>
+
 #ifdef CONFIG_TSB
+#	include <arch/mm/tsb.h>
 #	define as_invalidate_translation_cache(as, page, cnt)	tsb_invalidate(as, page, cnt)
 #else
Index: kernel/arch/sparc64/include/mm/memory_init.h
===================================================================
--- kernel/arch/sparc64/include/mm/memory_init.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/mm/memory_init.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,5 @@
 #define KERN_sparc64_MEMORY_INIT_H_
 
-#include <typedefs.h>
+#include <arch/types.h>
 
 extern size_t get_memory_size(void);
Index: kernel/arch/sparc64/include/mm/mmu.h
===================================================================
--- kernel/arch/sparc64/include/mm/mmu.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/mm/mmu.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -80,8 +80,7 @@
 #include <arch/barrier.h>
 #include <arch/types.h>
-#include <typedefs.h>
 
 /** LSU Control Register. */
-union lsu_cr_reg {
+typedef union {
 	uint64_t value;
 	struct {
@@ -101,6 +100,5 @@
 		
 	} __attribute__ ((packed));
-};
-typedef union lsu_cr_reg lsu_cr_reg_t;
+} lsu_cr_reg_t;
 
 #endif /* !def __ASM__ */
Index: kernel/arch/sparc64/include/mm/page.h
===================================================================
--- kernel/arch/sparc64/include/mm/page.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/mm/page.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -47,7 +47,7 @@
 #ifndef __ASM__
 
-#include <mm/page.h>
-#include <arch/types.h>
-#include <genarch/mm/page_ht.h>
+//#include <arch/types.h>
+//#include <genarch/mm/page_ht.h>
+#include <arch/interrupt.h>
 
 extern uintptr_t physmem_base;
@@ -56,5 +56,5 @@
 #define PA2KA(x)	(((uintptr_t) (x)) - physmem_base)
 
-union page_address {
+typedef union {
 	uintptr_t address;
 	struct {
@@ -62,7 +62,5 @@
 		unsigned offset : 13;		/**< Offset. */
 	} __attribute__ ((packed));
-};
-
-typedef union page_address page_address_t;
+} page_address_t;
 
 extern void page_arch_init(void);
Index: kernel/arch/sparc64/include/mm/tlb.h
===================================================================
--- kernel/arch/sparc64/include/mm/tlb.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/mm/tlb.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -77,5 +77,4 @@
 #include <arch/barrier.h>
 #include <arch/types.h>
-#include <typedefs.h>
 
 union tlb_context_reg {
Index: kernel/arch/sparc64/include/mm/tsb.h
===================================================================
--- kernel/arch/sparc64/include/mm/tsb.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/mm/tsb.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -55,28 +55,8 @@
 #include <arch/mm/mmu.h>
 #include <arch/types.h>
-#include <typedefs.h>
-
-/** TSB Tag Target register. */
-union tsb_tag_target {
-	uint64_t value;
-	struct {
-		unsigned invalid : 1;	/**< Invalidated by software. */
-		unsigned : 2;
-		unsigned context : 13;	/**< Software ASID. */
-		unsigned : 6;
-		uint64_t va_tag : 42;	/**< Virtual address bits <63:22>. */
-	} __attribute__ ((packed));
-};
-typedef union tsb_tag_target tsb_tag_target_t;
-
-/** TSB entry. */
-struct tsb_entry {
-	tsb_tag_target_t tag;
-	tte_data_t data;
-} __attribute__ ((packed));
-typedef struct tsb_entry tsb_entry_t;
+#include <mm/as.h>
 
 /** TSB Base register. */
-union tsb_base_reg {
+typedef union tsb_base_reg {
 	uint64_t value;
 	struct {
@@ -91,6 +71,5 @@
 					 * 512 * 2^size. */
 	} __attribute__ ((packed));
-};
-typedef union tsb_base_reg tsb_base_reg_t;
+} tsb_base_reg_t;
 
 /** Read ITSB Base register.
Index: kernel/arch/sparc64/include/sparc64.h
===================================================================
--- kernel/arch/sparc64/include/sparc64.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
+++ kernel/arch/sparc64/include/sparc64.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2005 Jakub Jermar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup sparc64
+ * @{
+ */
+/** @file
+ */
+
+#ifndef KERN_sparc64_SPARC64_H_
+#define KERN_sparc64_SPARC64_H_
+
+#include <interrupt.h>
+
+extern void interrupt_register(int n, const char *name, iroutine f);
+
+#endif
+
+/** @}
+ */
Index: kernel/arch/sparc64/include/syscall.h
===================================================================
--- kernel/arch/sparc64/include/syscall.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/syscall.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,6 +36,6 @@
 #define KERN_sparc64_SYSCALL_H_
 
-#include <typedefs.h>
 #include <arch/types.h>
+#include <arch/interrupt.h>
 
 extern unative_t syscall(int n, istate_t *istate, unative_t a1, unative_t a2, unative_t a3, unative_t a4);
Index: kernel/arch/sparc64/include/trap/exception.h
===================================================================
--- kernel/arch/sparc64/include/trap/exception.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/trap/exception.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -59,5 +59,5 @@
 #ifndef __ASM__
 
-#include <typedefs.h>
+#include <arch/interrupt.h>
 
 extern void dump_istate(istate_t *istate);
Index: kernel/arch/sparc64/include/trap/interrupt.h
===================================================================
--- kernel/arch/sparc64/include/trap/interrupt.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/trap/interrupt.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -106,4 +106,7 @@
 
 #ifndef __ASM__
+
+#include <arch/interrupt.h>
+
 extern void interrupt(int n, istate_t *istate);
 #endif /* !def __ASM__ */
Index: kernel/arch/sparc64/include/types.h
===================================================================
--- kernel/arch/sparc64/include/types.h	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/include/types.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,7 @@
 #define KERN_sparc64_TYPES_H_
 
-#define NULL	0
+#define NULL 0
+#define false 0
+#define true 1
 
 typedef signed char int8_t;
@@ -48,4 +50,8 @@
 typedef unsigned 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;
@@ -56,6 +62,10 @@
 typedef int64_t native_t;
 
-typedef struct pte 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;
 typedef uint8_t asi_t;
 
Index: kernel/arch/sparc64/src/console.c
===================================================================
--- kernel/arch/sparc64/src/console.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/console.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -35,5 +35,4 @@
 #include <arch/console.h>
 #include <arch/types.h>
-#include <typedefs.h>
 
 #include <arch/drivers/scr.h>
Index: kernel/arch/sparc64/src/cpu/cpu.c
===================================================================
--- kernel/arch/sparc64/src/cpu/cpu.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/cpu/cpu.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -33,12 +33,9 @@
  */
 
-#include <arch/asm.h>
 #include <cpu.h>
 #include <arch.h>
+#include <genarch/ofw/ofw_tree.h>
+#include <arch/drivers/tick.h>
 #include <print.h>
-#include <arch/register.h>
-#include <genarch/ofw/ofw_tree.h>
-#include <arch/types.h>
-#include <arch/drivers/tick.h>
 
 /** Perform sparc64 specific initialization of the processor structure for the
Index: kernel/arch/sparc64/src/ddi/ddi.c
===================================================================
--- kernel/arch/sparc64/src/ddi/ddi.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/ddi/ddi.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,4 @@
 #include <proc/task.h>
 #include <arch/types.h>
-#include <typedefs.h>
 
 /** Enable I/O space range for task.
Index: kernel/arch/sparc64/src/drivers/fhc.c
===================================================================
--- kernel/arch/sparc64/src/drivers/fhc.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/drivers/fhc.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -42,8 +42,7 @@
 #include <arch/drivers/fhc.h>
 #include <arch/trap/interrupt.h>
-#include <arch/mm/page.h>
+#include <mm/page.h>
 #include <mm/slab.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <genarch/ofw/ofw_tree.h>
 
Index: kernel/arch/sparc64/src/drivers/kbd.c
===================================================================
--- kernel/arch/sparc64/src/drivers/kbd.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/drivers/kbd.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -45,5 +45,4 @@
 #include <arch/mm/page.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <align.h>
 #include <func.h>
Index: kernel/arch/sparc64/src/drivers/pci.c
===================================================================
--- kernel/arch/sparc64/src/drivers/pci.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/drivers/pci.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -38,8 +38,7 @@
 #include <genarch/ofw/ofw_tree.h>
 #include <arch/trap/interrupt.h>
-#include <arch/mm/page.h>
+#include <mm/page.h>
 #include <mm/slab.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <debug.h>
 #include <print.h>
Index: kernel/arch/sparc64/src/drivers/scr.c
===================================================================
--- kernel/arch/sparc64/src/drivers/scr.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/drivers/scr.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -38,5 +38,4 @@
 #include <genarch/fb/visuals.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <func.h>
 #include <align.h>
Index: kernel/arch/sparc64/src/drivers/tick.c
===================================================================
--- kernel/arch/sparc64/src/drivers/tick.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/drivers/tick.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -35,7 +35,7 @@
 #include <arch/drivers/tick.h>
 #include <arch/interrupt.h>
+#include <arch/sparc64.h>
 #include <arch/asm.h>
 #include <arch/register.h>
-#include <typedefs.h>
 #include <arch/cpu.h>
 #include <arch/boot/boot.h>
Index: kernel/arch/sparc64/src/mm/as.c
===================================================================
--- kernel/arch/sparc64/src/mm/as.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/mm/as.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -35,5 +35,5 @@
 #include <arch/mm/as.h>
 #include <arch/mm/tlb.h>
-#include <genarch/mm/as_ht.h>
+#include <genarch/mm/page_ht.h>
 #include <genarch/mm/asid_fifo.h>
 #include <debug.h>
Index: kernel/arch/sparc64/src/mm/memory_init.c
===================================================================
--- kernel/arch/sparc64/src/mm/memory_init.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/mm/memory_init.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -35,5 +35,4 @@
 #include <arch/mm/memory_init.h>
 #include <arch/boot/boot.h>
-#include <typedefs.h>
 
 /** Return total size of available memory in bytes.
Index: kernel/arch/sparc64/src/mm/tlb.c
===================================================================
--- kernel/arch/sparc64/src/mm/tlb.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/mm/tlb.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -45,5 +45,4 @@
 #include <print.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <config.h>
 #include <arch/trap/trap.h>
Index: kernel/arch/sparc64/src/mm/tsb.c
===================================================================
--- kernel/arch/sparc64/src/mm/tsb.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/mm/tsb.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -38,5 +38,4 @@
 #include <mm/as.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <macros.h>
 #include <debug.h>
Index: kernel/arch/sparc64/src/smp/ipi.c
===================================================================
--- kernel/arch/sparc64/src/smp/ipi.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/smp/ipi.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -35,4 +35,5 @@
 #include <smp/ipi.h>
 #include <cpu.h>
+#include <arch.h>
 #include <arch/cpu.h>
 #include <arch/asm.h>
Index: kernel/arch/sparc64/src/smp/smp.c
===================================================================
--- kernel/arch/sparc64/src/smp/smp.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/smp/smp.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -43,5 +43,4 @@
 #include <synch/synch.h>
 #include <synch/waitq.h>
-#include <typedefs.h>
 #include <print.h>
 
Index: kernel/arch/sparc64/src/trap/exception.c
===================================================================
--- kernel/arch/sparc64/src/trap/exception.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/trap/exception.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -41,5 +41,4 @@
 #include <arch/register.h>
 #include <debug.h>
-#include <typedefs.h>
 #include <symtab.h>
 #include <print.h>
Index: kernel/arch/sparc64/src/trap/interrupt.c
===================================================================
--- kernel/arch/sparc64/src/trap/interrupt.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/trap/interrupt.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -34,8 +34,8 @@
 
 #include <arch/interrupt.h>
+#include <arch/sparc64.h>
 #include <arch/trap/interrupt.h>
 #include <interrupt.h>
 #include <ddi/irq.h>
-#include <typedefs.h>
 #include <arch/types.h>
 #include <debug.h>
Index: kernel/arch/sparc64/src/trap/syscall.c
===================================================================
--- kernel/arch/sparc64/src/trap/syscall.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/trap/syscall.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -39,5 +39,4 @@
 #include <panic.h>
 #include <arch/types.h>
-#include <typedefs.h>
 
 unative_t syscall(int n, istate_t *istate, unative_t a1, unative_t a2, unative_t a3, unative_t a4)
Index: kernel/arch/sparc64/src/trap/trap.c
===================================================================
--- kernel/arch/sparc64/src/trap/trap.c	(revision 6f4495f5c6915097f277fabc29a874343f77e88a)
+++ kernel/arch/sparc64/src/trap/trap.c	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -44,5 +44,4 @@
 #include <debug.h>
 #include <arch/types.h>
-#include <typedefs.h>
 #include <arch/drivers/tick.h>
 
