qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Blue Swirl <blauwirbel@gmail.com>
To: "Raphaël Lefèvre" <taylor.lefevre@gmail.com>
Cc: QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] Changing the content of target cpu registers
Date: Sat, 22 Jan 2011 19:35:11 +0000	[thread overview]
Message-ID: <AANLkTim9nGuubPjmMA3EKfsbENDiG+3wJLxAj9kosdX6@mail.gmail.com> (raw)
In-Reply-To: <AANLkTimH2PVYSsJWj4KMeE8wDPfUqT95iWOJyC9v=Vbk@mail.gmail.com>

2011/1/21 Raphaël Lefèvre <taylor.lefevre@gmail.com>:
> On Wed, Jan 19, 2011 at 2:13 AM, Stefano Bonifazi
> <stefboombastic@gmail.com> wrote:
>> On 01/18/2011 06:17 PM, Blue Swirl wrote:
>>>
>>> On Tue, Jan 18, 2011 at 9:29 AM, Stefano Bonifazi
>>> <stefboombastic@gmail.com>  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	other threads:[~2011-01-22 19:36 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-18  9:29 [Qemu-devel] Changing the content of target cpu registers Stefano Bonifazi
2011-01-18 17:17 ` Blue Swirl
2011-01-18 18:13   ` Stefano Bonifazi
2011-01-21 22:41     ` Raphaël Lefèvre
2011-01-22 19:35       ` Blue Swirl [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=AANLkTim9nGuubPjmMA3EKfsbENDiG+3wJLxAj9kosdX6@mail.gmail.com \
    --to=blauwirbel@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=taylor.lefevre@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).