Add tb_page_addr_t

The page tracking code in exec.c is used by both userspace and system
emulation.  Userspace emulation uses it to track virtual pages, and
system emulation to track ram pages.  Introduce a new type to hold this
kind of address.

Signed-off-by: Paul Brook <paul@codesourcery.com>
This commit is contained in:
Paul Brook 2010-03-12 16:54:58 +00:00
parent 376a790970
commit 41c1b1c9eb
3 changed files with 52 additions and 37 deletions

View file

@ -125,12 +125,13 @@ static TranslationBlock *tb_find_slow(target_ulong pc,
{
TranslationBlock *tb, **ptb1;
unsigned int h;
target_ulong phys_pc, phys_page1, phys_page2, virt_page2;
tb_page_addr_t phys_pc, phys_page1, phys_page2;
target_ulong virt_page2;
tb_invalidated_flag = 0;
/* find translated block using physical mappings */
phys_pc = get_phys_addr_code(env, pc);
phys_pc = get_page_addr_code(env, pc);
phys_page1 = phys_pc & TARGET_PAGE_MASK;
phys_page2 = -1;
h = tb_phys_hash_func(phys_pc);
@ -147,7 +148,7 @@ static TranslationBlock *tb_find_slow(target_ulong pc,
if (tb->page_addr[1] != -1) {
virt_page2 = (pc & TARGET_PAGE_MASK) +
TARGET_PAGE_SIZE;
phys_page2 = get_phys_addr_code(env, virt_page2);
phys_page2 = get_page_addr_code(env, virt_page2);
if (tb->page_addr[1] == phys_page2)
goto found;
} else {