From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:39728) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RxEgK-0002zQ-AJ for qemu-devel@nongnu.org; Tue, 14 Feb 2012 04:28:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RxEgC-0003X0-JV for qemu-devel@nongnu.org; Tue, 14 Feb 2012 04:28:16 -0500 Received: from mx1.redhat.com ([209.132.183.28]:2358) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RxEgC-0003Wj-Ck for qemu-devel@nongnu.org; Tue, 14 Feb 2012 04:28:08 -0500 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q1E9S7JU004845 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 14 Feb 2012 04:28:07 -0500 Received: from cleopatra.tlv.redhat.com (cleopatra.tlv.redhat.com [10.35.255.11]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q1E9S3e2012955 for ; Tue, 14 Feb 2012 04:28:07 -0500 From: Avi Kivity Date: Tue, 14 Feb 2012 11:27:49 +0200 Message-Id: <1329211670-11548-20-git-send-email-avi@redhat.com> In-Reply-To: <1329211670-11548-1-git-send-email-avi@redhat.com> References: <1329211670-11548-1-git-send-email-avi@redhat.com> Subject: [Qemu-devel] [PATCH 19/20] memory: unify PhysPageEntry::node and ::leaf List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org They have the same type, unify them. Signed-off-by: Avi Kivity --- exec.c | 38 ++++++++++++++++++-------------------- 1 files changed, 18 insertions(+), 20 deletions(-) diff --git a/exec.c b/exec.c index 98c0056..a2015f7 100644 --- a/exec.c +++ b/exec.c @@ -193,10 +193,8 @@ static uint16_t phys_section_unassigned; struct PhysPageEntry { - union { - uint16_t leaf; /* index into phys_sections */ - uint16_t node; /* index into phys_map_nodes */ - } u; + /* index into phys_sections (last level) or phys_map_nodes (others) */ + uint16_t ptr; }; /* Simple allocator for PhysPageEntry nodes */ @@ -207,7 +205,7 @@ struct PhysPageEntry { /* This is a multi-level map on the physical address space. The bottom level has pointers to MemoryRegionSections. */ -static PhysPageEntry phys_map = { .u.node = PHYS_MAP_NODE_NIL }; +static PhysPageEntry phys_map = { .ptr = PHYS_MAP_NODE_NIL }; static void io_mem_init(void); static void memory_map_init(void); @@ -425,7 +423,7 @@ static uint16_t phys_map_node_alloc(void) assert(ret != PHYS_MAP_NODE_NIL); assert(ret != phys_map_nodes_nb_alloc); for (i = 0; i < L2_SIZE; ++i) { - phys_map_nodes[ret][i].u.node = PHYS_MAP_NODE_NIL; + phys_map_nodes[ret][i].ptr = PHYS_MAP_NODE_NIL; } return ret; } @@ -443,22 +441,22 @@ static void phys_page_set_level(PhysPageEntry *lp, target_phys_addr_t *index, PhysPageEntry *p; int i; - if (lp->u.node == PHYS_MAP_NODE_NIL) { - lp->u.node = phys_map_node_alloc(); - p = phys_map_nodes[lp->u.node]; + if (lp->ptr == PHYS_MAP_NODE_NIL) { + lp->ptr = phys_map_node_alloc(); + p = phys_map_nodes[lp->ptr]; if (level == 0) { for (i = 0; i < L2_SIZE; i++) { - p[i].u.leaf = phys_section_unassigned; + p[i].ptr = phys_section_unassigned; } } } else { - p = phys_map_nodes[lp->u.node]; + p = phys_map_nodes[lp->ptr]; } lp = &p[(*index >> (level * L2_BITS)) & (L2_SIZE - 1)]; while (*nb && lp < &p[L2_SIZE]) { if (level == 0) { - lp->u.leaf = leaf; + lp->ptr = leaf; ++*index; --*nb; } else { @@ -487,14 +485,14 @@ static MemoryRegionSection phys_page_find(target_phys_addr_t index) uint16_t s_index = phys_section_unassigned; for (i = P_L2_LEVELS - 1; i >= 0; i--) { - if (lp.u.node == PHYS_MAP_NODE_NIL) { + if (lp.ptr == PHYS_MAP_NODE_NIL) { goto not_found; } - p = phys_map_nodes[lp.u.node]; + p = phys_map_nodes[lp.ptr]; lp = p[(index >> (i * L2_BITS)) & (L2_SIZE - 1)]; } - s_index = lp.u.leaf; + s_index = lp.ptr; not_found: section = phys_sections[s_index]; index <<= TARGET_PAGE_BITS; @@ -2576,19 +2574,19 @@ static void destroy_l2_mapping(PhysPageEntry *lp, unsigned level) unsigned i; PhysPageEntry *p; - if (lp->u.node == PHYS_MAP_NODE_NIL) { + if (lp->ptr == PHYS_MAP_NODE_NIL) { return; } - p = phys_map_nodes[lp->u.node]; + p = phys_map_nodes[lp->ptr]; for (i = 0; i < L2_SIZE; ++i) { if (level > 0) { destroy_l2_mapping(&p[i], level - 1); } else { - destroy_page_desc(p[i].u.leaf); + destroy_page_desc(p[i].ptr); } } - lp->u.node = PHYS_MAP_NODE_NIL; + lp->ptr = PHYS_MAP_NODE_NIL; } static void destroy_all_mappings(void) @@ -3575,7 +3573,7 @@ static void core_begin(MemoryListener *listener) { destroy_all_mappings(); phys_sections_clear(); - phys_map.u.node = PHYS_MAP_NODE_NIL; + phys_map.ptr = PHYS_MAP_NODE_NIL; phys_section_unassigned = dummy_section(&io_mem_unassigned); } -- 1.7.9