qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 11/20] memory: unify the two branches of cpu_registe


From: Avi Kivity
Subject: [Qemu-devel] [PATCH 11/20] memory: unify the two branches of cpu_register_physical_memory_log()
Date: Tue, 14 Feb 2012 11:27:41 +0200

Identical except that the second branch knows its not modifying an existing
subpage.

Signed-off-by: Avi Kivity <address@hidden>
---
 exec.c |   49 +++++++++++++++----------------------------------
 1 files changed, 15 insertions(+), 34 deletions(-)

diff --git a/exec.c b/exec.c
index 5d0afdb..6232a39 100644
--- a/exec.c
+++ b/exec.c
@@ -2625,7 +2625,6 @@ void cpu_register_physical_memory_log(MemoryRegionSection 
*section,
     target_phys_addr_t start_addr = section->offset_within_address_space;
     ram_addr_t size = section->size;
     target_phys_addr_t addr, end_addr;
-    uint16_t *p;
     CPUState *env;
     ram_addr_t orig_size = size;
     subpage_t *subpage;
@@ -2638,43 +2637,25 @@ void 
cpu_register_physical_memory_log(MemoryRegionSection *section,
 
     addr = start_addr;
     do {
-        p = phys_page_find_alloc(addr >> TARGET_PAGE_BITS, 0);
-        if (p && *p != phys_section_unassigned) {
-            uint16_t orig_memory= *p;
-            target_phys_addr_t start_addr2, end_addr2;
-            int need_subpage = 0;
-            MemoryRegion *mr = phys_sections[orig_memory].mr;
-
-            CHECK_SUBPAGE(addr, start_addr, start_addr2, end_addr, end_addr2,
-                          need_subpage);
-            if (need_subpage) {
-                if (!(mr->subpage)) {
-                    subpage = subpage_init((addr & TARGET_PAGE_MASK),
-                                           p, orig_memory);
-                } else {
-                    subpage = container_of(mr, subpage_t, iomem);
-                }
-                subpage_register(subpage, start_addr2, end_addr2,
-                                 section_index);
+        uint16_t *p = phys_page_find_alloc(addr >> TARGET_PAGE_BITS, 1);
+        uint16_t orig_memory = *p;
+        target_phys_addr_t start_addr2, end_addr2;
+        int need_subpage = 0;
+        MemoryRegion *mr = phys_sections[orig_memory].mr;
+
+        CHECK_SUBPAGE(addr, start_addr, start_addr2, end_addr, end_addr2,
+                      need_subpage);
+        if (need_subpage) {
+            if (!(mr->subpage)) {
+                subpage = subpage_init((addr & TARGET_PAGE_MASK),
+                                       p, orig_memory);
             } else {
-                *p = section_index;
+                subpage = container_of(mr, subpage_t, iomem);
             }
+            subpage_register(subpage, start_addr2, end_addr2,
+                             section_index);
         } else {
-            target_phys_addr_t start_addr2, end_addr2;
-            int need_subpage = 0;
-
-            p = phys_page_find_alloc(addr >> TARGET_PAGE_BITS, 1);
             *p = section_index;
-
-            CHECK_SUBPAGE(addr, start_addr, start_addr2, end_addr,
-                          end_addr2, need_subpage);
-
-            if (need_subpage) {
-                subpage = subpage_init((addr & TARGET_PAGE_MASK),
-                                       p, phys_section_unassigned);
-                subpage_register(subpage, start_addr2, end_addr2,
-                                 section_index);
-            }
         }
         addr += TARGET_PAGE_SIZE;
     } while (addr != end_addr);
-- 
1.7.9




reply via email to

[Prev in Thread] Current Thread [Next in Thread]