Index: kernel/arch/amd64/include/mm/km.h
===================================================================
--- kernel/arch/amd64/include/mm/km.h	(revision 40c8c17482d672e755c855c6fd5664b0e933e483)
+++ kernel/arch/amd64/include/mm/km.h	(revision 3b71e84dce17092725ada79fab0ccaf7ded86420)
@@ -36,4 +36,6 @@
 #define KERN_amd64_KM_H_
 
+#include <typedefs.h>
+
 #define KM_AMD64_IDENTITY_START		UINT64_C(0xffff800000000000)
 #define KM_AMD64_IDENTITY_SIZE		UINT64_C(0x0000400000000000)
@@ -44,4 +46,5 @@
 extern void km_identity_arch_init(void);
 extern void km_non_identity_arch_init(void);
+extern bool km_is_non_identity_arch(uintptr_t);
 
 #endif
Index: kernel/arch/amd64/src/mm/km.c
===================================================================
--- kernel/arch/amd64/src/mm/km.c	(revision 40c8c17482d672e755c855c6fd5664b0e933e483)
+++ kernel/arch/amd64/src/mm/km.c	(revision 3b71e84dce17092725ada79fab0ccaf7ded86420)
@@ -34,4 +34,6 @@
 #include <mm/km.h>
 #include <config.h>
+#include <typedefs.h>
+#include <macros.h>
 
 void km_identity_arch_init(void)
@@ -47,4 +49,10 @@
 }
 
+bool km_is_non_identity_arch(uintptr_t addr)
+{
+	return iswithin(KM_AMD64_NON_IDENTITY_START,
+	    KM_AMD64_NON_IDENTITY_SIZE, addr, 1);
+}
+
 /** @}
  */
