tcg-ppc: Use uintptr_t in ppc_tb_set_jmp_target

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Avoid some hard-codings of TCG_TYPE_I64

Using more appropriate _PTR or _REG where possible.

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Move functions around

Code movement only.  This will allow us to make use of the
other tcg_out_* functions in tidying their implementations.

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Relax register restrictions in tcg_out_mem_long

In order to be able to use tcg_out_ld/st sensibly with scratch
registers, assert only when we'd incorrectly clobber a scratch.

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Use tcg_out_{ld,st,cmp} internally

Rather than using tcg_out32 and opcodes directly.  This allows us
to remove LD_ADDR and CMP_L macros.

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Make TCG_AREG0 and TCG_REG_CALL_STACK enum constants

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Move call macros out of tcg-target.h

These values are private to tcg.c; we don't need to expose
this nonsense to the translators.

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Fix TCG_TARGET_CALL_STACK_OFFSET

The calling convention reserves space for the 8 register parameters on
the stack, so using only 6*8=48 as the offset was wrong.  We never saw
this bug because we don't have any helpers with more than 5 parameters.

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Better parameterize the stack frame

In preparation for supporting other ABIs.

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Use the correct test in tcg_out_call

The correct test uses the _CALL_AIX macro, not a host-specific macro.

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Support the ppc64 elfv2 ABI

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc: Adjust tcg_out_call for ELFv2

The new ELFv2 ABI, used by default on powerpc64le-linux hosts,
introduced some changes that are incompatible with code currently
generated by the ppc64 TGC target.  In particular, we no longer
use function descriptors.

This patch adds support for the ELFv2 ABI in the ppc64 TGC
function call and function prologue sequences.

Signed-off-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Merge 32-bit ABIs into the prologue / frame code

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Fix sub2 implementation

All sorts of confusion on argument ordering.

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Begin merging ppc32 with ppc64

Just enough to compile, assuming you edit config-host.mak manually.
It will still abort at runtime, due to missing brcond2, setcond2, mulu2.

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Merge ppc32 brcond2, setcond2, muluh

Now passes tcg_add_target_add_op_defs assertions, but
not complete enough to function.

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Merge ppc32 qemu_ld/st

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Merge ppc32 register usage

Good enough to run some instructions before things go awry.

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Support mulsh_i32

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ppc64: Disable USE_DIRECT_JUMP for the moment

Signed-off-by: Richard Henderson <rth@twiddle.net>