qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] ARM: Virtual / Physical address translation


From: Laurent Desnogues
Subject: Re: [Qemu-devel] ARM: Virtual / Physical address translation
Date: Mon, 4 Jun 2012 11:29:35 +0200

On Thu, May 31, 2012 at 9:07 PM, Ira Ray Jenkins
<address@hidden> wrote:
> On Wed, May 30, 2012 at 10:30 AM, Laurent Desnogues
> <address@hidden> wrote:
>> On Wed, May 30, 2012 at 3:20 AM, Peter Maydell <address@hidden> wrote:
>>> On 30 May 2012 02:00, Ira Ray Jenkins <address@hidden> wrote:
>>>> What I would like is to be able to get the physical addresses of both
>>>> data and instructions. Can anyone help me work through how to get the
>>>> properly translated physical addresses given the virtual address?
>>>
>>> See the function get_phys_addr() in target-arm/helper.c ... That is
>>> a private function but if you're doing a local hack you can wire
>>> it up to what you need it for.
>>
>> Using that function directly is not that great an idea as it has
>> side effects on the environment.  IMHO the best is to duplicate
>> it and remove the side effects (which is what I did for my
>> cache simulator).
>>
>> BTW Edgar Iglesias has implemented a cache simulator in
>> QEMU.  I just can't remember where the repository is...
>>
>>
>> Laurent
>
> Would I also need to duplicate get_phys_addr_mpu/v5/v6 ?

Depending on the target CPU, you'd have to duplicate one of them.

> The side effects you mentioned, are these in the above functions?

I was wrong in my previous mail:  the changes to env are done
in cpu_arm_handle_mmu_fault which is the entry point to handle
VA/PA translation from generated code.

> Since I'm really only interested in the physical address - phys_ptr -
> , can I ignore protection & page size? What about access type and
> user?

You don't need to return these values.  But be careful about
translations that fault:  if you insert your helper call before the
code for the emulated ld/st, you can get faults and in this
case you probably don't want to log that memory access.

> Edgar's work was for the cris target, so I'm unsure if it is different
> for arm.

The way it's done should be similar.

> Basically, since I am just doing a memory trace dump for arm
> target, I just want a simple translation from virtual address to
> physical, unobtrusively - without modify the state/env. I'm not sure
> how to modify get_phys_addr*() to do this. Any help would be great.

I hope you have enough information now.


Laurent



reply via email to

[Prev in Thread] Current Thread [Next in Thread]