qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@web.de>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: dyngen-exec.h vs. qemu-common.h
Date: Sat, 13 Dec 2008 12:41:27 +0100	[thread overview]
Message-ID: <49439F67.8070502@web.de> (raw)
In-Reply-To: <761ea48b0812130243u251cd765u2aaac271c50bf557@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2829 bytes --]

Laurent Desnogues wrote:
> On Fri, Dec 5, 2008 at 9:45 AM, Jan Kiszka <jan.kiszka@web.de> wrote:
>> right now dyngen-exec.h prevents that qemu-common.h (or other headers
>> that drag in standard headers) can be included into all parts of qemu.
>> The reason for this is that dyngen-exec.h redefines a bunch of standard
>> types, and that is likely due to
>>
>> [dyngen-exec.h:]
>> /* NOTE: standard headers should be used with special care at this
>>   point because host CPU registers are used as global variables. Some
>>   host headers do not allow that. */
>>
>> Trying to add the noreturn definition to a central place, I wonder now
>> if that comment will still be valid when we only have TCG archs, i.e. if
>> the successor of dyngen-exec.h could possibly become compatible with
>> standard headers? Or what host headers on what host OS / distro are the
>> precise problem that could survive the dyngen era?
> 
> Here is my understaning (to be taken with a grain of salt as I don't
> know the dyngen era).
> 
> For dyngen some registers were globally allocated and great
> care had to be taken where they are used so that they are not
> used by included file (this can probably happen if you use some
> standard header that inlines code).  The files where this matters
> are the one containing execution loop (cpu-exec.c) and the
> one containing helper runtime that use the global registers
> (op_helper.c).
> 
> Basically once all op_helper.c files which still contain references
> to global registers are removed then we should be safe and
> we'll be able to get rid of hostregs_helper.h.
> 
> As an example here is what the situation is for the ARM target:
> 
> - three global registers are used
>    * env is a global register that contains the address of the
>      CPU state
>    * T0 and T1 are two temporaries for parameter passing
>      and result returning in op_helper
> 
> - in op_helper you can see that env, T0 and T1 are used
>   (note that except for the 5 last helpers in that file, these
>   helpers don't really have to be here, passing them the env
>   as a parameter should be enough).
> 
> So if we want to get rid of dyngen-exec.h we have to remove
> all references to global registers (and for the ARM target
> that's not very difficult though a bit of a pain if you look at how
> cpu_T0/T1 are used all over the place).  To look for what
> needs to be done you can start by looking for uses of
> tcg_global_reg_new*.
> 
> Note that, on top of my lack of knowledge of dyngen, I don't
> know system emulation so I may have missed some bits.
> 
> HTH,
> 
> Laurent

Yeah, thanks. That gives confidence that I can install a workaround to
cope with dyngen-exec.h dependencies for now and then look into
overcoming them finally.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]

      reply	other threads:[~2008-12-13 11:41 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-05  8:45 [Qemu-devel] dyngen-exec.h vs. qemu-common.h Jan Kiszka
2008-12-13  9:31 ` [Qemu-devel] " Jan Kiszka
2008-12-13 10:43 ` [Qemu-devel] " Laurent Desnogues
2008-12-13 11:41   ` Jan Kiszka [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=49439F67.8070502@web.de \
    --to=jan.kiszka@web.de \
    --cc=qemu-devel@nongnu.org \
    /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).