[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] sparc32 remote debugger mem access problems with 0.9.1
From: |
Blue Swirl |
Subject: |
Re: [Qemu-devel] sparc32 remote debugger mem access problems with 0.9.1 |
Date: |
Thu, 14 Feb 2008 19:43:13 +0200 |
On 2/14/08, address@hidden <address@hidden> 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.