[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] tci: Detect function argument alignment
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH] tci: Detect function argument alignment |
Date: |
Thu, 12 Sep 2013 14:04:52 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130805 Thunderbird/17.0.8 |
On 09/12/2013 01:40 PM, Stefan Weil wrote:
> Am 12.09.2013 22:29, schrieb Richard Henderson:
>> On 09/12/2013 12:45 PM, Stefan Weil wrote:
>>> +cat > $TMPC << EOF
>>> +#include <stdbool.h>
>>> +#include <stdio.h>
>>> +#include <stdint.h>
>>> +#include <inttypes.h>
>>> +static bool call_align_args(uint32_t arg1, uint64_t arg2) {
>>> + if (arg2 == 0x000000030000004ULL || arg2 == 0x0000000400000003ULL) {
>>> + return true;
>>> + } else if (arg2 == 2) {
>>> + /* 64 bit host, 64 bit function arguments are not aligned. */
>>> + } else if (arg2 == 0x0000000200000003 || arg2 == 0x0000000300000002ULL) {
>>> + /* 64 bit function arguments are not aligned. */
>>> + } else {
>>> + fprintf(stderr, "unexpected 64 bit function argument 0x%016" PRIx64
>>> "\n", arg2);
>>> + }
>>> + return false;
>>> +}
>> You will of course be printing that error when run on a 64-bit host.
>
> No. See the comment in the code where a 64 bit host is handled.
Oh, I see that now, sorry.
>> Or perhaps skip that detection and define it always. It's more likely
>> to be right than not doing it. This will break if MIPS64 were added,
>> but then we'd have to extend tcg_gen_callN for that anyway.
>
> Would this break x86_64 hosts? They don't define it as far as I could see.
Any 64-bit host that doesn't define TCG_TARGET_EXTEND_ARGS has an
abi that considers the high bits of a 32-bit parameter to be garbage.
Thus extending the value on x86_64 host is unused work, but certainly
not harmful.
r~