qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: malc <av1474@comtv.ru>
To: Andreas Faerber <andreas.faerber@web.de>
Cc: qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: [PATCH 1/3] TCG: Mac OS X support for ppc64 target
Date: Sun, 6 Dec 2009 08:13:49 +0300 (MSK)	[thread overview]
Message-ID: <Pine.LNX.4.64.0912060810001.2506@linmac.oyster.ru> (raw)
In-Reply-To: <1260075477-76209-2-git-send-email-andreas.faerber@web.de>

On Sun, 6 Dec 2009, Andreas Faerber wrote:

> Darwin/ppc64 does not use function descriptors,
> adapt prologue and tcg_out_call accordingly.
> GPR2 is available for general use, so let's use it.
> 
> http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/LowLevelABI/110-64-bit_PowerPC_Function_Calling_Conventions/64bitPowerPC.html
> 
> Signed-off-by: Andreas Faerber <andreas.faerber@web.de>
> Cc: malc <av1474@comtv.ru>
> ---
>  tcg/ppc64/tcg-target.c |   30 ++++++++++++++++++++++++++++++
>  1 files changed, 30 insertions(+), 0 deletions(-)
> 
> diff --git a/tcg/ppc64/tcg-target.c b/tcg/ppc64/tcg-target.c
> index a612e10..bf9b7d9 100644
> --- a/tcg/ppc64/tcg-target.c
> +++ b/tcg/ppc64/tcg-target.c
> @@ -104,6 +104,9 @@ static const int tcg_target_reg_alloc_order[] = {
>      TCG_REG_R29,
>      TCG_REG_R30,
>      TCG_REG_R31,
> +#ifdef __APPLE__
> +    TCG_REG_R2,
> +#endif
>      TCG_REG_R3,
>      TCG_REG_R4,
>      TCG_REG_R5,
> @@ -112,7 +115,9 @@ static const int tcg_target_reg_alloc_order[] = {
>      TCG_REG_R8,
>      TCG_REG_R9,
>      TCG_REG_R10,
> +#ifndef __APPLE__
>      TCG_REG_R11,
> +#endif
>      TCG_REG_R12,
>      TCG_REG_R24,
>      TCG_REG_R25,
> @@ -136,6 +141,10 @@ static const int tcg_target_call_oarg_regs[2] = {
>  };
>  
>  static const int tcg_target_callee_save_regs[] = {
> +#ifdef __APPLE__
> +    TCG_REG_R11,
> +    TCG_REG_R13,
> +#endif

No need to add R13, it's reserved anyhow.

>      TCG_REG_R14,
>      TCG_REG_R15,
>      TCG_REG_R16,
> @@ -477,8 +486,21 @@ static void tcg_out_movi (TCGContext *s, TCGType type,
>      }
>  }
>  
> +#ifdef __APPLE__
> +static void tcg_out_b (TCGContext *s, int mask, tcg_target_long target);
> +#endif
> +
>  static void tcg_out_call (TCGContext *s, tcg_target_long arg, int const_arg)
>  {
> +#ifdef __APPLE__
> +    if (const_arg) {
> +        tcg_out_b (s, LK, arg);
> +    }
> +    else {
> +        tcg_out32 (s, MTSPR | RS (arg) | LR);
> +        tcg_out32 (s, BCLR | BO_ALWAYS | LK);
> +    }
> +#else
>      int reg;
>  
>      if (const_arg) {
> @@ -492,6 +514,7 @@ static void tcg_out_call (TCGContext *s, tcg_target_long arg, int const_arg)
>      tcg_out32 (s, LD | RT (11) | RA (reg) | 16);
>      tcg_out32 (s, LD | RT (2) | RA (reg) | 8);
>      tcg_out32 (s, BCCTR | BO_ALWAYS | LK);
> +#endif
>  }
>  
>  static void tcg_out_ldst (TCGContext *s, int ret, int addr,
> @@ -859,10 +882,12 @@ void tcg_target_qemu_prologue (TCGContext *s)
>          ;
>      frame_size = (frame_size + 15) & ~15;
>  
> +#ifndef __APPLE__
>      /* First emit adhoc function descriptor */
>      addr = (uint64_t) s->code_ptr + 24;
>      tcg_out32 (s, addr >> 32); tcg_out32 (s, addr); /* entry point */
>      s->code_ptr += 16;          /* skip TOC and environment pointer */
> +#endif
>  
>      /* Prologue */
>      tcg_out32 (s, MFSPR | RT (0) | LR);

The frame format is different to that of PPC-elf64abi, shouldn't really
make a difference here, then again i don't have access to PPC64 Mac OSX,
so can't really verify that.

> @@ -1516,6 +1541,9 @@ void tcg_target_init (TCGContext *s)
>      tcg_regset_set32 (tcg_target_available_regs[TCG_TYPE_I64], 0, 0xffffffff);
>      tcg_regset_set32 (tcg_target_call_clobber_regs, 0,
>                       (1 << TCG_REG_R0) |
> +#ifdef __APPLE__
> +                     (1 << TCG_REG_R2) |
> +#endif
>                       (1 << TCG_REG_R3) |
>                       (1 << TCG_REG_R4) |
>                       (1 << TCG_REG_R5) |
> @@ -1531,7 +1559,9 @@ void tcg_target_init (TCGContext *s)
>      tcg_regset_clear (s->reserved_regs);
>      tcg_regset_set_reg (s->reserved_regs, TCG_REG_R0);
>      tcg_regset_set_reg (s->reserved_regs, TCG_REG_R1);
> +#ifndef __APPLE__
>      tcg_regset_set_reg (s->reserved_regs, TCG_REG_R2);
> +#endif
>      tcg_regset_set_reg (s->reserved_regs, TCG_REG_R13);
>  
>  #ifdef CONFIG_USE_GUEST_BASE
> 

Otherwise looks good.. Should i commit it with R13 fixed?

-- 
mailto:av1474@comtv.ru

  parent reply	other threads:[~2009-12-06  5:13 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-06  4:57 [Qemu-devel] Adding support for Mac OS X ppc64 host Andreas Faerber
2009-12-06  4:57 ` [Qemu-devel] [PATCH 1/3] TCG: Mac OS X support for ppc64 target Andreas Faerber
2009-12-06  4:57   ` [Qemu-devel] [PATCH 2/3] Cocoa: ppc64 host support Andreas Faerber
2009-12-06  4:57     ` [Qemu-devel] [PATCH 3/3] Cocoa: Silence warnings Andreas Faerber
2009-12-06  5:13   ` malc [this message]
2009-12-06  5:25     ` [Qemu-devel] Re: [PATCH 1/3] TCG: Mac OS X support for ppc64 target Andreas Färber
2009-12-06  6:28       ` malc
2009-12-06 13:00         ` [Qemu-devel] [PATCH v2 " Andreas Faerber
2009-12-06 13:00           ` [Qemu-devel] [PATCH v2 2/3] Cocoa: ppc64 host support Andreas Faerber
2009-12-06 13:00             ` [Qemu-devel] [PATCH v2 3/3] Cocoa: Silence warnings Andreas Faerber
2009-12-06 13:02             ` [Qemu-devel] Re: [PATCH v2 2/3] Cocoa: ppc64 host support Alexander Graf
2009-12-06 13:23               ` Andreas Färber
2009-12-06 13:32                 ` Alexander Graf
2009-12-06 13:41             ` Mike Kronenberg
2009-12-06 14:09               ` Andreas Färber
2009-12-06 15:21                 ` [Qemu-devel] [PATCH v3 1/3] TCG: Mac OS X support for ppc64 target Andreas Faerber
2009-12-06 15:21                   ` [Qemu-devel] [PATCH v3 2/3] Cocoa: ppc64 host support Andreas Faerber
2009-12-06 15:21                     ` [Qemu-devel] [PATCH v3 3/3] Cocoa: Silence warnings Andreas Faerber
2009-12-06 13:08         ` [Qemu-devel] Re: [PATCH 1/3] TCG: Mac OS X support for ppc64 target Andreas Färber
2009-12-06  5:14 ` [Qemu-devel] Adding support for Mac OS X ppc64 host malc
2009-12-06  5:41   ` Andreas Färber
2009-12-06  6:37     ` malc
2009-12-11 21:32       ` Andreas Färber
2009-12-12 13:00         ` malc
2009-12-15 17:00         ` malc
2009-12-15 22:36           ` Andreas Färber
2009-12-12  1:21       ` Andreas Färber
2009-12-12 12:58         ` malc

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=Pine.LNX.4.64.0912060810001.2506@linmac.oyster.ru \
    --to=av1474@comtv.ru \
    --cc=andreas.faerber@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).