Index: kernel/generic/include/mm/as.h
===================================================================
--- kernel/generic/include/mm/as.h	(revision 8be323084b791c62927f9cbb14696265246370dd)
+++ kernel/generic/include/mm/as.h	(revision 3b3fcf369f7972634c32240f6c2c7e342deadefe)
@@ -322,4 +322,5 @@
 extern sys_errno_t sys_as_area_resize(uintptr_t, size_t, unsigned int);
 extern sys_errno_t sys_as_area_change_flags(uintptr_t, unsigned int);
+extern sys_errno_t sys_as_area_get_info(uintptr_t, as_area_info_t *);
 extern sys_errno_t sys_as_area_destroy(uintptr_t);
 
Index: kernel/generic/src/mm/as.c
===================================================================
--- kernel/generic/src/mm/as.c	(revision 8be323084b791c62927f9cbb14696265246370dd)
+++ kernel/generic/src/mm/as.c	(revision 3b3fcf369f7972634c32240f6c2c7e342deadefe)
@@ -2229,4 +2229,24 @@
 }
 
+sys_errno_t sys_as_area_get_info(uintptr_t address, as_area_info_t *dest)
+{
+	as_area_t *area;
+
+	mutex_lock(&AS->lock);
+	area = find_area_and_lock(AS, address);
+	if (area == NULL) {
+		mutex_unlock(&AS->lock);
+		return ENOENT;
+	}
+
+	dest->start_addr = area->base;
+	dest->size = P2SZ(area->pages);
+	dest->flags = area->flags;
+
+	mutex_unlock(&area->lock);
+	mutex_unlock(&AS->lock);
+	return EOK;
+}
+
 sys_errno_t sys_as_area_destroy(uintptr_t address)
 {
Index: kernel/generic/src/syscall/syscall.c
===================================================================
--- kernel/generic/src/syscall/syscall.c	(revision 8be323084b791c62927f9cbb14696265246370dd)
+++ kernel/generic/src/syscall/syscall.c	(revision 3b3fcf369f7972634c32240f6c2c7e342deadefe)
@@ -146,4 +146,5 @@
 	[SYS_AS_AREA_RESIZE] = (syshandler_t) sys_as_area_resize,
 	[SYS_AS_AREA_CHANGE_FLAGS] = (syshandler_t) sys_as_area_change_flags,
+	[SYS_AS_AREA_GET_INFO] = (syshandler_t) sys_as_area_get_info,
 	[SYS_AS_AREA_DESTROY] = (syshandler_t) sys_as_area_destroy,
 
