Patchwork s390x: use CONFIG_INT128 to detect __uint128_t

login
register
mail settings
Submitter Gabriel Kerneis
Date April 23, 2013, 5:15 p.m.
Message ID <1366737312-8598-1-git-send-email-gabriel@kerneis.info>
Download mbox | patch
Permalink /patch/238964/
State New
Headers show

Comments

Gabriel Kerneis - April 23, 2013, 5:15 p.m.
Target s390x uses ad-hoc macro magic to guess if the compiler
supports the GCC extension __uint128_t.  This patch uses the
the dedicated macro CONFIG_INT128 defined by configure instead.

This fixes compilation with the CIL source code analyzer, which
uses GCC as a preprocessor but does not support __uint128_t.

Signed-off-by: Gabriel Kerneis <gabriel@kerneis.info>
---
 target-s390x/int_helper.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
Richard Henderson - April 23, 2013, 8:37 p.m.
On 2013-04-23 18:15, Gabriel Kerneis wrote:
> Target s390x uses ad-hoc macro magic to guess if the compiler
> supports the GCC extension __uint128_t.  This patch uses the
> the dedicated macro CONFIG_INT128 defined by configure instead.
>
> This fixes compilation with the CIL source code analyzer, which
> uses GCC as a preprocessor but does not support __uint128_t.
>
> Signed-off-by: Gabriel Kerneis <gabriel@kerneis.info>

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


r~
Stefan Hajnoczi - April 26, 2013, 9:58 a.m.
On Tue, Apr 23, 2013 at 06:15:12PM +0100, Gabriel Kerneis wrote:
> Target s390x uses ad-hoc macro magic to guess if the compiler
> supports the GCC extension __uint128_t.  This patch uses the
> the dedicated macro CONFIG_INT128 defined by configure instead.
> 
> This fixes compilation with the CIL source code analyzer, which
> uses GCC as a preprocessor but does not support __uint128_t.
> 
> Signed-off-by: Gabriel Kerneis <gabriel@kerneis.info>
> ---
>  target-s390x/int_helper.c |    3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)

Thanks, applied to the trivial patches tree:
https://github.com/stefanha/qemu/commits/trivial-patches

Stefan

Patch

diff --git a/target-s390x/int_helper.c b/target-s390x/int_helper.c
index af16b21..85e49aa 100644
--- a/target-s390x/int_helper.c
+++ b/target-s390x/int_helper.c
@@ -97,8 +97,7 @@  uint64_t HELPER(divu64)(CPUS390XState *env, uint64_t ah, uint64_t al,
         ret = al / b;
     } else {
         /* ??? Move i386 idivq helper to host-utils.  */
-#if HOST_LONG_BITS == 64 && defined(__GNUC__)
-        /* assuming 64-bit hosts have __uint128_t */
+#ifdef CONFIG_INT128
         __uint128_t a = ((__uint128_t)ah << 64) | al;
         __uint128_t q = a / b;
         env->retxl = a % b;