All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: Halil Pasic <pasic@linux.ibm.com>
Cc: marcandre.lureau@redhat.com, qemu-devel@nongnu.org,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Dmitry Fleytman" <dmitry.fleytman@gmail.com>,
	"open list:Overall KVM CPUs" <kvm@vger.kernel.org>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Jason Wang" <jasowang@redhat.com>,
	"Bin Meng" <bin.meng@windriver.com>,
	"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
	"Aleksandar Rikalo" <aleksandar.rikalo@syrmia.com>,
	"Peter Xu" <peterx@redhat.com>,
	"Laurent Vivier" <laurent@vivier.eu>,
	"Yanan Wang" <wangyanan55@huawei.com>,
	"Max Filippov" <jcmvbkbc@gmail.com>,
	"Alistair Francis" <alistair.francis@wdc.com>,
	"Gerd Hoffmann" <kraxel@redhat.com>,
	"Vikram Garhwal" <fnu.vikram@xilinx.com>,
	"open list:virtio-blk" <qemu-block@nongnu.org>,
	"David Hildenbrand" <david@redhat.com>,
	"Daniel Henrique Barboza" <danielhb413@gmail.com>,
	"Christian Borntraeger" <borntraeger@linux.ibm.com>,
	"Artyom Tarasenko" <atar4qemu@gmail.com>,
	"Pavel Pisa" <pisa@cmp.felk.cvut.cz>,
	"Huacai Chen" <chenhuacai@kernel.org>,
	"Eric Farman" <farman@linux.ibm.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Greg Kurz" <groug@kaod.org>,
	"open list:S390 SCLP-backed..." <qemu-s390x@nongnu.org>,
	"open list:ARM PrimeCell and..." <qemu-arm@nongnu.org>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"open list:PowerPC TCG CPUs" <qemu-ppc@nongnu.org>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"David Gibson" <david@gibson.dropbear.id.au>,
	"Eduardo Habkost" <eduardo@habkost.net>,
	"open list:RISC-V TCG CPUs" <qemu-riscv@nongnu.org>,
	"Cornelia Huck" <cohuck@redhat.com>,
	"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
	"Coiby Xu" <Coiby.Xu@gmail.com>,
	"Palmer Dabbelt" <palmer@dabbelt.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Aurelien Jarno" <aurelien@aurel32.net>,
	"Cédric Le Goater" <clg@kaod.org>
Subject: Re: [PATCH 10/27] Replace config-time define HOST_WORDS_BIGENDIAN
Date: Wed, 16 Mar 2022 12:22:59 +0100	[thread overview]
Message-ID: <ba668d50-e960-0dd3-6069-1fe89ac549be@redhat.com> (raw)
In-Reply-To: <20220316121535.16631f9c.pasic@linux.ibm.com>

On 16/03/2022 12.15, Halil Pasic wrote:
> On Wed, 16 Mar 2022 11:28:59 +0100
> Thomas Huth <thuth@redhat.com> wrote:
> 
>> On 16/03/2022 10.53, marcandre.lureau@redhat.com wrote:
>>> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>>>
>>> Replace a config-time define with a compile time condition
>>> define (compatible with clang and gcc) that must be declared prior to
>>> its usage. This avoids having a global configure time define, but also
>>> prevents from bad usage, if the config header wasn't included before.
>>>
>>> This can help to make some code independent from qemu too.
>>>
>>> gcc supports __BYTE_ORDER__ from about 4.6 and clang from 3.2.
>>>
>>> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>>> ---
>> [...]
>>> @@ -188,7 +188,7 @@ CPU_CONVERT(le, 64, uint64_t)
>>>     * a compile-time constant if you pass in a constant.  So this can be
>>>     * used to initialize static variables.
>>>     */
>>> -#if defined(HOST_WORDS_BIGENDIAN)
>>> +#if HOST_BIG_ENDIAN
>>>    # define const_le32(_x)                          \
>>>        ((((_x) & 0x000000ffU) << 24) |              \
>>>         (((_x) & 0x0000ff00U) <<  8) |              \
>>> @@ -211,7 +211,7 @@ typedef union {
>>>    
>>>    typedef union {
>>>        float64 d;
>>> -#if defined(HOST_WORDS_BIGENDIAN)
>>> +#if HOST_BIG_ENDIAN
>>>        struct {
>>>            uint32_t upper;
>>>            uint32_t lower;
>>> @@ -235,7 +235,7 @@ typedef union {
>>>    
>>>    typedef union {
>>>        float128 q;
>>> -#if defined(HOST_WORDS_BIGENDIAN)
>>> +#if HOST_BIG_ENDIAN
>>>        struct {
>>>            uint32_t upmost;
>>>            uint32_t upper;
>>> diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h
>>> index 0a5e67fb970e..7fdd88adb368 100644
>>> --- a/include/qemu/compiler.h
>>> +++ b/include/qemu/compiler.h
>>> @@ -7,6 +7,8 @@
>>>    #ifndef COMPILER_H
>>>    #define COMPILER_H
>>>    
>>> +#define HOST_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
>>
>> Why don't you do it this way instead:
>>
>> #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
>> #define HOST_WORDS_BIGENDIAN 1
>> #endif
>>
>> ... that way you could avoid the churn in all the other files?
>>
> 
> I guess "prevents from bad usage, if the config header wasn't included
> before" from the commit message is the answer to that question. I agree
> that it is more robust. If we keep the #if defined we really can't
> differentiate between "not defined because not big-endian" and "not
> defined because the appropriate header was not included."
> 

Ok, fair point, now I got it.

Acked-by: Thomas Huth <thuth@redhat.com>



WARNING: multiple messages have this Message-ID (diff)
From: Thomas Huth <thuth@redhat.com>
To: Halil Pasic <pasic@linux.ibm.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Dmitry Fleytman" <dmitry.fleytman@gmail.com>,
	"open list:Overall KVM CPUs" <kvm@vger.kernel.org>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Eric Farman" <farman@linux.ibm.com>,
	"Jason Wang" <jasowang@redhat.com>,
	"Bin Meng" <bin.meng@windriver.com>,
	"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
	qemu-devel@nongnu.org, "Peter Xu" <peterx@redhat.com>,
	"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
	"Yanan Wang" <wangyanan55@huawei.com>,
	"Max Filippov" <jcmvbkbc@gmail.com>,
	"Alistair Francis" <alistair.francis@wdc.com>,
	"Gerd Hoffmann" <kraxel@redhat.com>,
	"Daniel Henrique Barboza" <danielhb413@gmail.com>,
	"Vikram Garhwal" <fnu.vikram@xilinx.com>,
	"open list:virtio-blk" <qemu-block@nongnu.org>,
	"David Hildenbrand" <david@redhat.com>,
	marcandre.lureau@redhat.com,
	"Christian Borntraeger" <borntraeger@linux.ibm.com>,
	"Artyom Tarasenko" <atar4qemu@gmail.com>,
	"Pavel Pisa" <pisa@cmp.felk.cvut.cz>,
	"Huacai Chen" <chenhuacai@kernel.org>,
	"Aleksandar Rikalo" <aleksandar.rikalo@syrmia.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Greg Kurz" <groug@kaod.org>,
	"open list:S390 SCLP-backed..." <qemu-s390x@nongnu.org>,
	"open list:ARM PrimeCell and..." <qemu-arm@nongnu.org>,
	"Cédric Le Goater" <clg@kaod.org>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Palmer Dabbelt" <palmer@dabbelt.com>,
	"David Gibson" <david@gibson.dropbear.id.au>,
	"Eduardo Habkost" <eduardo@habkost.net>,
	"open list:RISC-V TCG CPUs" <qemu-riscv@nongnu.org>,
	"Cornelia Huck" <cohuck@redhat.com>,
	"Laurent Vivier" <laurent@vivier.eu>,
	"Coiby Xu" <Coiby.Xu@gmail.com>,
	"open list:PowerPC TCG CPUs" <qemu-ppc@nongnu.org>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Aurelien Jarno" <aurelien@aurel32.net>
Subject: Re: [PATCH 10/27] Replace config-time define HOST_WORDS_BIGENDIAN
Date: Wed, 16 Mar 2022 12:22:59 +0100	[thread overview]
Message-ID: <ba668d50-e960-0dd3-6069-1fe89ac549be@redhat.com> (raw)
In-Reply-To: <20220316121535.16631f9c.pasic@linux.ibm.com>

On 16/03/2022 12.15, Halil Pasic wrote:
> On Wed, 16 Mar 2022 11:28:59 +0100
> Thomas Huth <thuth@redhat.com> wrote:
> 
>> On 16/03/2022 10.53, marcandre.lureau@redhat.com wrote:
>>> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>>>
>>> Replace a config-time define with a compile time condition
>>> define (compatible with clang and gcc) that must be declared prior to
>>> its usage. This avoids having a global configure time define, but also
>>> prevents from bad usage, if the config header wasn't included before.
>>>
>>> This can help to make some code independent from qemu too.
>>>
>>> gcc supports __BYTE_ORDER__ from about 4.6 and clang from 3.2.
>>>
>>> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>>> ---
>> [...]
>>> @@ -188,7 +188,7 @@ CPU_CONVERT(le, 64, uint64_t)
>>>     * a compile-time constant if you pass in a constant.  So this can be
>>>     * used to initialize static variables.
>>>     */
>>> -#if defined(HOST_WORDS_BIGENDIAN)
>>> +#if HOST_BIG_ENDIAN
>>>    # define const_le32(_x)                          \
>>>        ((((_x) & 0x000000ffU) << 24) |              \
>>>         (((_x) & 0x0000ff00U) <<  8) |              \
>>> @@ -211,7 +211,7 @@ typedef union {
>>>    
>>>    typedef union {
>>>        float64 d;
>>> -#if defined(HOST_WORDS_BIGENDIAN)
>>> +#if HOST_BIG_ENDIAN
>>>        struct {
>>>            uint32_t upper;
>>>            uint32_t lower;
>>> @@ -235,7 +235,7 @@ typedef union {
>>>    
>>>    typedef union {
>>>        float128 q;
>>> -#if defined(HOST_WORDS_BIGENDIAN)
>>> +#if HOST_BIG_ENDIAN
>>>        struct {
>>>            uint32_t upmost;
>>>            uint32_t upper;
>>> diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h
>>> index 0a5e67fb970e..7fdd88adb368 100644
>>> --- a/include/qemu/compiler.h
>>> +++ b/include/qemu/compiler.h
>>> @@ -7,6 +7,8 @@
>>>    #ifndef COMPILER_H
>>>    #define COMPILER_H
>>>    
>>> +#define HOST_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
>>
>> Why don't you do it this way instead:
>>
>> #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
>> #define HOST_WORDS_BIGENDIAN 1
>> #endif
>>
>> ... that way you could avoid the churn in all the other files?
>>
> 
> I guess "prevents from bad usage, if the config header wasn't included
> before" from the commit message is the answer to that question. I agree
> that it is more robust. If we keep the #if defined we really can't
> differentiate between "not defined because not big-endian" and "not
> defined because the appropriate header was not included."
> 

Ok, fair point, now I got it.

Acked-by: Thomas Huth <thuth@redhat.com>



  parent reply	other threads:[~2022-03-16 11:23 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-16  9:53 [PATCH 10/27] Replace config-time define HOST_WORDS_BIGENDIAN marcandre.lureau
2022-03-16  9:53 ` marcandre.lureau
2022-03-16 10:28 ` Thomas Huth
2022-03-16 10:28   ` Thomas Huth
2022-03-16 11:15   ` Halil Pasic
2022-03-16 11:15     ` Halil Pasic
2022-03-16 11:20     ` Marc-André Lureau
2022-03-16 11:20       ` Marc-André Lureau
2022-03-16 11:22     ` Thomas Huth [this message]
2022-03-16 11:22       ` Thomas Huth
2022-03-16 11:31 ` Halil Pasic
2022-03-16 11:31   ` Halil Pasic
2022-03-16 13:04 ` Philippe Mathieu-Daudé
2022-03-16 13:04   ` Philippe Mathieu-Daudé
2022-03-16 13:09   ` Marc-André Lureau
2022-03-16 13:09     ` Marc-André Lureau
2022-03-16 13:11   ` Philippe Mathieu-Daudé
2022-03-16 13:11     ` Philippe Mathieu-Daudé
2022-03-17 11:31 ` Cédric Le Goater
2022-03-17 11:31   ` Cédric Le Goater

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ba668d50-e960-0dd3-6069-1fe89ac549be@redhat.com \
    --to=thuth@redhat.com \
    --cc=Coiby.Xu@gmail.com \
    --cc=aleksandar.rikalo@syrmia.com \
    --cc=alex.bennee@linaro.org \
    --cc=alistair.francis@wdc.com \
    --cc=atar4qemu@gmail.com \
    --cc=aurelien@aurel32.net \
    --cc=bin.meng@windriver.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=chenhuacai@kernel.org \
    --cc=clg@kaod.org \
    --cc=cohuck@redhat.com \
    --cc=danielhb413@gmail.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=david@redhat.com \
    --cc=dmitry.fleytman@gmail.com \
    --cc=eduardo@habkost.net \
    --cc=f4bug@amsat.org \
    --cc=farman@linux.ibm.com \
    --cc=fnu.vikram@xilinx.com \
    --cc=groug@kaod.org \
    --cc=jasowang@redhat.com \
    --cc=jcmvbkbc@gmail.com \
    --cc=kraxel@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=laurent@vivier.eu \
    --cc=marcandre.lureau@redhat.com \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=mst@redhat.com \
    --cc=palmer@dabbelt.com \
    --cc=pasic@linux.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=peterx@redhat.com \
    --cc=pisa@cmp.felk.cvut.cz \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=qemu-riscv@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=stefanha@redhat.com \
    --cc=wangyanan55@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.