softmmu: Create qemu_target_pages_to_MiB()
authorJuan Quintela <quintela@redhat.com>
Thu, 11 May 2023 14:12:04 +0000 (16:12 +0200)
committerJuan Quintela <quintela@redhat.com>
Mon, 15 May 2023 08:33:03 +0000 (10:33 +0200)
Function that convert a number of target_pages into its size in MiB.

Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Message-Id: <20230511141208.17779-2-quintela@redhat.com>

include/exec/target_page.h
softmmu/physmem.c

index 96726c36a416379ecbaf7855479f1a7393063cb2..bbf37aea177879981e2458d7e00ee3a5a3f46e46 100644 (file)
@@ -18,4 +18,5 @@ size_t qemu_target_page_size(void);
 int qemu_target_page_bits(void);
 int qemu_target_page_bits_min(void);
 
+size_t qemu_target_pages_to_MiB(size_t pages);
 #endif
index 0e0182d9f2a47dc7872ccdb4831839bb0e874859..efaed36773c1689417b67e6e329b3c9f5c18c9c0 100644 (file)
@@ -3357,6 +3357,17 @@ int qemu_target_page_bits_min(void)
     return TARGET_PAGE_BITS_MIN;
 }
 
+/* Convert target pages to MiB (2**20). */
+size_t qemu_target_pages_to_MiB(size_t pages)
+{
+    int page_bits = TARGET_PAGE_BITS;
+
+    /* So far, the largest (non-huge) page size is 64k, i.e. 16 bits. */
+    g_assert(page_bits < 20);
+
+    return pages >> (20 - page_bits);
+}
+
 bool cpu_physical_memory_is_io(hwaddr phys_addr)
 {
     MemoryRegion*mr;