On 2/14/08, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> Hello,
>
>  recently I have updated my qemu from 0.9.0 to 0.9.1 and had problems
>  with the remote debugger memory access. Especially the command
>
>  x /10i 0x4000
>
>  doesn't work, even if the PC is 0x4000.
>
>  I have tracked down the problem till target-sparc/translate.c, where the
>  following calls are done:
>
>     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)
>             return -1;
>
>  In 0.9.0 the last arg to get_physical_address was 'is_user', now it is
>  'mmu_idx'. is_user
>  is now evaluated in target-sparc/helper.c:get_physical_adress by
>
>    is_user = mmu_idx == MMU_USER_IDX;
>
>  So if 'mmu_idx' ist still 0 (and MMU_USER_IDX is also 0) the resulting
>  'is_user' is TRUE
>  and the later
>
>    error_code = access_table[*access_index][access_perms];
>     if (error_code && !((env->mmuregs[0] & MMU_NF) && is_user))
>         return error_code;
>
>  always fails with access_index 0/2 and access_perms 7.
>
>  I have changed the last arg of get_physical_address to 1 and all works as
>  expected.

Thank you for the analysis! I'll commit the change.


Reply via email to