qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] Changing the content of target cpu registers


From: Blue Swirl
Subject: Re: [Qemu-devel] Changing the content of target cpu registers
Date: Sat, 22 Jan 2011 19:35:11 +0000

2011/1/21 Raphaël Lefèvre <address@hidden>:
> On Wed, Jan 19, 2011 at 2:13 AM, Stefano Bonifazi
> <address@hidden> wrote:
>> On 01/18/2011 06:17 PM, Blue Swirl wrote:
>>>
>>> On Tue, Jan 18, 2011 at 9:29 AM, Stefano Bonifazi
>>> <address@hidden>  wrote:
>>>>
>>>> Hi all!
>>>>  I am working on qemu-user (qemu-ppc).
>>>> I'd like to edit the values of target registers during the execution. Can
>>>> I
>>>> do that by simply changing the content of env->gpr[] or do these only
>>>> contain a copy of the values of the registers?
>>>> In this last case, where are the real values of the target registers
>>>> stored
>>>> so that by modifying them I can alter the behavior of the target code
>>>> execution?
>>>
>>> env->gpr is the canonical location, but the translator assigns TCG
>>> variables to them (cpu_gpr[] in translate.c), so GPR contents may be
>>> cached to these. But when helpers are called or the TB finishes,
>>> env->gpr should be valid again.
>>
>> Hi!
>>  Thank you for your answer!
>> So if I understand well if I set env->gpr in a code section where there is
>> no TCG translation on progress, I can edit directly the target CPU register
>> right?
>> Best Regards!
>> Stefano B.
>>
>>
>
> In fact, I need to apologize for my poor comprehension to your
> questions even after digesting the explinations from Blue Swirl. By
> tracing code of qemu, "env->gpr" should be able to be modified any
> place directly(or indirectly) whether the TCG involved or not.

Not exactly: you can't mix TCGv cpu_gpr[x] variable use with
env->gpr[x] access using tcg_gen_{ld,st}_tl(foo, cpu_env,
offsetof(CPUState, gpr[x])). The loads/stores would use env->gpr[x]
directly, bypassing possibly cached values in registers assigned by
TCG.

This may be visible by tracing the generated code, not code in
cpu-exec.c or op_helper.c.



reply via email to

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