diff options
author | Richard Henderson <rth@twiddle.net> | 2010-06-14 17:35:27 -0700 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2010-06-16 11:29:11 +0200 |
commit | d563805be1bee07b915f9762a5d0bd35f485fd5a (patch) | |
tree | 2275cb777821df8aa66ea092bae2124b9923d01b /target-ppc | |
parent | e5dc60ec292e1cdc4224e0bf1b094f58ce6b2e93 (diff) | |
download | qemu-d563805be1bee07b915f9762a5d0bd35f485fd5a.tar.gz qemu-d563805be1bee07b915f9762a5d0bd35f485fd5a.tar.bz2 qemu-d563805be1bee07b915f9762a5d0bd35f485fd5a.zip |
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>
Diffstat (limited to 'target-ppc')
-rw-r--r-- | target-ppc/helper.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/target-ppc/helper.h b/target-ppc/helper.h index 5cf6cd4501..c025a2f08a 100644 --- a/target-ppc/helper.h +++ b/target-ppc/helper.h @@ -95,6 +95,7 @@ DEF_HELPER_3(fsel, i64, i64, i64, i64) #define dh_alias_avr ptr #define dh_ctype_avr ppc_avr_t * +#define dh_is_signed_avr dh_is_signed_ptr DEF_HELPER_3(vaddubm, void, avr, avr, avr) DEF_HELPER_3(vadduhm, void, avr, avr, avr) |