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 338 #ifdef TARGET_SPARC64
339 339 #define MMU_MODE2_SUFFIX _hypv
340 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 345 static inline int cpu_mmu_index (CPUState *env)
343 346 {
344 347 #if defined(CONFIG_USER_ONLY)
345   - return 0;
  348 + return MMU_USER_IDX;
346 349 #elif !defined(TARGET_SPARC64)
347 350 return env->psrs;
348 351 #else
349 352 if (!env->psrs)
350   - return 0;
  353 + return MMU_USER_IDX;
351 354 else if ((env->hpstate & HS_PRIV) == 0)
352   - return 1;
  355 + return MMU_KERNEL_IDX;
353 356 else
354   - return 2;
  357 + return MMU_HYPV_IDX;
355 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 4194 target_phys_addr_t phys_addr;
4195 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 4201 return -1;
4200 4202 if (cpu_get_physical_page_desc(phys_addr) == IO_MEM_UNASSIGNED)
4201 4203 return -1;
... ...