Index: kernel/generic/include/mm/as.h
===================================================================
--- kernel/generic/include/mm/as.h	(revision 313b6172c4a7557560500d83509400c7cf95dc2f)
+++ kernel/generic/include/mm/as.h	(revision 6e2bf292018603bfc698dec43b84ec2c0ede62f8)
@@ -147,4 +147,5 @@
 	void (* page_table_lock)(as_t *, bool);
 	void (* page_table_unlock)(as_t *, bool);
+	bool (* page_table_locked)(as_t *);
 } as_operations_t;
 
Index: kernel/generic/include/mm/page.h
===================================================================
--- kernel/generic/include/mm/page.h	(revision 313b6172c4a7557560500d83509400c7cf95dc2f)
+++ kernel/generic/include/mm/page.h	(revision 6e2bf292018603bfc698dec43b84ec2c0ede62f8)
@@ -52,4 +52,5 @@
 extern void page_table_lock(as_t *, bool);
 extern void page_table_unlock(as_t *, bool);
+extern bool page_table_locked(as_t *);
 extern void page_mapping_insert(as_t *, uintptr_t, uintptr_t, unsigned int);
 extern void page_mapping_remove(as_t *, uintptr_t);
Index: kernel/generic/src/mm/as.c
===================================================================
--- kernel/generic/src/mm/as.c	(revision 313b6172c4a7557560500d83509400c7cf95dc2f)
+++ kernel/generic/src/mm/as.c	(revision 6e2bf292018603bfc698dec43b84ec2c0ede62f8)
@@ -1293,4 +1293,19 @@
 }
 
+/** Test whether page tables are locked.
+ *
+ * @param as		Address space where the page tables belong.
+ *
+ * @return		True if the page tables belonging to the address soace
+ *			are locked, otherwise false.
+ */
+bool page_table_locked(as_t *as)
+{
+	ASSERT(as_operations);
+	ASSERT(as_operations->page_table_locked);
+
+	return as_operations->page_table_locked(as);
+}
+
 
 /** Find address space area and lock it.
