Commit 9e31b9e28a894c582b8ecaeb2d40e55e407aacd0

Authored by blueswir1
1 parent d0dc7dc3

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
target-sparc/cpu.h
@@ -338,20 +338,23 @@ void cpu_check_irqs(CPUSPARCState *env); @@ -338,20 +338,23 @@ void cpu_check_irqs(CPUSPARCState *env);
338 #ifdef TARGET_SPARC64 338 #ifdef TARGET_SPARC64
339 #define MMU_MODE2_SUFFIX _hypv 339 #define MMU_MODE2_SUFFIX _hypv
340 #endif 340 #endif
341 -#define MMU_USER_IDX 0 341 +#define MMU_USER_IDX 0
  342 +#define MMU_KERNEL_IDX 1
  343 +#define MMU_HYPV_IDX 2
  344 +
342 static inline int cpu_mmu_index (CPUState *env) 345 static inline int cpu_mmu_index (CPUState *env)
343 { 346 {
344 #if defined(CONFIG_USER_ONLY) 347 #if defined(CONFIG_USER_ONLY)
345 - return 0; 348 + return MMU_USER_IDX;
346 #elif !defined(TARGET_SPARC64) 349 #elif !defined(TARGET_SPARC64)
347 return env->psrs; 350 return env->psrs;
348 #else 351 #else
349 if (!env->psrs) 352 if (!env->psrs)
350 - return 0; 353 + return MMU_USER_IDX;
351 else if ((env->hpstate & HS_PRIV) == 0) 354 else if ((env->hpstate & HS_PRIV) == 0)
352 - return 1; 355 + return MMU_KERNEL_IDX;
353 else 356 else
354 - return 2; 357 + return MMU_HYPV_IDX;
355 #endif 358 #endif
356 } 359 }
357 360
target-sparc/translate.c
@@ -4194,8 +4194,10 @@ target_phys_addr_t cpu_get_phys_page_debug(CPUState *env, target_ulong addr) @@ -4194,8 +4194,10 @@ target_phys_addr_t cpu_get_phys_page_debug(CPUState *env, target_ulong addr)
4194 target_phys_addr_t phys_addr; 4194 target_phys_addr_t phys_addr;
4195 int prot, access_index; 4195 int prot, access_index;
4196 4196
4197 - if (get_physical_address(env, &phys_addr, &prot, &access_index, addr, 2, 0) != 0)  
4198 - if (get_physical_address(env, &phys_addr, &prot, &access_index, addr, 0, 0) != 0) 4197 + if (get_physical_address(env, &phys_addr, &prot, &access_index, addr, 2,
  4198 + MMU_KERNEL_IDX) != 0)
  4199 + if (get_physical_address(env, &phys_addr, &prot, &access_index, addr,
  4200 + 0, MMU_KERNEL_IDX) != 0)
4199 return -1; 4201 return -1;
4200 if (cpu_get_physical_page_desc(phys_addr) == IO_MEM_UNASSIGNED) 4202 if (cpu_get_physical_page_desc(phys_addr) == IO_MEM_UNASSIGNED)
4201 return -1; 4203 return -1;