Index: kernel/genarch/include/mm/page_pt.h
===================================================================
--- kernel/genarch/include/mm/page_pt.h	(revision 80bcaed11c2e767559657092d6c13d1a7fdd449c)
+++ kernel/genarch/include/mm/page_pt.h	(revision d630139332f649889fde186aaa1729516725c881)
@@ -108,5 +108,7 @@
 #define PTE_EXECUTABLE(p)	PTE_EXECUTABLE_ARCH((p))
 
+#ifndef __OBJC__
 extern as_operations_t as_pt_operations;
+#endif
 extern page_mapping_operations_t pt_mapping_operations;
 
Index: kernel/genarch/src/mm/as_pt.c
===================================================================
--- kernel/genarch/src/mm/as_pt.c	(revision 80bcaed11c2e767559657092d6c13d1a7fdd449c)
+++ kernel/genarch/src/mm/as_pt.c	(revision d630139332f649889fde186aaa1729516725c881)
@@ -53,4 +53,29 @@
 static void pt_unlock(as_t *as, bool unlock);
 
+#ifdef __OBJC__
+@implementation as_t
+
++ (pte_t *) page_table_create: (int) flags
+{
+	return ptl0_create(flags);
+}
+
++ (void) page_table_destroy: (pte_t *) page_table
+{
+	ptl0_destroy(page_table);
+}
+
+- (void) page_table_lock: (bool) _lock
+{
+	pt_lock(self, _lock);
+}
+
+- (void) page_table_unlock: (bool) unlock
+{
+	pt_unlock(self, unlock);
+}
+
+@end
+#else
 as_operations_t as_pt_operations = {
 	.page_table_create = ptl0_create,
@@ -59,4 +84,5 @@
 	.page_table_unlock = pt_unlock
 };
+#endif
 
 /** Create PTL0.
