Index: kernel/genarch/src/mm/as_ht.c
===================================================================
--- kernel/genarch/src/mm/as_ht.c	(revision da1bafb8cf9a3b3be8ef21bc114daaa476a85190)
+++ kernel/genarch/src/mm/as_ht.c	(revision a820bf7a37ab31617197fc58a855210633e30b42)
@@ -51,4 +51,5 @@
 static void ht_lock(as_t *, bool);
 static void ht_unlock(as_t *, bool);
+static bool ht_locked(as_t *);
 
 as_operations_t as_ht_operations = {
@@ -57,4 +58,5 @@
 	.page_table_lock = ht_lock,
 	.page_table_unlock = ht_unlock,
+	.page_table_locked = ht_locked,
 };
 
@@ -126,4 +128,16 @@
 }
 
+/** 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 ht_locked(as_t *as)
+{
+	return (mutex_locked(&page_ht_lock) && mutex_locked(&as->lock));
+}
+
 /** @}
  */
Index: kernel/genarch/src/mm/as_pt.c
===================================================================
--- kernel/genarch/src/mm/as_pt.c	(revision da1bafb8cf9a3b3be8ef21bc114daaa476a85190)
+++ kernel/genarch/src/mm/as_pt.c	(revision a820bf7a37ab31617197fc58a855210633e30b42)
@@ -52,4 +52,5 @@
 static void pt_lock(as_t *, bool);
 static void pt_unlock(as_t *, bool);
+static bool pt_locked(as_t *);
 
 as_operations_t as_pt_operations = {
@@ -57,5 +58,6 @@
 	.page_table_destroy = ptl0_destroy,
 	.page_table_lock = pt_lock,
-	.page_table_unlock = pt_unlock
+	.page_table_unlock = pt_unlock,
+	.page_table_locked = pt_locked,
 };
 
@@ -146,4 +148,16 @@
 }
 
+/** 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 pt_locked(as_t *as)
+{
+	return mutex_locked(&as->lock);
+}
+
 /** @}
  */
