]> git.ipfire.org Git - thirdparty/qemu.git/commit - tcg/ppc64/tcg-target.h
tcg: Optionally sign-extend 32-bit arguments for 64-bit hosts.
authorRichard Henderson <rth@twiddle.net>
Tue, 15 Jun 2010 00:35:27 +0000 (17:35 -0700)
committerAurelien Jarno <aurelien@aurel32.net>
Wed, 16 Jun 2010 09:29:11 +0000 (11:29 +0200)
commit2bece2c88331f024a46527634e3dd91c71d22141
tree2275cb777821df8aa66ea092bae2124b9923d01b
parentd2c5efd89fe319f150aba0b67e394f23f6c07ba6
tcg: Optionally sign-extend 32-bit arguments for 64-bit hosts.

Some hosts (amd64, ia64) have an ABI that ignores the high bits
of the 64-bit register when passing 32-bit arguments.  Others
require the value to be properly sign-extended for the type.
I.e. "int32_t" must be sign-extended and "uint32_t" must be
zero-extended to 64-bits.

To effect this, extend the "sizemask" parameter to tcg_gen_callN
to include the signedness of the type of each parameter.  If the
tcg target requires it, extend each 32-bit argument into a 64-bit
temp and pass that to the function call.

This ABI feature is required by sparc64, ppc64 and s390x.

Signed-off-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
def-helper.h
target-i386/ops_sse_header.h
target-ppc/helper.h
tcg/ppc64/tcg-target.h
tcg/s390/tcg-target.h
tcg/sparc/tcg-target.h
tcg/tcg-op.h
tcg/tcg.c