[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH 1/3] TCG: Mac OS X support for ppc64 target
From: |
malc |
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) |
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 <address@hidden>
> Cc: malc <address@hidden>
> ---
> 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:address@hidden
- [Qemu-devel] Adding support for Mac OS X ppc64 host, Andreas Faerber, 2009/12/05
- [Qemu-devel] [PATCH 1/3] TCG: Mac OS X support for ppc64 target, Andreas Faerber, 2009/12/05
- [Qemu-devel] [PATCH 2/3] Cocoa: ppc64 host support, Andreas Faerber, 2009/12/05
- [Qemu-devel] Re: [PATCH 1/3] TCG: Mac OS X support for ppc64 target,
malc <=
- [Qemu-devel] Re: [PATCH 1/3] TCG: Mac OS X support for ppc64 target, Andreas Färber, 2009/12/06
- [Qemu-devel] Re: [PATCH 1/3] TCG: Mac OS X support for ppc64 target, malc, 2009/12/06
- [Qemu-devel] [PATCH v2 1/3] TCG: Mac OS X support for ppc64 target, Andreas Faerber, 2009/12/06
- [Qemu-devel] [PATCH v2 2/3] Cocoa: ppc64 host support, Andreas Faerber, 2009/12/06
- [Qemu-devel] [PATCH v2 3/3] Cocoa: Silence warnings, Andreas Faerber, 2009/12/06
- [Qemu-devel] Re: [PATCH v2 2/3] Cocoa: ppc64 host support, Alexander Graf, 2009/12/06
- [Qemu-devel] Re: [PATCH v2 2/3] Cocoa: ppc64 host support, Andreas Färber, 2009/12/06
- [Qemu-devel] Re: [PATCH v2 2/3] Cocoa: ppc64 host support, Alexander Graf, 2009/12/06
- [Qemu-devel] Re: [PATCH v2 2/3] Cocoa: ppc64 host support, Mike Kronenberg, 2009/12/06
- [Qemu-devel] Re: [PATCH v2 2/3] Cocoa: ppc64 host support, Andreas Färber, 2009/12/06