Index: src/system/kernel/arch/ppc/PPCVMTranslationMap.h
===================================================================
--- src/system/kernel/arch/ppc/PPCVMTranslationMap.h	(revision 0)
+++ src/system/kernel/arch/ppc/PPCVMTranslationMap.h	(revision 0)
@@ -0,0 +1,80 @@
+
+/*
+ * Copyright 2010, Alexander von Gluck,
+ * Distributed under the terms of the MIT License.
+ */
+ 
+#ifndef KERNEL_ARCH_PPC_PPC_VM_TRANSLATION_MAP_H
+#define KERNEL_ARCH_PPC_PPC_VM_TRANSLATION_MAP_H
+
+
+#include <vm/VMTranslationMap.h>
+
+struct PPCVMTranslationMap : VMTranslationMap {
+								PPCVMTranslationMap();
+	virtual						~PPCVMTranslationMap();
+
+			status_t			Init(bool kernel);
+
+	inline	int					VSIDBase() const	{ return fVSIDBase; }
+
+			page_table_entry*	LookupPageTableEntry(addr_t virtualAddress);
+			bool				RemovePageTableEntry(addr_t virtualAddress);
+
+	virtual	status_t			InitPostSem();
+
+	virtual	bool	 			Lock();
+	virtual	void				Unlock();
+
+	virtual	addr_t				MappedSize() const;
+	virtual	size_t				MaxPagesNeededToMap(addr_t start,
+									addr_t end) const;
+
+	virtual	status_t			Map(addr_t virtualAddress,
+									addr_t physicalAddress,
+									uint32 attributes,
+									vm_page_reservation* reservation);
+	virtual	status_t			Unmap(addr_t start, addr_t end);
+
+	virtual	status_t			UnmapPage(VMArea* area, addr_t address,
+									bool updatePageQueue);
+	virtual void				UnmapPages(VMArea* area, addr_t base,
+                                                                        size_t size, bool updatePageQueue);
+	
+	virtual void                            UnmapArea(VMArea* area,
+                                                                        bool deletingAddressSpace,
+                                                                        bool ignoreTopCachePageFlags);
+
+
+	
+
+	virtual	status_t			Query(addr_t virtualAddress,
+									addr_t* _physicalAddress,
+									uint32* _flags);
+	virtual	status_t			QueryInterrupt(addr_t virtualAddress,
+									addr_t* _physicalAddress,
+									uint32* _flags);
+
+	virtual	status_t			Protect(addr_t base, addr_t top,
+									uint32 attributes);
+		status_t                        ProtectPage(VMArea* area, addr_t address,
+                                                                        uint32 attributes);
+		status_t                        ProtectArea(VMArea* area,
+                                                                        uint32 attributes);
+
+
+	virtual	status_t			ClearFlags(addr_t virtualAddress,
+									uint32 flags);
+
+	virtual	bool				ClearAccessedAndModified(
+									VMArea* area, addr_t address,
+									bool unmapIfUnaccessed,
+									bool& _modified);
+
+	virtual	void				Flush();
+
+protected:
+			int					fVSIDBase;
+};
+
+#endif	// KERNEL_ARCH_PPC_PPC_VM_TRANSLATION_MAP_H
Index: src/system/kernel/arch/ppc/arch_vm_translation_map.cpp
===================================================================
--- src/system/kernel/arch/ppc/arch_vm_translation_map.cpp	(revision 35504)
+++ src/system/kernel/arch/ppc/arch_vm_translation_map.cpp	(working copy)
@@ -96,7 +96,6 @@
 #include "generic_vm_physical_page_ops.h"
 #include "GenericVMPhysicalPageMapper.h"
 
-
 static struct page_table_entry_group *sPageTable;
 static size_t sPageTableSize;
 static uint32 sPageTableHashMask;
@@ -124,60 +123,8 @@
 #define VSID_BASE_SHIFT 3
 #define VADDR_TO_VSID(vsidBase, vaddr) (vsidBase + ((vaddr) >> 28))
 
+#include "PPCVMTranslationMap.h"
 
-struct PPCVMTranslationMap : VMTranslationMap {
-								PPCVMTranslationMap();
-	virtual						~PPCVMTranslationMap();
-
-			status_t			Init(bool kernel);
-
-	inline	int					VSIDBase() const	{ return fVSIDBase; }
-
-			page_table_entry*	LookupPageTableEntry(addr_t virtualAddress);
-			bool				RemovePageTableEntry(addr_t virtualAddress);
-
-	virtual	status_t			InitPostSem();
-
-	virtual	bool	 			Lock();
-	virtual	void				Unlock();
-
-	virtual	addr_t				MappedSize() const;
-	virtual	size_t				MaxPagesNeededToMap(addr_t start,
-									addr_t end) const;
-
-	virtual	status_t			Map(addr_t virtualAddress,
-									addr_t physicalAddress,
-									uint32 attributes,
-									vm_page_reservation* reservation);
-	virtual	status_t			Unmap(addr_t start, addr_t end);
-
-	virtual	status_t			UnmapPage(VMArea* area, addr_t address,
-									bool updatePageQueue);
-
-	virtual	status_t			Query(addr_t virtualAddress,
-									addr_t* _physicalAddress,
-									uint32* _flags);
-	virtual	status_t			QueryInterrupt(addr_t virtualAddress,
-									addr_t* _physicalAddress,
-									uint32* _flags);
-
-	virtual	status_t			Protect(addr_t base, addr_t top,
-									uint32 attributes);
-	virtual	status_t			ClearFlags(addr_t virtualAddress,
-									uint32 flags);
-
-	virtual	bool				ClearAccessedAndModified(
-									VMArea* area, addr_t address,
-									bool unmapIfUnaccessed,
-									bool& _modified);
-
-	virtual	void				Flush();
-
-protected:
-			int					fVSIDBase;
-};
-
-
 void
 ppc_translation_map_change_asid(VMTranslationMap *map)
 {
@@ -470,8 +417,7 @@
 
 
 status_t
-PPCVMTranslationMap::UnmapPage(VMArea* area, addr_t address,
-	bool updatePageQueue)
+PPCVMTranslationMap::UnmapPage(VMArea* area, addr_t address, bool updatePageQueue)
 {
 	ASSERT(address % B_PAGE_SIZE == 0);
 
@@ -546,7 +492,18 @@
 	return B_OK;
 }
 
+void
+PPCVMTranslationMap::UnmapPages(VMArea* area, addr_t base, size_t size, bool updatePageQueue)
+{
+	// TODO: complete
+}
 
+void
+PPCVMTranslationMap::UnmapArea(VMArea* area, bool deletingAddressSpace, bool ignoreTopCachePageFlags)
+{
+	// TODO: complete
+}
+
 status_t
 PPCVMTranslationMap::Query(addr_t va, addr_t *_outPhysical, uint32 *_outFlags)
 {
@@ -590,8 +547,23 @@
 	return B_ERROR;
 }
 
+status_t
+PPCVMTranslationMap::ProtectPage(VMArea* area, addr_t address, uint32 attributes)
+{
+	// TODO: Finish
+	return B_ERROR;
+}
 
 status_t
+PPCVMTranslationMap::ProtectArea(VMArea* area, uint32 attributes)
+{
+	// TODO: Finish
+	return B_ERROR;
+}
+
+
+
+status_t
 PPCVMTranslationMap::ClearFlags(addr_t virtualAddress, uint32 flags)
 {
 	page_table_entry *entry = LookupPageTableEntry(virtualAddress);
