From: Liu Ping Fan <pingf...@linux.vnet.ibm.com> The secions like phys_section_unassigned always has fixed address in phys_sections, make them declared as macro, so we can use them when having more than one phys_sections, ie, more than one dispatch context.
Signed-off-by: Liu Ping Fan <pingf...@linux.vnet.ibm.com> --- exec.c | 22 ++++++++++++++-------- 1 files changed, 14 insertions(+), 8 deletions(-) diff --git a/exec.c b/exec.c index 281c007..6934c2d 100644 --- a/exec.c +++ b/exec.c @@ -82,10 +82,10 @@ int use_icount; static MemoryRegionSection *phys_sections; static unsigned phys_sections_nb, phys_sections_nb_alloc; -static uint16_t phys_section_unassigned; -static uint16_t phys_section_notdirty; -static uint16_t phys_section_rom; -static uint16_t phys_section_watch; +#define phys_section_unassigned 0 +#define phys_section_notdirty 1 +#define phys_section_rom 2 +#define phys_section_watch 3 /* Simple allocator for PhysPageEntry nodes */ static PhysPageEntry (*phys_map_nodes)[L2_SIZE]; @@ -1747,11 +1747,17 @@ static void mem_begin(MemoryListener *listener) static void core_begin(MemoryListener *listener) { + uint16_t n; + phys_sections_clear(); - phys_section_unassigned = dummy_section(&io_mem_unassigned); - phys_section_notdirty = dummy_section(&io_mem_notdirty); - phys_section_rom = dummy_section(&io_mem_rom); - phys_section_watch = dummy_section(&io_mem_watch); + n = dummy_section(&io_mem_unassigned); + assert(phys_section_unassigned == n); + n = dummy_section(&io_mem_notdirty); + assert(phys_section_notdirty == n); + n = dummy_section(&io_mem_rom); + assert(phys_section_rom == n); + n = dummy_section(&io_mem_watch); + assert(phys_section_watch == n); } static void tcg_commit(MemoryListener *listener) -- 1.7.4.4