Am 06.05.2012 21:27, schrieb malc: > The attached patch is broken for non SysV calling conventions, would be > nice if you could test things on Darwin (and, if your power5 box still has > AIX, on AIX)
I replaced AIX 5.x with openSUSE, sorry. :) > diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c > index dc40716..311af18 100644 > --- a/tcg/ppc/tcg-target.c > +++ b/tcg/ppc/tcg-target.c [...] > @@ -810,6 +829,17 @@ static void tcg_out_qemu_st (TCGContext *s, const TCGArg > *args, int opc) > #endif > > /* slow path */ > +#ifdef CONFIG_TCG_PASS_AREG0 > + tcg_out_mov (s, TCG_TYPE_I32, 3, TCG_AREG0); > +#if TARGET_LONG_BITS == 32 > + tcg_out_mov (s, TCG_TYPE_I32, 4, addr_reg); > + ir = 5; > +#else > + tcg_out_mov (s, TCG_TYPE_I32, 5, addr_reg2); > + tcg_out_mov (s, TCG_TYPE_I32, 6, addr_reg); Here we should be using r4 + r5 for non-aligned targets. Alternative patch sent that hopefully avoids such issues and the code duplication. If you prefer two separate code paths for some reason, please at least consider using a fool-proof alignment macro such as proposed. /-F > + ir = 7; > +#endif > +#else > #if TARGET_LONG_BITS == 32 > tcg_out_mov (s, TCG_TYPE_I32, 3, addr_reg); > ir = 4; [snip] -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg