diff options
author | Tsuneo Saito <tsnsaito@gmail.com> | 2011-07-22 00:16:29 +0900 |
---|---|---|
committer | Blue Swirl <blauwirbel@gmail.com> | 2011-07-21 19:59:29 +0000 |
commit | 321365ab1734cb151090fc0b5a7bef3b97807115 (patch) | |
tree | 6373c5188c84d28c818facdaed5f21fe8cd65f95 | |
parent | ccc76c24efdb06b895b8ff3d0a932c905ff483d4 (diff) | |
download | hqemu-321365ab1734cb151090fc0b5a7bef3b97807115.zip hqemu-321365ab1734cb151090fc0b5a7bef3b97807115.tar.gz |
SPARC64: introduce a convenience function for getting physical addresses
Introduce cpu_sparc_get_phys_page() to be used as a help for splitting
cpu_get_phys_page_debug() from cpu_get_phys_page_nofault().
Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
-rw-r--r-- | target-sparc/helper.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/target-sparc/helper.c b/target-sparc/helper.c index f9b7fe2..9acbcae 100644 --- a/target-sparc/helper.c +++ b/target-sparc/helper.c @@ -736,18 +736,26 @@ void dump_mmu(FILE *f, fprintf_function cpu_fprintf, CPUState *env) #if !defined(CONFIG_USER_ONLY) +static int cpu_sparc_get_phys_page(CPUState *env, target_phys_addr_t *phys, + target_ulong addr, int rw, int mmu_idx) +{ + target_ulong page_size; + int prot, access_index; + + return get_physical_address(env, phys, &prot, &access_index, addr, rw, + mmu_idx, &page_size); +} + target_phys_addr_t cpu_get_phys_page_nofault(CPUState *env, target_ulong addr, int mmu_idx) { target_phys_addr_t phys_addr; - target_ulong page_size; - int prot, access_index; - if (get_physical_address(env, &phys_addr, &prot, &access_index, addr, 2, - mmu_idx, &page_size) != 0) - if (get_physical_address(env, &phys_addr, &prot, &access_index, addr, - 0, mmu_idx, &page_size) != 0) + if (cpu_sparc_get_phys_page(env, &phys_addr, addr, 2, mmu_idx) != 0) { + if (cpu_sparc_get_phys_page(env, &phys_addr, addr, 0, mmu_idx) != 0) { return -1; + } + } if (cpu_get_physical_page_desc(phys_addr) == IO_MEM_UNASSIGNED) return -1; return phys_addr; |