diff options
author | blueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-02-14 17:46:44 +0000 |
---|---|---|
committer | blueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-02-14 17:46:44 +0000 |
commit | 9e31b9e28a894c582b8ecaeb2d40e55e407aacd0 (patch) | |
tree | f64c3740695adab523474d20723c9be0bc96f10e | |
parent | d0dc7dc3274a88db1c9941614454ed842d62cf91 (diff) | |
download | qemu-9e31b9e28a894c582b8ecaeb2d40e55e407aacd0.tar.gz qemu-9e31b9e28a894c582b8ecaeb2d40e55e407aacd0.tar.bz2 qemu-9e31b9e28a894c582b8ecaeb2d40e55e407aacd0.zip |
Fix remote debugger memory access problems reported by Matthias Stein
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3982 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r-- | target-sparc/cpu.h | 13 | ||||
-rw-r--r-- | target-sparc/translate.c | 6 |
2 files changed, 12 insertions, 7 deletions
diff --git a/target-sparc/cpu.h b/target-sparc/cpu.h index e0715a1a70..8a4cdbc2d0 100644 --- a/target-sparc/cpu.h +++ b/target-sparc/cpu.h @@ -338,20 +338,23 @@ void cpu_check_irqs(CPUSPARCState *env); #ifdef TARGET_SPARC64 #define MMU_MODE2_SUFFIX _hypv #endif -#define MMU_USER_IDX 0 +#define MMU_USER_IDX 0 +#define MMU_KERNEL_IDX 1 +#define MMU_HYPV_IDX 2 + static inline int cpu_mmu_index (CPUState *env) { #if defined(CONFIG_USER_ONLY) - return 0; + return MMU_USER_IDX; #elif !defined(TARGET_SPARC64) return env->psrs; #else if (!env->psrs) - return 0; + return MMU_USER_IDX; else if ((env->hpstate & HS_PRIV) == 0) - return 1; + return MMU_KERNEL_IDX; else - return 2; + return MMU_HYPV_IDX; #endif } diff --git a/target-sparc/translate.c b/target-sparc/translate.c index eb3b23baed..6356136711 100644 --- a/target-sparc/translate.c +++ b/target-sparc/translate.c @@ -4194,8 +4194,10 @@ target_phys_addr_t cpu_get_phys_page_debug(CPUState *env, target_ulong addr) target_phys_addr_t phys_addr; int prot, access_index; - if (get_physical_address(env, &phys_addr, &prot, &access_index, addr, 2, 0) != 0) - if (get_physical_address(env, &phys_addr, &prot, &access_index, addr, 0, 0) != 0) + if (get_physical_address(env, &phys_addr, &prot, &access_index, addr, 2, + MMU_KERNEL_IDX) != 0) + if (get_physical_address(env, &phys_addr, &prot, &access_index, addr, + 0, MMU_KERNEL_IDX) != 0) return -1; if (cpu_get_physical_page_desc(phys_addr) == IO_MEM_UNASSIGNED) return -1; |