qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch
@ 2017-09-03 16:31 Kamil Rytarowski
  2017-09-03 17:05 ` Laurent Vivier
                   ` (2 more replies)
  0 siblings, 3 replies; 24+ messages in thread
From: Kamil Rytarowski @ 2017-09-03 16:31 UTC (permalink / raw)
  To: laurent; +Cc: qemu-devel, Kamil Rytarowski

GCC 4.7.2 on SunOS reports that the values assigned to array members are not
real constants:

target/m68k/fpu_helper.c:32:5: error: initializer element is not constant
target/m68k/fpu_helper.c:32:5: error: (near initialization for 'fpu_rom[0]')
rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed

Convert the array to switch() to workaround the issue.

This fixes build on SmartOS (Joyent).

Signed-off-by: Kamil Rytarowski <n54@gmx.com>
---
 target/m68k/fpu_helper.c | 108 ++++++++++++++++++++++++++++++++++-------------
 1 file changed, 78 insertions(+), 30 deletions(-)

diff --git a/target/m68k/fpu_helper.c b/target/m68k/fpu_helper.c
index bdfc537c68..13ce40db06 100644
--- a/target/m68k/fpu_helper.c
+++ b/target/m68k/fpu_helper.c
@@ -24,35 +24,6 @@
 #include "exec/exec-all.h"
 #include "exec/cpu_ldst.h"
 
-/* Undefined offsets may be different on various FPU.
- * On 68040 they return 0.0 (floatx80_zero)
- */
-
-static const floatx80 fpu_rom[128] = {
-    [0x00] = floatx80_pi,                                   /* Pi */
-    [0x0b] = make_floatx80(0x3ffd, 0x9a209a84fbcff798ULL),  /* Log10(2) */
-    [0x0c] = make_floatx80(0x4000, 0xadf85458a2bb4a9aULL),  /* e        */
-    [0x0d] = make_floatx80(0x3fff, 0xb8aa3b295c17f0bcULL),  /* Log2(e)  */
-    [0x0e] = make_floatx80(0x3ffd, 0xde5bd8a937287195ULL),  /* Log10(e) */
-    [0x0f] = floatx80_zero,                                 /* Zero     */
-    [0x30] = floatx80_ln2,                                  /* ln(2)    */
-    [0x31] = make_floatx80(0x4000, 0x935d8dddaaa8ac17ULL),  /* ln(10)   */
-    [0x32] = floatx80_one,                                  /* 10^0     */
-    [0x33] = make_floatx80(0x4002, 0xa000000000000000ULL),  /* 10^1     */
-    [0x34] = make_floatx80(0x4005, 0xc800000000000000ULL),  /* 10^2     */
-    [0x35] = make_floatx80(0x400c, 0x9c40000000000000ULL),  /* 10^4     */
-    [0x36] = make_floatx80(0x4019, 0xbebc200000000000ULL),  /* 10^8     */
-    [0x37] = make_floatx80(0x4034, 0x8e1bc9bf04000000ULL),  /* 10^16    */
-    [0x38] = make_floatx80(0x4069, 0x9dc5ada82b70b59eULL),  /* 10^32    */
-    [0x39] = make_floatx80(0x40d3, 0xc2781f49ffcfa6d5ULL),  /* 10^64    */
-    [0x3a] = make_floatx80(0x41a8, 0x93ba47c980e98ce0ULL),  /* 10^128   */
-    [0x3b] = make_floatx80(0x4351, 0xaa7eebfb9df9de8eULL),  /* 10^256   */
-    [0x3c] = make_floatx80(0x46a3, 0xe319a0aea60e91c7ULL),  /* 10^512   */
-    [0x3d] = make_floatx80(0x4d48, 0xc976758681750c17ULL),  /* 10^1024  */
-    [0x3e] = make_floatx80(0x5a92, 0x9e8b3b5dc53d5de5ULL),  /* 10^2048  */
-    [0x3f] = make_floatx80(0x7525, 0xc46052028a20979bULL),  /* 10^4096  */
-};
-
 int32_t HELPER(reds32)(CPUM68KState *env, FPReg *val)
 {
     return floatx80_to_int32(val->d, &env->fp_status);
@@ -387,7 +358,84 @@ void HELPER(ftst)(CPUM68KState *env, FPReg *val)
 
 void HELPER(fconst)(CPUM68KState *env, FPReg *val, uint32_t offset)
 {
-    val->d = fpu_rom[offset];
+    floatx80 tmp;
+
+    /* Undefined offsets may be different on various FPU.
+     * On 68040 they return 0.0 (floatx80_zero)
+     */
+    switch (offset) {
+    case 0x00:
+        tmp = floatx80_pi;                                   /* Pi */
+        break;
+    case 0x0b:
+        tmp = make_floatx80(0x3ffd, 0x9a209a84fbcff798ULL);  /* Log10(2) */
+        break;
+    case 0x0c:
+        tmp = make_floatx80(0x4000, 0xadf85458a2bb4a9aULL);  /* e        */
+        break;
+    case 0x0d:
+        tmp = make_floatx80(0x3fff, 0xb8aa3b295c17f0bcULL);  /* Log2(e)  */
+        break;
+    case 0x0e:
+        tmp = make_floatx80(0x3ffd, 0xde5bd8a937287195ULL);  /* Log10(e) */
+        break;
+    case 0x0f:
+        tmp = floatx80_zero;                                 /* Zero     */
+        break;
+    case 0x30:
+        tmp = floatx80_ln2;                                  /* ln(2)    */
+        break;
+    case 0x31:
+        tmp = make_floatx80(0x4000, 0x935d8dddaaa8ac17ULL);  /* ln(10)   */
+        break;
+    case 0x32:
+        tmp = floatx80_one;                                  /* 10^0     */
+        break;
+    case 0x33:
+        tmp = make_floatx80(0x4002, 0xa000000000000000ULL);  /* 10^1     */
+        break;
+    case 0x34:
+        tmp = make_floatx80(0x4005, 0xc800000000000000ULL);  /* 10^2     */
+        break;
+    case 0x35:
+        tmp = make_floatx80(0x400c, 0x9c40000000000000ULL);  /* 10^4     */
+        break;
+    case 0x36:
+        tmp = make_floatx80(0x4019, 0xbebc200000000000ULL);  /* 10^8     */
+        break;
+    case 0x37:
+        tmp = make_floatx80(0x4034, 0x8e1bc9bf04000000ULL);  /* 10^16    */
+        break;
+    case 0x38:
+        tmp = make_floatx80(0x4069, 0x9dc5ada82b70b59eULL);  /* 10^32    */
+        break;
+    case 0x39:
+        tmp = make_floatx80(0x40d3, 0xc2781f49ffcfa6d5ULL);  /* 10^64    */
+        break;
+    case 0x3a:
+        tmp = make_floatx80(0x41a8, 0x93ba47c980e98ce0ULL);  /* 10^128   */
+        break;
+    case 0x3b:
+        tmp = make_floatx80(0x4351, 0xaa7eebfb9df9de8eULL);  /* 10^256   */
+        break;
+    case 0x3c:
+        tmp = make_floatx80(0x46a3, 0xe319a0aea60e91c7ULL);  /* 10^512   */
+        break;
+    case 0x3d:
+        tmp = make_floatx80(0x4d48, 0xc976758681750c17ULL);  /* 10^1024  */
+        break;
+    case 0x3e:
+        tmp = make_floatx80(0x5a92, 0x9e8b3b5dc53d5de5ULL);  /* 10^2048  */
+        break;
+    case 0x3f:
+        tmp = make_floatx80(0x7525, 0xc46052028a20979bULL);  /* 10^4096  */
+        break;
+    default:
+        tmp = floatx80_zero;
+        break;
+    }
+
+    val->d = tmp;
 }
 
 typedef int (*float_access)(CPUM68KState *env, uint32_t addr, FPReg *fp,
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch
  2017-09-03 16:31 [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch Kamil Rytarowski
@ 2017-09-03 17:05 ` Laurent Vivier
  2017-09-04  0:27   ` Philippe Mathieu-Daudé
  2017-09-04  8:00 ` no-reply
  2017-09-04 16:46 ` [Qemu-devel] [PATCH v2] target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init() Kamil Rytarowski
  2 siblings, 1 reply; 24+ messages in thread
From: Laurent Vivier @ 2017-09-03 17:05 UTC (permalink / raw)
  To: Kamil Rytarowski; +Cc: qemu-devel

Le 03/09/2017 à 18:31, Kamil Rytarowski a écrit :
> GCC 4.7.2 on SunOS reports that the values assigned to array members are not
> real constants:
> 
> target/m68k/fpu_helper.c:32:5: error: initializer element is not constant
> target/m68k/fpu_helper.c:32:5: error: (near initialization for 'fpu_rom[0]')
> rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed
> 
> Convert the array to switch() to workaround the issue.

I don't like the idea. It's really an array and should be managed as an
array.

Could you try to use make_floatx80_init() instead of make_floatx80() ?

Thanks,
Laurent

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch
  2017-09-03 17:05 ` Laurent Vivier
@ 2017-09-04  0:27   ` Philippe Mathieu-Daudé
  2017-09-04 13:54     ` Kamil Rytarowski
  0 siblings, 1 reply; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-09-04  0:27 UTC (permalink / raw)
  To: Laurent Vivier, Kamil Rytarowski; +Cc: qemu-devel

On 09/03/2017 02:05 PM, Laurent Vivier wrote:
> Le 03/09/2017 à 18:31, Kamil Rytarowski a écrit :
>> GCC 4.7.2 on SunOS reports that the values assigned to array members are not
>> real constants:
>>
>> target/m68k/fpu_helper.c:32:5: error: initializer element is not constant
>> target/m68k/fpu_helper.c:32:5: error: (near initialization for 'fpu_rom[0]')
>> rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed
>>
>> Convert the array to switch() to workaround the issue.
> 
> I don't like the idea. It's really an array and should be managed as an
> array.

I agree with Laurent.

> 
> Could you try to use make_floatx80_init() instead of make_floatx80() ?

I guess the problem comes from the macro which cast as not const:

#define make_floatx80(exp, mant) ((floatx80) { mant, exp })

make_floatx80_init() doesn't cast so it might work,
else we could add a macro such const_floatx80():

#define const_floatx80(exp, mant) ((const floatx80) { mant, exp })

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch
  2017-09-03 16:31 [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch Kamil Rytarowski
  2017-09-03 17:05 ` Laurent Vivier
@ 2017-09-04  8:00 ` no-reply
  2017-09-04 16:46 ` [Qemu-devel] [PATCH v2] target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init() Kamil Rytarowski
  2 siblings, 0 replies; 24+ messages in thread
From: no-reply @ 2017-09-04  8:00 UTC (permalink / raw)
  To: n54; +Cc: famz, laurent, qemu-devel

Hi,

This series failed build test on FreeBSD host. Please find the details below.

Type: series
Message-id: 20170903163130.14288-1-n54@gmx.com
Subject: [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch

=== TEST SCRIPT BEGIN ===
#!/bin/sh
# Testing script will be invoked under the git checkout with
# HEAD pointing to a commit that has the patches applied on top of "base"
# branch
set -e
echo "=== ENV ==="
env
echo "=== PACKAGES ==="
pkg info
echo "=== TEST BEGIN ==="
CC=/usr/local/libexec/ccache/cc
INSTALL=$PWD/install
BUILD=$PWD/build
echo -n "Using CC: "
realpath $CC
mkdir -p $BUILD $INSTALL
SRC=$PWD
cd $BUILD
$SRC/configure --cc=$CC --prefix=$INSTALL --target-list=x86_64-softmmu
gmake -j4
# XXX: we need reliable clean up
# make check -j4 V=1
gmake install
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
9ff84c0445 target/m68k: Change fpu_rom from const static array to switch

=== OUTPUT BEGIN ===
=== ENV ===
LOGNAME=patchew-tester
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
PWD=/var/tmp/patchew-tester-tmp-cala1q33/src
HOME=/home/patchew-tester
USER=patchew-tester
SHELL=/bin/sh
PATCHEW=/home/patchew-tester/patchew/patchew-cli -s http://patchew.org --nodebug
=== PACKAGES ===
bash-4.4.12_2                  GNU Project's Bourne Again SHell
binutils-2.28,1                GNU binary tools
bison-3.0.4,1                  Parser generator from FSF, (mostly) compatible with Yacc
ca_root_nss-3.30.2             Root certificate bundle from the Mozilla Project
ccache-3.3.4_3                 Tool to minimize the compile time of C/C++ programs
curl-7.54.0                    Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers
cvsps-2.1_2                    Create patchset information from CVS
dtc-1.4.2_1                    Device Tree Compiler
expat-2.2.0_1                  XML 1.0 parser written in C
gcc-5.4.0                      GNU Compiler Collection 5
gcc-ecj-4.5                    Eclipse Java Compiler used to build GCC Java
gettext-runtime-0.19.8.1_1     GNU gettext runtime libraries and programs
git-2.13.0                     Distributed source code management tool
glib-2.46.2_5                  Some useful routines of C programming (current stable version)
gmake-4.2.1_1                  GNU version of 'make' utility
gmp-6.1.2                      Free library for arbitrary precision arithmetic
indexinfo-0.2.6                Utility to regenerate the GNU info page index
libffi-3.2.1                   Foreign Function Interface
libiconv-1.14_10               Character set conversion library
libnghttp2-1.21.0              HTTP/2.0 C Library
m4-1.4.18,1                    GNU M4
mpc-1.0.3                      Library of complex numbers with arbitrarily high precision
mpfr-3.1.5_1                   Library for multiple-precision floating-point computations
p5-Authen-SASL-2.16_1          Perl5 module for SASL authentication
p5-Digest-HMAC-1.03_1          Perl5 interface to HMAC Message-Digest Algorithms
p5-Error-0.17024               Error/exception handling in object-oriented programming style
p5-GSSAPI-0.28_1               Perl extension providing access to the GSSAPIv2 library
pcre-8.40                      Perl Compatible Regular Expressions library
perl5-5.24.1                   Practical Extraction and Report Language
pixman-0.34.0                  Low-level pixel manipulation library
pkg-1.10.1                     Package manager
pkgconf-1.3.0,1                Utility to help to configure compiler and linker flags
python-2.7_3,2                 "meta-port" for the default version of Python interpreter
python2-2_3                    The "meta-port" for version 2 of the Python interpreter
python27-2.7.13_3              Interpreted object-oriented programming language
python3-3_3                    The "meta-port" for version 3 of the Python interpreter
python35-3.5.3_1               Interpreted object-oriented programming language
readline-6.3.8                 Library for editing command lines as they are typed
sudo-1.8.20p1                  Allow others to run commands as root
=== TEST BEGIN ===
Using CC: /usr/local/bin/ccache
Install prefix    /var/tmp/patchew-tester-tmp-cala1q33/src/install
BIOS directory    /var/tmp/patchew-tester-tmp-cala1q33/src/install/share/qemu
binary directory  /var/tmp/patchew-tester-tmp-cala1q33/src/install/bin
library directory /var/tmp/patchew-tester-tmp-cala1q33/src/install/lib
module directory  /var/tmp/patchew-tester-tmp-cala1q33/src/install/lib/qemu
libexec directory /var/tmp/patchew-tester-tmp-cala1q33/src/install/libexec
include directory /var/tmp/patchew-tester-tmp-cala1q33/src/install/include
config directory  /var/tmp/patchew-tester-tmp-cala1q33/src/install/etc
local state directory   /var/tmp/patchew-tester-tmp-cala1q33/src/install/var
Manual directory  /var/tmp/patchew-tester-tmp-cala1q33/src/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /var/tmp/patchew-tester-tmp-cala1q33/src
C compiler        /usr/local/libexec/ccache/cc
Host C compiler   cc
C++ compiler      c++
Objective-C compiler clang
ARFLAGS           rv
CFLAGS            -O2 -g 
QEMU_CFLAGS       -I/usr/local/include/pixman-1   -pthread -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include  -DNCURSES_WIDECHAR  -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv  -Wno-string-plus-int -Wno-initializer-overrides -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-definition -Wtype-limits -fstack-protector-strong 
LDFLAGS           -Wl,--warn-common -m64 -g 
make              gmake
install           install
python            python -B
smbd              /usr/sbin/smbd
module support    no
host CPU          x86_64
host big endian   no
target list       x86_64-softmmu
gprof enabled     no
sparse enabled    no
strip binaries    yes
profiler          no
static build      no
pixman            system
SDL support       no 
GTK support       no 
GTK GL support    no
VTE support       no 
TLS priority      NORMAL
GNUTLS support    no
GNUTLS rnd        no
libgcrypt         no
libgcrypt kdf     no
nettle            no 
nettle kdf        no
libtasn1          no
curses support    yes
virgl support     no
curl support      yes
mingw32 support   no
Audio drivers     oss
Block whitelist (rw) 
Block whitelist (ro) 
VirtFS support    no
VNC support       yes
VNC SASL support  no
VNC JPEG support  no
VNC PNG support   no
xen support       no
brlapi support    no
bluez  support    no
Documentation     no
PIE               no
vde support       no
netmap support    yes
Linux AIO support no
ATTR/XATTR support no
Install blobs     yes
KVM support       no
HAX support       no
TCG support       yes
TCG debug enabled no
TCG interpreter   no
RDMA support      no
fdt support       no
preadv support    yes
fdatasync         no
madvise           yes
posix_madvise     yes
libcap-ng support no
vhost-net support no
vhost-scsi support no
vhost-vsock support no
vhost-user support yes
Trace backends    log
spice support     no 
rbd support       no
xfsctl support    no
smartcard support no
libusb            yes
usb net redir     no
OpenGL support    no
OpenGL dmabufs    no
libiscsi support  no
libnfs support    no
build guest agent yes
QGA VSS support   no
QGA w32 disk info no
QGA MSI support   no
seccomp support   no
coroutine backend ucontext
coroutine pool    yes
debug stack usage no
crypto afalg      no
GlusterFS support no
gcov              gcov
gcov enabled      no
TPM support       yes
libssh2 support   no
TPM passthrough   no
QOM debugging     yes
Live block migration yes
lzo support       no
snappy support    no
bzip2 support     yes
NUMA host support no
tcmalloc support  no
jemalloc support  no
avx2 optimization no
replication support yes
VxHS block device no
  GEN     x86_64-softmmu/config-devices.mak.tmp
  GEN     config-host.h
  GEN     qemu-options.def
  GEN     qmp-commands.h
  GEN     x86_64-softmmu/config-devices.mak
  GEN     qapi-types.h
  GEN     qapi-visit.h
  GEN     qapi-event.h
  GEN     qmp-marshal.c
  GEN     qapi-types.c
  GEN     qapi-visit.c
  GEN     qapi-event.c
  GEN     qmp-introspect.h
  GEN     qmp-introspect.c
  GEN     trace/generated-tcg-tracers.h
  GEN     trace/generated-helpers-wrappers.h
  GEN     trace/generated-helpers.h
  GEN     trace/generated-helpers.c
  GEN     module_block.h
  GEN     tests/test-qapi-types.h
  GEN     tests/test-qapi-visit.h
  GEN     tests/test-qmp-commands.h
  GEN     tests/test-qapi-event.h
  GEN     tests/test-qmp-introspect.h
  GEN     trace-root.h
  GEN     util/trace.h
  GEN     crypto/trace.h
  GEN     io/trace.h
  GEN     migration/trace.h
  GEN     block/trace.h
  GEN     chardev/trace.h
  GEN     hw/block/trace.h
  GEN     hw/block/dataplane/trace.h
  GEN     hw/char/trace.h
  GEN     hw/intc/trace.h
  GEN     hw/net/trace.h
  GEN     hw/virtio/trace.h
  GEN     hw/audio/trace.h
  GEN     hw/misc/trace.h
  GEN     hw/usb/trace.h
  GEN     hw/scsi/trace.h
  GEN     hw/nvram/trace.h
  GEN     hw/display/trace.h
  GEN     hw/input/trace.h
  GEN     hw/timer/trace.h
  GEN     hw/dma/trace.h
  GEN     hw/sparc/trace.h
  GEN     hw/sd/trace.h
  GEN     hw/isa/trace.h
  GEN     hw/mem/trace.h
  GEN     hw/i386/trace.h
  GEN     hw/i386/xen/trace.h
  GEN     hw/9pfs/trace.h
  GEN     hw/ppc/trace.h
  GEN     hw/pci/trace.h
  GEN     hw/s390x/trace.h
  GEN     hw/vfio/trace.h
  GEN     hw/acpi/trace.h
  GEN     hw/arm/trace.h
  GEN     hw/alpha/trace.h
  GEN     hw/xen/trace.h
  GEN     ui/trace.h
  GEN     audio/trace.h
  GEN     net/trace.h
  GEN     target/arm/trace.h
  GEN     target/i386/trace.h
  GEN     target/mips/trace.h
  GEN     target/sparc/trace.h
  GEN     target/s390x/trace.h
  GEN     target/ppc/trace.h
  GEN     qom/trace.h
  GEN     linux-user/trace.h
  GEN     qapi/trace.h
  GEN     accel/tcg/trace.h
  GEN     accel/kvm/trace.h
  GEN     nbd/trace.h
  GEN     trace-root.c
  GEN     util/trace.c
  GEN     crypto/trace.c
  GEN     io/trace.c
  GEN     migration/trace.c
  GEN     block/trace.c
  GEN     chardev/trace.c
  GEN     hw/block/trace.c
  GEN     hw/block/dataplane/trace.c
  GEN     hw/char/trace.c
  GEN     hw/intc/trace.c
  GEN     hw/net/trace.c
  GEN     hw/virtio/trace.c
  GEN     hw/audio/trace.c
  GEN     hw/misc/trace.c
  GEN     hw/usb/trace.c
  GEN     hw/scsi/trace.c
  GEN     hw/nvram/trace.c
  GEN     hw/display/trace.c
  GEN     hw/input/trace.c
  GEN     hw/timer/trace.c
  GEN     hw/dma/trace.c
  GEN     hw/sparc/trace.c
  GEN     hw/sd/trace.c
  GEN     hw/isa/trace.c
  GEN     hw/mem/trace.c
  GEN     hw/i386/trace.c
  GEN     hw/i386/xen/trace.c
  GEN     hw/9pfs/trace.c
  GEN     hw/ppc/trace.c
  GEN     hw/pci/trace.c
  GEN     hw/s390x/trace.c
  GEN     hw/vfio/trace.c
  GEN     hw/acpi/trace.c
  GEN     hw/arm/trace.c
  GEN     hw/alpha/trace.c
  GEN     hw/xen/trace.c
  GEN     ui/trace.c
  GEN     audio/trace.c
  GEN     net/trace.c
  GEN     target/arm/trace.c
  GEN     target/i386/trace.c
  GEN     target/mips/trace.c
  GEN     target/sparc/trace.c
  GEN     target/s390x/trace.c
  GEN     target/ppc/trace.c
  GEN     qom/trace.c
  GEN     linux-user/trace.c
  GEN     qapi/trace.c
  GEN     accel/tcg/trace.c
  GEN     accel/kvm/trace.c
  GEN     nbd/trace.c
  GEN     config-all-devices.mak
  GEN     qga/qapi-generated/qga-qapi-types.h
  GEN     qga/qapi-generated/qga-qapi-visit.h
  GEN     qga/qapi-generated/qga-qmp-commands.h
  GEN     qga/qapi-generated/qga-qapi-types.c
  GEN     qga/qapi-generated/qga-qmp-marshal.c
  GEN     qga/qapi-generated/qga-qapi-visit.c
  CC      qmp-introspect.o
  CC      qapi-types.o
  CC      qapi-visit.o
  CC      qapi-event.o
  CC      qapi/qapi-visit-core.o
  CC      qapi/qapi-dealloc-visitor.o
  CC      qapi/qobject-input-visitor.o
  CC      qapi/qobject-output-visitor.o
  CC      qapi/qmp-registry.o
  CC      qapi/qmp-dispatch.o
  CC      qapi/string-input-visitor.o
  CC      qapi/string-output-visitor.o
  CC      qapi/opts-visitor.o
  CC      qapi/qapi-clone-visitor.o
  CC      qapi/qmp-event.o
  CC      qapi/qapi-util.o
  CC      qobject/qnull.o
  CC      qobject/qnum.o
  CC      qobject/qstring.o
  CC      qobject/qdict.o
  CC      qobject/qlist.o
  CC      qobject/qbool.o
  CC      qobject/qjson.o
  CC      qobject/qobject.o
  CC      qobject/json-lexer.o
  CC      qobject/json-streamer.o
  CC      qobject/json-parser.o
  CC      trace/control.o
  CC      trace/qmp.o
  CC      util/osdep.o
  CC      util/cutils.o
  CC      util/unicode.o
  CC      util/qemu-timer-common.o
  CC      util/bufferiszero.o
  CC      util/lockcnt.o
  CC      util/aiocb.o
  CC      util/async.o
  CC      util/thread-pool.o
  CC      util/qemu-timer.o
  CC      util/main-loop.o
  CC      util/iohandler.o
  CC      util/aio-posix.o
  CC      util/compatfd.o
  CC      util/event_notifier-posix.o
  CC      util/mmap-alloc.o
  CC      util/oslib-posix.o
  CC      util/qemu-openpty.o
  CC      util/qemu-thread-posix.o
  CC      util/memfd.o
  CC      util/envlist.o
  CC      util/path.o
  CC      util/module.o
  CC      util/host-utils.o
  CC      util/bitmap.o
  CC      util/bitops.o
  CC      util/hbitmap.o
  CC      util/fifo8.o
  CC      util/acl.o
  CC      util/cacheinfo.o
  CC      util/error.o
  CC      util/qemu-error.o
  CC      util/id.o
  CC      util/iov.o
  CC      util/qemu-config.o
  CC      util/qemu-sockets.o
  CC      util/uri.o
  CC      util/notify.o
  CC      util/qemu-option.o
  CC      util/qemu-progress.o
  CC      util/keyval.o
  CC      util/hexdump.o
  CC      util/crc32c.o
  CC      util/uuid.o
  CC      util/throttle.o
  CC      util/getauxval.o
  CC      util/readline.o
  CC      util/rcu.o
  CC      util/qemu-coroutine.o
  CC      util/qemu-coroutine-lock.o
  CC      util/qemu-coroutine-io.o
  CC      util/qemu-coroutine-sleep.o
  CC      util/coroutine-ucontext.o
  CC      util/timed-average.o
  CC      util/buffer.o
  CC      util/base64.o
  CC      util/log.o
  CC      util/qdist.o
  CC      util/qht.o
  CC      util/range.o
  CC      util/stats64.o
  CC      util/systemd.o
  CC      trace-root.o
  CC      util/trace.o
  CC      crypto/trace.o
  CC      io/trace.o
  CC      migration/trace.o
  CC      block/trace.o
  CC      chardev/trace.o
  CC      hw/block/trace.o
  CC      hw/block/dataplane/trace.o
  CC      hw/char/trace.o
  CC      hw/intc/trace.o
  CC      hw/net/trace.o
  CC      hw/virtio/trace.o
  CC      hw/audio/trace.o
  CC      hw/misc/trace.o
  CC      hw/usb/trace.o
  CC      hw/scsi/trace.o
  CC      hw/nvram/trace.o
  CC      hw/display/trace.o
  CC      hw/input/trace.o
  CC      hw/timer/trace.o
  CC      hw/dma/trace.o
  CC      hw/sparc/trace.o
  CC      hw/sd/trace.o
  CC      hw/isa/trace.o
  CC      hw/mem/trace.o
  CC      hw/i386/trace.o
  CC      hw/i386/xen/trace.o
  CC      hw/9pfs/trace.o
  CC      hw/ppc/trace.o
  CC      hw/pci/trace.o
  CC      hw/s390x/trace.o
  CC      hw/vfio/trace.o
  CC      hw/acpi/trace.o
  CC      hw/arm/trace.o
  CC      hw/alpha/trace.o
  CC      hw/xen/trace.o
  CC      ui/trace.o
  CC      audio/trace.o
  CC      net/trace.o
  CC      target/arm/trace.o
  CC      target/i386/trace.o
  CC      target/mips/trace.o
  CC      target/sparc/trace.o
  CC      target/s390x/trace.o
  CC      target/ppc/trace.o
  CC      qom/trace.o
  CC      linux-user/trace.o
  CC      qapi/trace.o
  CC      accel/tcg/trace.o
  CC      accel/kvm/trace.o
  CC      nbd/trace.o
  CC      crypto/pbkdf-stub.o
  CC      stubs/arch-query-cpu-def.o
  CC      stubs/arch-query-cpu-model-expansion.o
  CC      stubs/arch-query-cpu-model-comparison.o
  CC      stubs/arch-query-cpu-model-baseline.o
  CC      stubs/bdrv-next-monitor-owned.o
  CC      stubs/blk-commit-all.o
  CC      stubs/blockdev-close-all-bdrv-states.o
  CC      stubs/clock-warp.o
  CC      stubs/cpu-get-clock.o
  CC      stubs/cpu-get-icount.o
  CC      stubs/dump.o
  CC      stubs/error-printf.o
  CC      stubs/fdset.o
  CC      stubs/gdbstub.o
  CC      stubs/get-vm-name.o
  CC      stubs/iothread.o
  CC      stubs/iothread-lock.o
  CC      stubs/is-daemonized.o
  CC      stubs/machine-init-done.o
  CC      stubs/migr-blocker.o
  CC      stubs/change-state-handler.o
  CC      stubs/monitor.o
  CC      stubs/notify-event.o
  CC      stubs/qtest.o
  CC      stubs/replay.o
  CC      stubs/runstate-check.o
  CC      stubs/set-fd-handler.o
  CC      stubs/slirp.o
  CC      stubs/sysbus.o
  CC      stubs/trace-control.o
  CC      stubs/uuid.o
  CC      stubs/vm-stop.o
  CC      stubs/vmstate.o
  CC      stubs/qmp_pc_dimm_device_list.o
  CC      stubs/target-monitor-defs.o
  CC      stubs/target-get-monitor-def.o
  CC      stubs/pc_madt_cpu_entry.o
  CC      stubs/vmgenid.o
  CC      stubs/xen-common.o
  CC      stubs/xen-hvm.o
  CC      qemu-nbd.o
  CC      block.o
  CC      blockjob.o
  CC      qemu-io-cmds.o
  CC      replication.o
  CC      block/raw-format.o
  CC      block/qcow.o
  CC      block/vdi.o
  CC      block/vmdk.o
  CC      block/cloop.o
  CC      block/bochs.o
  CC      block/vpc.o
  CC      block/vvfat.o
  CC      block/dmg.o
  CC      block/qcow2.o
  CC      block/qcow2-refcount.o
  CC      block/qcow2-cluster.o
  CC      block/qcow2-snapshot.o
  CC      block/qcow2-cache.o
  CC      block/qcow2-bitmap.o
  CC      block/qed.o
  CC      block/qed-l2-cache.o
  CC      block/qed-table.o
  CC      block/qed-cluster.o
  CC      block/qed-check.o
  CC      block/vhdx.o
  CC      block/vhdx-endian.o
  CC      block/vhdx-log.o
  CC      block/quorum.o
  CC      block/parallels.o
  CC      block/blkdebug.o
  CC      block/blkverify.o
  CC      block/blkreplay.o
  CC      block/block-backend.o
  CC      block/snapshot.o
  CC      block/qapi.o
  CC      block/file-posix.o
  CC      block/null.o
  CC      block/mirror.o
  CC      block/commit.o
  CC      block/io.o
  CC      block/throttle-groups.o
  CC      block/nbd.o
  CC      block/nbd-client.o
  CC      block/sheepdog.o
  CC      block/accounting.o
  CC      block/dirty-bitmap.o
  CC      block/write-threshold.o
  CC      block/backup.o
  CC      block/replication.o
  CC      block/crypto.o
  CC      nbd/server.o
  CC      nbd/client.o
  CC      nbd/common.o
  CC      block/curl.o
  CC      block/dmg-bz2.o
  CC      crypto/init.o
  CC      crypto/hash.o
  CC      crypto/hash-glib.o
  CC      crypto/hmac.o
  CC      crypto/hmac-glib.o
  CC      crypto/aes.o
  CC      crypto/desrfb.o
  CC      crypto/cipher.o
  CC      crypto/tlscreds.o
  CC      crypto/tlscredsanon.o
  CC      crypto/tlscredsx509.o
  CC      crypto/tlssession.o
  CC      crypto/secret.o
  CC      crypto/random-platform.o
  CC      crypto/pbkdf.o
  CC      crypto/ivgen.o
  CC      crypto/ivgen-essiv.o
  CC      crypto/ivgen-plain.o
  CC      crypto/ivgen-plain64.o
  CC      crypto/afsplit.o
  CC      crypto/xts.o
  CC      crypto/block.o
  CC      crypto/block-qcow.o
  CC      crypto/block-luks.o
  CC      io/channel.o
  CC      io/channel-buffer.o
  CC      io/channel-command.o
  CC      io/channel-file.o
  CC      io/channel-socket.o
  CC      io/channel-tls.o
  CC      io/channel-watch.o
  CC      io/channel-websock.o
  CC      io/channel-util.o
  CC      io/dns-resolver.o
  CC      io/task.o
  CC      qom/object.o
  CC      qom/container.o
  CC      qom/qom-qobject.o
  CC      qom/object_interfaces.o
  GEN     qemu-img-cmds.h
  CC      qemu-io.o
  CC      blockdev.o
  CC      blockdev-nbd.o
  CC      bootdevice.o
  CC      iothread.o
  CC      qdev-monitor.o
  CC      device-hotplug.o
  CC      os-posix.o
  CC      bt-host.o
  CC      bt-vhci.o
  CC      dma-helpers.o
  CC      vl.o
  CC      tpm.o
  CC      qmp-marshal.o
  CC      qmp.o
  CC      hmp.o
  CC      cpus-common.o
  CC      audio/audio.o
  CC      audio/noaudio.o
  CC      audio/wavaudio.o
  CC      audio/mixeng.o
  CC      audio/ossaudio.o
  CC      audio/wavcapture.o
  CC      backends/rng.o
  CC      backends/rng-egd.o
  CC      backends/rng-random.o
  CC      backends/tpm.o
  CC      backends/hostmem.o
  CC      backends/hostmem-ram.o
  CC      backends/cryptodev.o
  CC      backends/cryptodev-builtin.o
  CC      block/stream.o
  CC      chardev/msmouse.o
  CC      chardev/wctablet.o
  CC      chardev/testdev.o
  CC      disas/i386.o
  CC      hw/acpi/core.o
  CC      hw/acpi/piix4.o
  CC      hw/acpi/pcihp.o
  CC      hw/acpi/ich9.o
  CC      hw/acpi/tco.o
  CC      hw/acpi/cpu_hotplug.o
  CC      hw/acpi/memory_hotplug.o
  CC      hw/acpi/cpu.o
  CC      hw/acpi/nvdimm.o
  CC      hw/acpi/vmgenid.o
  CC      hw/acpi/acpi_interface.o
  CC      hw/acpi/bios-linker-loader.o
  CC      hw/acpi/aml-build.o
  CC      hw/acpi/ipmi.o
  CC      hw/acpi/acpi-stub.o
  CC      hw/acpi/ipmi-stub.o
  CC      hw/audio/sb16.o
  CC      hw/audio/es1370.o
  CC      hw/audio/ac97.o
  CC      hw/audio/fmopl.o
  CC      hw/audio/adlib.o
  CC      hw/audio/gus.o
  CC      hw/audio/gusemu_hal.o
  CC      hw/audio/gusemu_mixer.o
  CC      hw/audio/cs4231a.o
  CC      hw/audio/intel-hda.o
  CC      hw/audio/hda-codec.o
  CC      hw/audio/pcspk.o
  CC      hw/audio/soundhw.o
  CC      hw/block/block.o
  CC      hw/block/cdrom.o
  CC      hw/block/hd-geometry.o
  CC      hw/block/fdc.o
  CC      hw/block/pflash_cfi01.o
  CC      hw/block/nvme.o
  CC      hw/bt/core.o
  CC      hw/bt/l2cap.o
  CC      hw/bt/sdp.o
  CC      hw/bt/hci.o
  CC      hw/bt/hid.o
  CC      hw/bt/hci-csr.o
  CC      hw/char/ipoctal232.o
  CC      hw/char/parallel.o
  CC      hw/char/serial.o
  CC      hw/char/serial-isa.o
  CC      hw/char/serial-pci.o
  CC      hw/char/virtio-console.o
  CC      hw/char/debugcon.o
  CC      hw/core/qdev.o
  CC      hw/core/qdev-properties.o
  CC      hw/core/bus.o
  CC      hw/core/reset.o
  CC      hw/core/fw-path-provider.o
  CC      hw/core/irq.o
  CC      hw/core/hotplug.o
  CC      hw/core/nmi.o
  CC      hw/core/sysbus.o
  CC      hw/core/machine.o
  CC      hw/core/loader.o
  CC      hw/core/qdev-properties-system.o
  CC      hw/core/register.o
  CC      hw/core/or-irq.o
  CC      hw/cpu/core.o
  CC      hw/display/cirrus_vga.o
  CC      hw/display/vga-pci.o
  CC      hw/display/vga-isa.o
  CC      hw/display/vmware_vga.o
  CC      hw/dma/i8257.o
  CC      hw/i2c/core.o
  CC      hw/i2c/smbus.o
  CC      hw/i2c/smbus_eeprom.o
  CC      hw/i2c/smbus_ich9.o
  CC      hw/i2c/pm_smbus.o
  CC      hw/ide/core.o
  CC      hw/ide/atapi.o
  CC      hw/ide/qdev.o
  CC      hw/ide/pci.o
  CC      hw/ide/isa.o
  CC      hw/ide/piix.o
  CC      hw/ide/ahci.o
  CC      hw/ide/ich.o
  CC      hw/input/hid.o
  CC      hw/input/pckbd.o
  CC      hw/input/ps2.o
  CC      hw/input/vmmouse.o
  CC      hw/input/virtio-input.o
  CC      hw/input/virtio-input-hid.o
  CC      hw/intc/i8259_common.o
  CC      hw/intc/i8259.o
  CC      hw/intc/ioapic_common.o
  CC      hw/intc/intc.o
  CC      hw/ipack/ipack.o
  CC      hw/ipack/tpci200.o
  CC      hw/ipmi/ipmi.o
  CC      hw/ipmi/ipmi_bmc_sim.o
  CC      hw/ipmi/ipmi_bmc_extern.o
  CC      hw/ipmi/isa_ipmi_kcs.o
  CC      hw/isa/isa-bus.o
  CC      hw/ipmi/isa_ipmi_bt.o
  CC      hw/isa/apm.o
  CC      hw/mem/pc-dimm.o
  CC      hw/mem/nvdimm.o
  CC      hw/misc/applesmc.o
  CC      hw/misc/debugexit.o
  CC      hw/misc/sga.o
  CC      hw/misc/pc-testdev.o
  CC      hw/misc/pci-testdev.o
  CC      hw/misc/edu.o
  CC      hw/misc/unimp.o
  CC      hw/net/ne2000.o
  CC      hw/net/eepro100.o
  CC      hw/net/pcnet-pci.o
  CC      hw/net/pcnet.o
  CC      hw/net/e1000.o
  CC      hw/net/e1000x_common.o
  CC      hw/net/net_tx_pkt.o
  CC      hw/net/net_rx_pkt.o
  CC      hw/net/e1000e.o
  CC      hw/net/e1000e_core.o
  CC      hw/net/rtl8139.o
  CC      hw/net/vmxnet3.o
  CC      hw/net/ne2000-isa.o
  CC      hw/net/rocker/rocker.o
  CC      hw/net/rocker/rocker_fp.o
  CC      hw/net/rocker/rocker_desc.o
  CC      hw/net/rocker/rocker_world.o
  CC      hw/net/rocker/rocker_of_dpa.o
  CC      hw/nvram/eeprom93xx.o
  CC      hw/nvram/fw_cfg.o
  CC      hw/nvram/chrp_nvram.o
  CC      hw/pci-bridge/pci_bridge_dev.o
  CC      hw/pci-bridge/pcie_root_port.o
  CC      hw/pci-bridge/gen_pcie_root_port.o
  CC      hw/pci-bridge/pci_expander_bridge.o
  CC      hw/pci-bridge/xio3130_upstream.o
  CC      hw/pci-bridge/xio3130_downstream.o
  CC      hw/pci-bridge/ioh3420.o
  CC      hw/pci-bridge/i82801b11.o
  CC      hw/pci-host/pam.o
  CC      hw/pci-host/piix.o
  CC      hw/pci-host/q35.o
  CC      hw/pci/pci.o
  CC      hw/pci/pci_bridge.o
  CC      hw/pci/msix.o
  CC      hw/pci/msi.o
  CC      hw/pci/shpc.o
  CC      hw/pci/slotid_cap.o
  CC      hw/pci/pci_host.o
  CC      hw/pci/pcie_host.o
  CC      hw/pci/pcie.o
  CC      hw/pci/pcie_aer.o
  CC      hw/pci/pcie_port.o
  CC      hw/pci/pci-stub.o
  CC      hw/pcmcia/pcmcia.o
  CC      hw/scsi/scsi-disk.o
  CC      hw/scsi/scsi-generic.o
  CC      hw/scsi/scsi-bus.o
  CC      hw/scsi/lsi53c895a.o
  CC      hw/scsi/mptsas.o
  CC      hw/scsi/mptconfig.o
  CC      hw/scsi/mptendian.o
  CC      hw/scsi/megasas.o
  CC      hw/scsi/vmw_pvscsi.o
  CC      hw/scsi/esp.o
  CC      hw/scsi/esp-pci.o
  CC      hw/sd/sd.o
  CC      hw/sd/core.o
  CC      hw/sd/sdhci.o
  CC      hw/smbios/smbios.o
  CC      hw/smbios/smbios_type_38.o
  CC      hw/smbios/smbios-stub.o
  CC      hw/smbios/smbios_type_38-stub.o
  CC      hw/timer/hpet.o
  CC      hw/timer/i8254_common.o
  CC      hw/timer/i8254.o
  CC      hw/tpm/tpm_tis.o
  CC      hw/usb/core.o
  CC      hw/usb/combined-packet.o
  CC      hw/usb/bus.o
  CC      hw/usb/libhw.o
  CC      hw/usb/desc.o
  CC      hw/usb/desc-msos.o
  CC      hw/usb/hcd-uhci.o
  CC      hw/usb/hcd-ohci.o
  CC      hw/usb/hcd-ehci.o
  CC      hw/usb/hcd-ehci-pci.o
  CC      hw/usb/hcd-xhci.o
  CC      hw/usb/hcd-xhci-nec.o
  CC      hw/usb/dev-hub.o
  CC      hw/usb/dev-hid.o
  CC      hw/usb/dev-wacom.o
  CC      hw/usb/dev-storage.o
  CC      hw/usb/dev-uas.o
  CC      hw/usb/dev-audio.o
  CC      hw/usb/dev-serial.o
  CC      hw/usb/dev-network.o
  CC      hw/usb/dev-bluetooth.o
  CC      hw/usb/dev-smartcard-reader.o
  CC      hw/usb/dev-mtp.o
  CC      hw/usb/host-libusb.o
  CC      hw/usb/host-legacy.o
  CC      hw/virtio/virtio-rng.o
  CC      hw/virtio/virtio-pci.o
  CC      hw/virtio/virtio-bus.o
  CC      hw/virtio/virtio-mmio.o
  CC      hw/virtio/vhost-stub.o
  CC      hw/watchdog/watchdog.o
  CC      hw/watchdog/wdt_i6300esb.o
  CC      hw/watchdog/wdt_ib700.o
  CC      migration/migration.o
  CC      migration/socket.o
  CC      migration/fd.o
  CC      migration/exec.o
  CC      migration/tls.o
  CC      migration/channel.o
  CC      migration/savevm.o
  CC      migration/colo-comm.o
  CC      migration/colo.o
  CC      migration/colo-failover.o
  CC      migration/vmstate.o
  CC      migration/vmstate-types.o
  CC      migration/page_cache.o
  CC      migration/qemu-file.o
  CC      migration/global_state.o
  CC      migration/qemu-file-channel.o
  CC      migration/xbzrle.o
  CC      migration/postcopy-ram.o
  CC      migration/qjson.o
  CC      migration/block.o
  CC      net/net.o
  CC      net/queue.o
  CC      net/checksum.o
  CC      net/util.o
  CC      net/hub.o
  CC      net/socket.o
  CC      net/dump.o
  CC      net/eth.o
  CC      net/vhost-user.o
  CC      net/slirp.o
  CC      net/netmap.o
  CC      net/filter.o
  CC      net/filter-buffer.o
  CC      net/filter-mirror.o
  CC      net/colo-compare.o
  CC      net/colo.o
  CC      net/filter-rewriter.o
  CC      net/filter-replay.o
  CC      net/tap.o
  CC      net/tap-bsd.o
  CC      qom/cpu.o
  CC      replay/replay.o
  CC      replay/replay-internal.o
  CC      replay/replay-events.o
  CC      replay/replay-time.o
  CC      replay/replay-input.o
  CC      replay/replay-char.o
  CC      replay/replay-snapshot.o
  CC      replay/replay-net.o
  CC      replay/replay-audio.o
  CC      slirp/cksum.o
  CC      slirp/if.o
  CC      slirp/ip_icmp.o
  CC      slirp/ip6_icmp.o
  CC      slirp/ip6_input.o
  CC      slirp/ip6_output.o
  CC      slirp/ip_input.o
  CC      slirp/ip_output.o
  CC      slirp/dnssearch.o
  CC      slirp/dhcpv6.o
  CC      slirp/slirp.o
  CC      slirp/mbuf.o
  CC      slirp/misc.o
  CC      slirp/sbuf.o
  CC      slirp/socket.o
  CC      slirp/tcp_input.o
  CC      slirp/tcp_output.o
  CC      slirp/tcp_subr.o
  CC      slirp/tcp_timer.o
  CC      slirp/udp.o
  CC      slirp/udp6.o
  CC      slirp/bootp.o
  CC      slirp/tftp.o
  CC      slirp/arp_table.o
  CC      slirp/ndp_table.o
  CC      slirp/ncsi.o
  CC      ui/keymaps.o
  CC      ui/console.o
  CC      ui/cursor.o
  CC      ui/qemu-pixman.o
  CC      ui/input.o
  CC      ui/input-keymap.o
  CC      ui/input-legacy.o
  CC      ui/curses.o
  CC      ui/vnc.o
  CC      ui/vnc-enc-zlib.o
  CC      ui/vnc-enc-hextile.o
  CC      ui/vnc-enc-tight.o
  CC      ui/vnc-palette.o
  CC      ui/vnc-enc-zrle.o
  CC      ui/vnc-auth-vencrypt.o
  CC      ui/vnc-ws.o
  CC      ui/vnc-jobs.o
  CC      chardev/char.o
  CC      chardev/char-fd.o
  CC      chardev/char-fe.o
  CC      chardev/char-file.o
  CC      chardev/char-io.o
  CC      chardev/char-mux.o
  CC      chardev/char-null.o
  CC      chardev/char-parallel.o
  CC      chardev/char-pipe.o
  CC      chardev/char-pty.o
  CC      chardev/char-ringbuf.o
  CC      chardev/char-serial.o
  CC      chardev/char-socket.o
  CC      chardev/char-stdio.o
  CC      chardev/char-udp.o
  AS      optionrom/multiboot.o
  AS      optionrom/linuxboot.o
  CC      optionrom/linuxboot_dma.o
  CC      qga/commands.o
  CC      qga/guest-agent-command-state.o
  AS      optionrom/kvmvapic.o
  CC      qga/main.o
  BUILD   optionrom/multiboot.img
  BUILD   optionrom/linuxboot.img
  BUILD   optionrom/linuxboot_dma.img
  BUILD   optionrom/kvmvapic.img
  BUILD   optionrom/multiboot.raw
  BUILD   optionrom/linuxboot.raw
  BUILD   optionrom/linuxboot_dma.raw
  BUILD   optionrom/kvmvapic.raw
  SIGN    optionrom/multiboot.bin
  SIGN    optionrom/linuxboot.bin
  SIGN    optionrom/linuxboot_dma.bin
  SIGN    optionrom/kvmvapic.bin
  CC      qga/commands-posix.o
  CC      qga/channel-posix.o
  CC      qga/qapi-generated/qga-qapi-types.o
  CC      qga/qapi-generated/qga-qapi-visit.o
  CC      qga/qapi-generated/qga-qmp-marshal.o
  AR      libqemuutil.a
  AR      libqemustub.a
  CC      qemu-img.o
  LINK    qemu-nbd
  LINK    qemu-io
  LINK    qemu-ga
  GEN     x86_64-softmmu/hmp-commands.h
  GEN     x86_64-softmmu/hmp-commands-info.h
  GEN     x86_64-softmmu/config-target.h
  CC      x86_64-softmmu/exec.o
  CC      x86_64-softmmu/tcg/tcg.o
  CC      x86_64-softmmu/tcg/tcg-op.o
  CC      x86_64-softmmu/tcg/optimize.o
  CC      x86_64-softmmu/tcg/tcg-common.o
  CC      x86_64-softmmu/tcg/tcg-runtime.o
  CC      x86_64-softmmu/fpu/softfloat.o
  CC      x86_64-softmmu/disas.o
  GEN     x86_64-softmmu/gdbstub-xml.c
  CC      x86_64-softmmu/hax-stub.o
  CC      x86_64-softmmu/arch_init.o
  CC      x86_64-softmmu/cpus.o
  CC      x86_64-softmmu/monitor.o
  CC      x86_64-softmmu/gdbstub.o
  CC      x86_64-softmmu/balloon.o
  LINK    qemu-img
  CC      x86_64-softmmu/ioport.o
  CC      x86_64-softmmu/numa.o
  CC      x86_64-softmmu/qtest.o
  CC      x86_64-softmmu/memory.o
  CC      x86_64-softmmu/memory_mapping.o
  CC      x86_64-softmmu/dump.o
  CC      x86_64-softmmu/migration/ram.o
  CC      x86_64-softmmu/accel/accel.o
  CC      x86_64-softmmu/accel/stubs/kvm-stub.o
  CC      x86_64-softmmu/accel/tcg/tcg-all.o
  CC      x86_64-softmmu/accel/tcg/cputlb.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec.o
  CC      x86_64-softmmu/accel/tcg/translate-all.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec-common.o
  CC      x86_64-softmmu/hw/block/virtio-blk.o
  CC      x86_64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      x86_64-softmmu/hw/char/virtio-serial-bus.o
  CC      x86_64-softmmu/hw/core/generic-loader.o
  CC      x86_64-softmmu/hw/core/null-machine.o
  CC      x86_64-softmmu/hw/display/vga.o
  CC      x86_64-softmmu/hw/display/virtio-gpu.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-3d.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-pci.o
  CC      x86_64-softmmu/hw/display/virtio-vga.o
  CC      x86_64-softmmu/hw/intc/apic.o
  CC      x86_64-softmmu/hw/intc/apic_common.o
  CC      x86_64-softmmu/hw/intc/ioapic.o
  CC      x86_64-softmmu/hw/isa/lpc_ich9.o
  CC      x86_64-softmmu/hw/misc/vmport.o
  CC      x86_64-softmmu/hw/misc/pvpanic.o
  CC      x86_64-softmmu/hw/misc/mmio_interface.o
  CC      x86_64-softmmu/hw/net/virtio-net.o
  CC      x86_64-softmmu/hw/net/vhost_net.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      x86_64-softmmu/hw/timer/mc146818rtc.o
  CC      x86_64-softmmu/hw/virtio/virtio.o
  CC      x86_64-softmmu/hw/virtio/virtio-balloon.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      x86_64-softmmu/hw/i386/multiboot.o
  CC      x86_64-softmmu/hw/i386/pc.o
  CC      x86_64-softmmu/hw/i386/pc_piix.o
  CC      x86_64-softmmu/hw/i386/pc_q35.o
  CC      x86_64-softmmu/hw/i386/pc_sysfw.o
  CC      x86_64-softmmu/hw/i386/x86-iommu.o
  CC      x86_64-softmmu/hw/i386/intel_iommu.o
  CC      x86_64-softmmu/hw/i386/amd_iommu.o
  CC      x86_64-softmmu/hw/i386/kvmvapic.o
  CC      x86_64-softmmu/hw/i386/acpi-build.o
  CC      x86_64-softmmu/hw/i386/pci-assign-load-rom.o
  CC      x86_64-softmmu/target/i386/helper.o
  CC      x86_64-softmmu/target/i386/cpu.o
  CC      x86_64-softmmu/target/i386/gdbstub.o
  CC      x86_64-softmmu/target/i386/xsave_helper.o
  CC      x86_64-softmmu/target/i386/translate.o
  CC      x86_64-softmmu/target/i386/bpt_helper.o
  CC      x86_64-softmmu/target/i386/cc_helper.o
  CC      x86_64-softmmu/target/i386/excp_helper.o
  CC      x86_64-softmmu/target/i386/fpu_helper.o
  CC      x86_64-softmmu/target/i386/int_helper.o
  CC      x86_64-softmmu/target/i386/mem_helper.o
  CC      x86_64-softmmu/target/i386/misc_helper.o
  CC      x86_64-softmmu/target/i386/mpx_helper.o
  CC      x86_64-softmmu/target/i386/seg_helper.o
  CC      x86_64-softmmu/target/i386/smm_helper.o
  CC      x86_64-softmmu/target/i386/svm_helper.o
  CC      x86_64-softmmu/target/i386/machine.o
  CC      x86_64-softmmu/target/i386/arch_memory_mapping.o
  CC      x86_64-softmmu/target/i386/arch_dump.o
  CC      x86_64-softmmu/target/i386/monitor.o
  CC      x86_64-softmmu/target/i386/kvm-stub.o
  GEN     trace/generated-helpers.c
  CC      x86_64-softmmu/trace/control-target.o
  CC      x86_64-softmmu/gdbstub-xml.o
  CC      x86_64-softmmu/trace/generated-helpers.o
  LINK    x86_64-softmmu/qemu-system-x86_64
install -d -m 0755 "/var/tmp/patchew-tester-tmp-cala1q33/src/install/share/qemu"
install -d -m 0755 "/var/tmp/patchew-tester-tmp-cala1q33/src/install/var"/run
install -d -m 0755 "/var/tmp/patchew-tester-tmp-cala1q33/src/install/bin"
install -c -m 0755 qemu-ga qemu-nbd qemu-img qemu-io  "/var/tmp/patchew-tester-tmp-cala1q33/src/install/bin"
strip "/var/tmp/patchew-tester-tmp-cala1q33/src/install/bin/qemu-ga" "/var/tmp/patchew-tester-tmp-cala1q33/src/install/bin/qemu-nbd" "/var/tmp/patchew-tester-tmp-cala1q33/src/install/bin/qemu-img" "/var/tmp/patchew-tester-tmp-cala1q33/src/install/bin/qemu-io"
set -e; for x in bios.bin bios-256k.bin sgabios.bin vgabios.bin vgabios-cirrus.bin vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin vgabios-virtio.bin acpi-dsdt.aml ppc_rom.bin openbios-sparc32 openbios-sparc64 openbios-ppc QEMU,tcx.bin QEMU,cgthree.bin pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom efi-e1000.rom efi-eepro100.rom efi-ne2k_pci.rom efi-pcnet.rom efi-rtl8139.rom efi-virtio.rom efi-e1000e.rom efi-vmxnet3.rom qemu-icon.bmp qemu_logo_no_text.svg bamboo.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin s390-ccw.img s390-netboot.img spapr-rtas.bin slof.bin skiboot.lid palcode-clipper u-boot.e500 qemu_vga.ndrv; do \
	install -c -m 0644 /var/tmp/patchew-tester-tmp-cala1q33/src/pc-bios/$x "/var/tmp/patchew-tester-tmp-cala1q33/src/install/share/qemu"; \
done
install -d -m 0755 "/var/tmp/patchew-tester-tmp-cala1q33/src/install/share/qemu/keymaps"
set -e; for x in da     en-gb  et  fr     fr-ch  is  lt  modifiers  no  pt-br  sv ar      de     en-us  fi  fr-be  hr     it  lv  nl         pl  ru     th common  de-ch  es     fo  fr-ca  hu     ja  mk  nl-be      pt  sl     tr bepo    cz; do \
	install -c -m 0644 /var/tmp/patchew-tester-tmp-cala1q33/src/pc-bios/keymaps/$x "/var/tmp/patchew-tester-tmp-cala1q33/src/install/share/qemu/keymaps"; \
done
install -c -m 0644 /var/tmp/patchew-tester-tmp-cala1q33/src/build/trace-events-all "/var/tmp/patchew-tester-tmp-cala1q33/src/install/share/qemu/trace-events-all"
for d in x86_64-softmmu; do \
gmake --no-print-directory BUILD_DIR=/var/tmp/patchew-tester-tmp-cala1q33/src/build TARGET_DIR=$d/ -C $d install || exit 1 ; \
        done
install -d -m 0755 "/var/tmp/patchew-tester-tmp-cala1q33/src/install/bin"
install -c -m 0755 qemu-system-x86_64  "/var/tmp/patchew-tester-tmp-cala1q33/src/install/bin"
strip "/var/tmp/patchew-tester-tmp-cala1q33/src/install/bin/qemu-system-x86_64"
strip: elf_update() failed: I/O error: No space left on device
gmake[1]: *** [Makefile:225: install] Error 1
gmake: *** [Makefile:611: install] Error 1
=== OUTPUT END ===

Test command exited with code: 2


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch
  2017-09-04  0:27   ` Philippe Mathieu-Daudé
@ 2017-09-04 13:54     ` Kamil Rytarowski
  2017-09-04 14:09       ` Laurent Vivier
  0 siblings, 1 reply; 24+ messages in thread
From: Kamil Rytarowski @ 2017-09-04 13:54 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Laurent Vivier; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 1532 bytes --]

On 04.09.2017 02:27, Philippe Mathieu-Daudé wrote:
> On 09/03/2017 02:05 PM, Laurent Vivier wrote:
>> Le 03/09/2017 à 18:31, Kamil Rytarowski a écrit :
>>> GCC 4.7.2 on SunOS reports that the values assigned to array members
>>> are not
>>> real constants:
>>>
>>> target/m68k/fpu_helper.c:32:5: error: initializer element is not
>>> constant
>>> target/m68k/fpu_helper.c:32:5: error: (near initialization for
>>> 'fpu_rom[0]')
>>> rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed
>>>
>>> Convert the array to switch() to workaround the issue.
>>
>> I don't like the idea. It's really an array and should be managed as an
>> array.
> 
> I agree with Laurent.
> 
>>
>> Could you try to use make_floatx80_init() instead of make_floatx80() ?
> 
> I guess the problem comes from the macro which cast as not const:
> 
> #define make_floatx80(exp, mant) ((floatx80) { mant, exp })
> 

Adding const to make_floatx80 - ((const floatx80) { mant, exp }) - does
not fix the problem.

> make_floatx80_init() doesn't cast so it might work,
> else we could add a macro such const_floatx80():
> 
> #define const_floatx80(exp, mant) ((const floatx80) { mant, exp })

Switching make_floatx80() to make_floatx80_init() in works.

How about floatx80_zero, floatx80_one etc? We cannot translate them to
make_floatx80_init() as this breaks in other parts of the code in
functions like:

void helper_fldpi_ST0(CPUX86State *env)
{
    ST0 = floatx80_pi;
}

-- target/i386/fpu_helper.c


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch
  2017-09-04 13:54     ` Kamil Rytarowski
@ 2017-09-04 14:09       ` Laurent Vivier
  2017-09-04 14:41         ` Philippe Mathieu-Daudé
  2017-09-04 15:02         ` Peter Maydell
  0 siblings, 2 replies; 24+ messages in thread
From: Laurent Vivier @ 2017-09-04 14:09 UTC (permalink / raw)
  To: Kamil Rytarowski, Philippe Mathieu-Daudé; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 1894 bytes --]

Le 04/09/2017 à 15:54, Kamil Rytarowski a écrit :
> On 04.09.2017 02:27, Philippe Mathieu-Daudé wrote:
>> On 09/03/2017 02:05 PM, Laurent Vivier wrote:
>>> Le 03/09/2017 à 18:31, Kamil Rytarowski a écrit :
>>>> GCC 4.7.2 on SunOS reports that the values assigned to array members
>>>> are not
>>>> real constants:
>>>>
>>>> target/m68k/fpu_helper.c:32:5: error: initializer element is not
>>>> constant
>>>> target/m68k/fpu_helper.c:32:5: error: (near initialization for
>>>> 'fpu_rom[0]')
>>>> rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed
>>>>
>>>> Convert the array to switch() to workaround the issue.
>>>
>>> I don't like the idea. It's really an array and should be managed as an
>>> array.
>>
>> I agree with Laurent.
>>
>>>
>>> Could you try to use make_floatx80_init() instead of make_floatx80() ?
>>
>> I guess the problem comes from the macro which cast as not const:
>>
>> #define make_floatx80(exp, mant) ((floatx80) { mant, exp })
>>
> 
> Adding const to make_floatx80 - ((const floatx80) { mant, exp }) - does
> not fix the problem.
> 
>> make_floatx80_init() doesn't cast so it might work,
>> else we could add a macro such const_floatx80():
>>
>> #define const_floatx80(exp, mant) ((const floatx80) { mant, exp })
> 
> Switching make_floatx80() to make_floatx80_init() in works.
> 
> How about floatx80_zero, floatx80_one etc? We cannot translate them to
> make_floatx80_init() as this breaks in other parts of the code in
> functions like:
> 
> void helper_fldpi_ST0(CPUX86State *env)
> {
>     ST0 = floatx80_pi;
> }
> 
> -- target/i386/fpu_helper.c
> 

You can:

either replace the "#define floatx80_pi make_floatx80(...)" by a "const
floatx80 floatx80_pi = make_floatx80_init(...)"

or replace all the macros in the m68k/fpu_helper.c array by
make_floatx80_init(...)

Thanks,
Laurent


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch
  2017-09-04 14:09       ` Laurent Vivier
@ 2017-09-04 14:41         ` Philippe Mathieu-Daudé
  2017-09-04 14:53           ` Kamil Rytarowski
  2017-09-04 15:02         ` Peter Maydell
  1 sibling, 1 reply; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-09-04 14:41 UTC (permalink / raw)
  To: Laurent Vivier, Kamil Rytarowski; +Cc: qemu-devel

On 09/04/2017 11:09 AM, Laurent Vivier wrote:
> Le 04/09/2017 à 15:54, Kamil Rytarowski a écrit :
>> On 04.09.2017 02:27, Philippe Mathieu-Daudé wrote:
>>> On 09/03/2017 02:05 PM, Laurent Vivier wrote:
>>>> Le 03/09/2017 à 18:31, Kamil Rytarowski a écrit :
>>>>> GCC 4.7.2 on SunOS reports that the values assigned to array members
>>>>> are not
>>>>> real constants:
>>>>>
>>>>> target/m68k/fpu_helper.c:32:5: error: initializer element is not
>>>>> constant
>>>>> target/m68k/fpu_helper.c:32:5: error: (near initialization for
>>>>> 'fpu_rom[0]')
>>>>> rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed
>>>>>
>>>>> Convert the array to switch() to workaround the issue.
>>>>
>>>> I don't like the idea. It's really an array and should be managed as an
>>>> array.
>>>
>>> I agree with Laurent.
>>>
>>>>
>>>> Could you try to use make_floatx80_init() instead of make_floatx80() ?
>>>
>>> I guess the problem comes from the macro which cast as not const:
>>>
>>> #define make_floatx80(exp, mant) ((floatx80) { mant, exp })
>>>
>>
>> Adding const to make_floatx80 - ((const floatx80) { mant, exp }) - does
>> not fix the problem.
>>
>>> make_floatx80_init() doesn't cast so it might work,
>>> else we could add a macro such const_floatx80():
>>>
>>> #define const_floatx80(exp, mant) ((const floatx80) { mant, exp })
>>
>> Switching make_floatx80() to make_floatx80_init() in works.
>>
>> How about floatx80_zero, floatx80_one etc? We cannot translate them to
>> make_floatx80_init() as this breaks in other parts of the code in
>> functions like:
>>
>> void helper_fldpi_ST0(CPUX86State *env)
>> {
>>      ST0 = floatx80_pi;
>> }
>>
>> -- target/i386/fpu_helper.c
>>
> 
> You can:
> 
> either replace the "#define floatx80_pi make_floatx80(...)" by a "const
> floatx80 floatx80_pi = make_floatx80_init(...)"

this won't work with:

const floatx80 2pi = floatx80_mul(floatx80_pi, floatx80_pi, &s);

however this should work fine:

#define floatx80_pi make_floatx80_init(0x4000, 0xc90fdaa22168c235LL)

> 
> or replace all the macros in the m68k/fpu_helper.c array by
> make_floatx80_init(...)
> 
> Thanks,
> Laurent
> 

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch
  2017-09-04 14:41         ` Philippe Mathieu-Daudé
@ 2017-09-04 14:53           ` Kamil Rytarowski
  0 siblings, 0 replies; 24+ messages in thread
From: Kamil Rytarowski @ 2017-09-04 14:53 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Laurent Vivier; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 2645 bytes --]

On 04.09.2017 16:41, Philippe Mathieu-Daudé wrote:
> On 09/04/2017 11:09 AM, Laurent Vivier wrote:
>> Le 04/09/2017 à 15:54, Kamil Rytarowski a écrit :
>>> On 04.09.2017 02:27, Philippe Mathieu-Daudé wrote:
>>>> On 09/03/2017 02:05 PM, Laurent Vivier wrote:
>>>>> Le 03/09/2017 à 18:31, Kamil Rytarowski a écrit :
>>>>>> GCC 4.7.2 on SunOS reports that the values assigned to array members
>>>>>> are not
>>>>>> real constants:
>>>>>>
>>>>>> target/m68k/fpu_helper.c:32:5: error: initializer element is not
>>>>>> constant
>>>>>> target/m68k/fpu_helper.c:32:5: error: (near initialization for
>>>>>> 'fpu_rom[0]')
>>>>>> rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed
>>>>>>
>>>>>> Convert the array to switch() to workaround the issue.
>>>>>
>>>>> I don't like the idea. It's really an array and should be managed
>>>>> as an
>>>>> array.
>>>>
>>>> I agree with Laurent.
>>>>
>>>>>
>>>>> Could you try to use make_floatx80_init() instead of make_floatx80() ?
>>>>
>>>> I guess the problem comes from the macro which cast as not const:
>>>>
>>>> #define make_floatx80(exp, mant) ((floatx80) { mant, exp })
>>>>
>>>
>>> Adding const to make_floatx80 - ((const floatx80) { mant, exp }) - does
>>> not fix the problem.
>>>
>>>> make_floatx80_init() doesn't cast so it might work,
>>>> else we could add a macro such const_floatx80():
>>>>
>>>> #define const_floatx80(exp, mant) ((const floatx80) { mant, exp })
>>>
>>> Switching make_floatx80() to make_floatx80_init() in works.
>>>
>>> How about floatx80_zero, floatx80_one etc? We cannot translate them to
>>> make_floatx80_init() as this breaks in other parts of the code in
>>> functions like:
>>>
>>> void helper_fldpi_ST0(CPUX86State *env)
>>> {
>>>      ST0 = floatx80_pi;
>>> }
>>>
>>> -- target/i386/fpu_helper.c
>>>
>>
>> You can:
>>
>> either replace the "#define floatx80_pi make_floatx80(...)" by a "const
>> floatx80 floatx80_pi = make_floatx80_init(...)"
> 
> this won't work with:
> 
> const floatx80 2pi = floatx80_mul(floatx80_pi, floatx80_pi, &s);
> 
> however this should work fine:
> 
> #define floatx80_pi make_floatx80_init(0x4000, 0xc90fdaa22168c235LL)
> 

This breaks as mentioned above, in target/i386/fpu_helper.c.

>>
>> or replace all the macros in the m68k/fpu_helper.c array by
>> make_floatx80_init(...)
>>

I've copied the float_* numbers to target/m68k/fpu_helper.c and it
builds on SmartOS machine with GCC 4.7.2 (from Joyent shell) and on my
local NetBSD workstation with Clang 5.0.0

>> Thanks,
>> Laurent
>>

I'm going to submit the new patch soon.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch
  2017-09-04 14:09       ` Laurent Vivier
  2017-09-04 14:41         ` Philippe Mathieu-Daudé
@ 2017-09-04 15:02         ` Peter Maydell
  2017-09-04 15:16           ` Kamil Rytarowski
  2017-09-04 15:53           ` Laurent Vivier
  1 sibling, 2 replies; 24+ messages in thread
From: Peter Maydell @ 2017-09-04 15:02 UTC (permalink / raw)
  To: Laurent Vivier
  Cc: Kamil Rytarowski, Philippe Mathieu-Daudé, QEMU Developers

On 4 September 2017 at 15:09, Laurent Vivier <laurent@vivier.eu> wrote:
> You can:
>
> either replace the "#define floatx80_pi make_floatx80(...)" by a "const
> floatx80 floatx80_pi = make_floatx80_init(...)"
>
> or replace all the macros in the m68k/fpu_helper.c array by
> make_floatx80_init(...)

Taking a step back, what's different about floatx80 and float12
that means they need separate _init and non-init versions of
the macros, when for float16/float32/float64 we instead have
#define make_float32(x) __extension__ ({ float32 f32_val = {x}; f32_val; })
#define const_float32(x) { x }

? Could we move to consistency for the macro naming we're using?

thanks
-- PMM

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch
  2017-09-04 15:02         ` Peter Maydell
@ 2017-09-04 15:16           ` Kamil Rytarowski
  2017-09-04 15:53           ` Laurent Vivier
  1 sibling, 0 replies; 24+ messages in thread
From: Kamil Rytarowski @ 2017-09-04 15:16 UTC (permalink / raw)
  To: Peter Maydell, Laurent Vivier
  Cc: Philippe Mathieu-Daudé, QEMU Developers

[-- Attachment #1: Type: text/plain, Size: 1353 bytes --]

On 04.09.2017 17:02, Peter Maydell wrote:
> On 4 September 2017 at 15:09, Laurent Vivier <laurent@vivier.eu> wrote:
>> You can:
>>
>> either replace the "#define floatx80_pi make_floatx80(...)" by a "const
>> floatx80 floatx80_pi = make_floatx80_init(...)"
>>
>> or replace all the macros in the m68k/fpu_helper.c array by
>> make_floatx80_init(...)
> 
> Taking a step back, what's different about floatx80 and float12
> that means they need separate _init and non-init versions of
> the macros, when for float16/float32/float64 we instead have
> #define make_float32(x) __extension__ ({ float32 f32_val = {x}; f32_val; })
> #define const_float32(x) { x }
> 
> ? Could we move to consistency for the macro naming we're using?
> 
> thanks
> -- PMM
> 

I don't have insight on the reasoning, but float128 suffers from the
same reason as float80.

static const float128 fpu_rom123[128] = {
    [0] = make_float128(0, 12)
};

target/m68k/fpu_helper.c:58:1: error: initializer element is not constant
target/m68k/fpu_helper.c:58:1: error: (near initialization for
'fpu_rom123[0]')
rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed
make[1]: *** [target/m68k/fpu_helper.o] Error 1


On the other hand, something like this builds:

static const float16 fpu_rom123[128] = {
    [0] = make_float16(0)
};


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch
  2017-09-04 15:02         ` Peter Maydell
  2017-09-04 15:16           ` Kamil Rytarowski
@ 2017-09-04 15:53           ` Laurent Vivier
  2017-09-04 16:17             ` Peter Maydell
  1 sibling, 1 reply; 24+ messages in thread
From: Laurent Vivier @ 2017-09-04 15:53 UTC (permalink / raw)
  To: Peter Maydell, Kamil Rytarowski
  Cc: Philippe Mathieu-Daudé, QEMU Developers

Le 04/09/2017 à 17:02, Peter Maydell a écrit :
> On 4 September 2017 at 15:09, Laurent Vivier <laurent@vivier.eu> wrote:
>> You can:
>>
>> either replace the "#define floatx80_pi make_floatx80(...)" by a "const
>> floatx80 floatx80_pi = make_floatx80_init(...)"
>>
>> or replace all the macros in the m68k/fpu_helper.c array by
>> make_floatx80_init(...)
> 
> Taking a step back, what's different about floatx80 and float12
> that means they need separate _init and non-init versions of
> the macros, when for float16/float32/float64 we instead have
> #define make_float32(x) __extension__ ({ float32 f32_val = {x}; f32_val; })
> #define const_float32(x) { x }

floatx80/float128 are structureq while float16/float32/float64 are
native data types.

> ? Could we move to consistency for the macro naming we're using?

Do you mean "s/make_floatx80_init/const_floatx80/"?

Laurent

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch
  2017-09-04 15:53           ` Laurent Vivier
@ 2017-09-04 16:17             ` Peter Maydell
  2017-09-04 16:38               ` Kamil Rytarowski
  0 siblings, 1 reply; 24+ messages in thread
From: Peter Maydell @ 2017-09-04 16:17 UTC (permalink / raw)
  To: Laurent Vivier
  Cc: Kamil Rytarowski, Philippe Mathieu-Daudé, QEMU Developers

On 4 September 2017 at 16:53, Laurent Vivier <laurent@vivier.eu> wrote:
> Le 04/09/2017 à 17:02, Peter Maydell a écrit :
>> On 4 September 2017 at 15:09, Laurent Vivier <laurent@vivier.eu> wrote:
>>> You can:
>>>
>>> either replace the "#define floatx80_pi make_floatx80(...)" by a "const
>>> floatx80 floatx80_pi = make_floatx80_init(...)"
>>>
>>> or replace all the macros in the m68k/fpu_helper.c array by
>>> make_floatx80_init(...)
>>
>> Taking a step back, what's different about floatx80 and float12
>> that means they need separate _init and non-init versions of
>> the macros, when for float16/float32/float64 we instead have
>> #define make_float32(x) __extension__ ({ float32 f32_val = {x}; f32_val; })
>> #define const_float32(x) { x }
>
> floatx80/float128 are structureq while float16/float32/float64 are
> native data types.

If USE_SOFTFLOAT_STRUCT_TYPES is defined then float16/32/64 are
also struct types and use the make_ and const_ macros as above.

(We should check whether USE_SOFTFLOAT_STRUCT_TYPES still builds,
it tends to bitrot. If it does then maybe we should use it by default
since gcc 3 is now just a memory...)

>> ? Could we move to consistency for the macro naming we're using?
>
> Do you mean "s/make_floatx80_init/const_floatx80/"?

Yes (and the same implementation would be nice too).

thanks
-- PMM

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch
  2017-09-04 16:17             ` Peter Maydell
@ 2017-09-04 16:38               ` Kamil Rytarowski
  2017-09-04 16:38                 ` Laurent Vivier
  0 siblings, 1 reply; 24+ messages in thread
From: Kamil Rytarowski @ 2017-09-04 16:38 UTC (permalink / raw)
  To: Peter Maydell, Laurent Vivier
  Cc: Philippe Mathieu-Daudé, QEMU Developers

[-- Attachment #1: Type: text/plain, Size: 1867 bytes --]

On 04.09.2017 18:17, Peter Maydell wrote:
> On 4 September 2017 at 16:53, Laurent Vivier <laurent@vivier.eu> wrote:
>> Le 04/09/2017 à 17:02, Peter Maydell a écrit :
>>> On 4 September 2017 at 15:09, Laurent Vivier <laurent@vivier.eu> wrote:
>>>> You can:
>>>>
>>>> either replace the "#define floatx80_pi make_floatx80(...)" by a "const
>>>> floatx80 floatx80_pi = make_floatx80_init(...)"
>>>>
>>>> or replace all the macros in the m68k/fpu_helper.c array by
>>>> make_floatx80_init(...)
>>>
>>> Taking a step back, what's different about floatx80 and float12
>>> that means they need separate _init and non-init versions of
>>> the macros, when for float16/float32/float64 we instead have
>>> #define make_float32(x) __extension__ ({ float32 f32_val = {x}; f32_val; })
>>> #define const_float32(x) { x }
>>
>> floatx80/float128 are structureq while float16/float32/float64 are
>> native data types.
> 
> If USE_SOFTFLOAT_STRUCT_TYPES is defined then float16/32/64 are
> also struct types and use the make_ and const_ macros as above.
> 
> (We should check whether USE_SOFTFLOAT_STRUCT_TYPES still builds,
> it tends to bitrot. If it does then maybe we should use it by default
> since gcc 3 is now just a memory...)
> 

USE_SOFTFLOAT_STRUCT_TYPES breaks for me on SmartOS:

migration/vmstate-types.c: In function 'put_float64':
migration/vmstate-types.c:430:5: error: conversion to non-scalar type
requested

>>> ? Could we move to consistency for the macro naming we're using?
>>
>> Do you mean "s/make_floatx80_init/const_floatx80/"?
> 
> Yes (and the same implementation would be nice too).
> 

I will push my patch as is and later it can be refactored by a
maintainer. Is this fine?

https://github.com/NetBSD/pkgsrc-wip/blob/master/qemu-git/patches/patch-target_m68k_fpu__helper.c

> thanks
> -- PMM
> 



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch
  2017-09-04 16:38               ` Kamil Rytarowski
@ 2017-09-04 16:38                 ` Laurent Vivier
  2017-09-04 16:40                   ` Peter Maydell
  0 siblings, 1 reply; 24+ messages in thread
From: Laurent Vivier @ 2017-09-04 16:38 UTC (permalink / raw)
  To: Kamil Rytarowski, Peter Maydell
  Cc: Philippe Mathieu-Daudé, QEMU Developers

[-- Attachment #1: Type: text/plain, Size: 2145 bytes --]

Le 04/09/2017 à 18:38, Kamil Rytarowski a écrit :
> On 04.09.2017 18:17, Peter Maydell wrote:
>> On 4 September 2017 at 16:53, Laurent Vivier <laurent@vivier.eu> wrote:
>>> Le 04/09/2017 à 17:02, Peter Maydell a écrit :
>>>> On 4 September 2017 at 15:09, Laurent Vivier <laurent@vivier.eu> wrote:
>>>>> You can:
>>>>>
>>>>> either replace the "#define floatx80_pi make_floatx80(...)" by a "const
>>>>> floatx80 floatx80_pi = make_floatx80_init(...)"
>>>>>
>>>>> or replace all the macros in the m68k/fpu_helper.c array by
>>>>> make_floatx80_init(...)
>>>>
>>>> Taking a step back, what's different about floatx80 and float12
>>>> that means they need separate _init and non-init versions of
>>>> the macros, when for float16/float32/float64 we instead have
>>>> #define make_float32(x) __extension__ ({ float32 f32_val = {x}; f32_val; })
>>>> #define const_float32(x) { x }
>>>
>>> floatx80/float128 are structureq while float16/float32/float64 are
>>> native data types.
>>
>> If USE_SOFTFLOAT_STRUCT_TYPES is defined then float16/32/64 are
>> also struct types and use the make_ and const_ macros as above.
>>
>> (We should check whether USE_SOFTFLOAT_STRUCT_TYPES still builds,
>> it tends to bitrot. If it does then maybe we should use it by default
>> since gcc 3 is now just a memory...)
>>
> 
> USE_SOFTFLOAT_STRUCT_TYPES breaks for me on SmartOS:
> 
> migration/vmstate-types.c: In function 'put_float64':
> migration/vmstate-types.c:430:5: error: conversion to non-scalar type
> requested
> 
>>>> ? Could we move to consistency for the macro naming we're using?
>>>
>>> Do you mean "s/make_floatx80_init/const_floatx80/"?
>>
>> Yes (and the same implementation would be nice too).
>>
> 
> I will push my patch as is and later it can be refactored by a
> maintainer. Is this fine?
> 
> https://github.com/NetBSD/pkgsrc-wip/blob/master/qemu-git/patches/patch-target_m68k_fpu__helper.c
> 

If Peter agrees, the patch is good for me as is: I never liked the mix
of macros and values in this array. Send it to the list, I will put it
in my next pull request.

Thanks,
Laurent



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch
  2017-09-04 16:38                 ` Laurent Vivier
@ 2017-09-04 16:40                   ` Peter Maydell
  0 siblings, 0 replies; 24+ messages in thread
From: Peter Maydell @ 2017-09-04 16:40 UTC (permalink / raw)
  To: Laurent Vivier
  Cc: Kamil Rytarowski, Philippe Mathieu-Daudé, QEMU Developers

On 4 September 2017 at 17:38, Laurent Vivier <laurent@vivier.eu> wrote:
> Le 04/09/2017 à 18:38, Kamil Rytarowski a écrit :
>> I will push my patch as is and later it can be refactored by a
>> maintainer. Is this fine?
>>
>> https://github.com/NetBSD/pkgsrc-wip/blob/master/qemu-git/patches/patch-target_m68k_fpu__helper.c
>>
>
> If Peter agrees, the patch is good for me as is: I never liked the mix
> of macros and values in this array. Send it to the list, I will put it
> in my next pull request.

OK, if you're happy with it I'm happy with it.

thanks
-- PMM

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [Qemu-devel] [PATCH v2] target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init()
  2017-09-03 16:31 [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch Kamil Rytarowski
  2017-09-03 17:05 ` Laurent Vivier
  2017-09-04  8:00 ` no-reply
@ 2017-09-04 16:46 ` Kamil Rytarowski
  2017-09-04 17:16   ` Philippe Mathieu-Daudé
                     ` (2 more replies)
  2 siblings, 3 replies; 24+ messages in thread
From: Kamil Rytarowski @ 2017-09-04 16:46 UTC (permalink / raw)
  To: laurent; +Cc: qemu-devel, f4bug, peter.maydell, Kamil Rytarowski

GCC 4.7.2 on SunOS reports that the values assigned to array members are not
real constants:

target/m68k/fpu_helper.c:32:5: error: initializer element is not constant
target/m68k/fpu_helper.c:32:5: error: (near initialization for 'fpu_rom[0]')
rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed

Convert the array to make_floatx80_init() to fix it.
Replace floatx80_pi-like constants with make_floatx80_init() as they are
defined as make_floatx80().

This fixes build on SmartOS (Joyent).

Signed-off-by: Kamil Rytarowski <n54@gmx.com>
---
 target/m68k/fpu_helper.c | 44 ++++++++++++++++++++++----------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/target/m68k/fpu_helper.c b/target/m68k/fpu_helper.c
index bdfc537c68..8afd319ede 100644
--- a/target/m68k/fpu_helper.c
+++ b/target/m68k/fpu_helper.c
@@ -29,28 +29,28 @@
  */
 
 static const floatx80 fpu_rom[128] = {
-    [0x00] = floatx80_pi,                                   /* Pi */
-    [0x0b] = make_floatx80(0x3ffd, 0x9a209a84fbcff798ULL),  /* Log10(2) */
-    [0x0c] = make_floatx80(0x4000, 0xadf85458a2bb4a9aULL),  /* e        */
-    [0x0d] = make_floatx80(0x3fff, 0xb8aa3b295c17f0bcULL),  /* Log2(e)  */
-    [0x0e] = make_floatx80(0x3ffd, 0xde5bd8a937287195ULL),  /* Log10(e) */
-    [0x0f] = floatx80_zero,                                 /* Zero     */
-    [0x30] = floatx80_ln2,                                  /* ln(2)    */
-    [0x31] = make_floatx80(0x4000, 0x935d8dddaaa8ac17ULL),  /* ln(10)   */
-    [0x32] = floatx80_one,                                  /* 10^0     */
-    [0x33] = make_floatx80(0x4002, 0xa000000000000000ULL),  /* 10^1     */
-    [0x34] = make_floatx80(0x4005, 0xc800000000000000ULL),  /* 10^2     */
-    [0x35] = make_floatx80(0x400c, 0x9c40000000000000ULL),  /* 10^4     */
-    [0x36] = make_floatx80(0x4019, 0xbebc200000000000ULL),  /* 10^8     */
-    [0x37] = make_floatx80(0x4034, 0x8e1bc9bf04000000ULL),  /* 10^16    */
-    [0x38] = make_floatx80(0x4069, 0x9dc5ada82b70b59eULL),  /* 10^32    */
-    [0x39] = make_floatx80(0x40d3, 0xc2781f49ffcfa6d5ULL),  /* 10^64    */
-    [0x3a] = make_floatx80(0x41a8, 0x93ba47c980e98ce0ULL),  /* 10^128   */
-    [0x3b] = make_floatx80(0x4351, 0xaa7eebfb9df9de8eULL),  /* 10^256   */
-    [0x3c] = make_floatx80(0x46a3, 0xe319a0aea60e91c7ULL),  /* 10^512   */
-    [0x3d] = make_floatx80(0x4d48, 0xc976758681750c17ULL),  /* 10^1024  */
-    [0x3e] = make_floatx80(0x5a92, 0x9e8b3b5dc53d5de5ULL),  /* 10^2048  */
-    [0x3f] = make_floatx80(0x7525, 0xc46052028a20979bULL),  /* 10^4096  */
+    [0x00] = make_floatx80_init(0x4000, 0x0c90fdaa22168c235LL),  /* Pi       */
+    [0x0b] = make_floatx80_init(0x3ffd, 0x9a209a84fbcff798ULL),  /* Log10(2) */
+    [0x0c] = make_floatx80_init(0x4000, 0xadf85458a2bb4a9aULL),  /* e        */
+    [0x0d] = make_floatx80_init(0x3fff, 0xb8aa3b295c17f0bcULL),  /* Log2(e)  */
+    [0x0e] = make_floatx80_init(0x3ffd, 0xde5bd8a937287195ULL),  /* Log10(e) */
+    [0x0f] = make_floatx80_init(0x0000, 0x00000000000000000LL),  /* Zero     */
+    [0x30] = make_floatx80_init(0x3ffe, 0x0b17217f7d1cf79acLL),  /* ln(2)    */
+    [0x31] = make_floatx80_init(0x4000, 0x935d8dddaaa8ac17ULL),  /* ln(10)   */
+    [0x32] = make_floatx80_init(0x3fff, 0x08000000000000000LL),  /* 10^0     */
+    [0x33] = make_floatx80_init(0x4002, 0xa000000000000000ULL),  /* 10^1     */
+    [0x34] = make_floatx80_init(0x4005, 0xc800000000000000ULL),  /* 10^2     */
+    [0x35] = make_floatx80_init(0x400c, 0x9c40000000000000ULL),  /* 10^4     */
+    [0x36] = make_floatx80_init(0x4019, 0xbebc200000000000ULL),  /* 10^8     */
+    [0x37] = make_floatx80_init(0x4034, 0x8e1bc9bf04000000ULL),  /* 10^16    */
+    [0x38] = make_floatx80_init(0x4069, 0x9dc5ada82b70b59eULL),  /* 10^32    */
+    [0x39] = make_floatx80_init(0x40d3, 0xc2781f49ffcfa6d5ULL),  /* 10^64    */
+    [0x3a] = make_floatx80_init(0x41a8, 0x93ba47c980e98ce0ULL),  /* 10^128   */
+    [0x3b] = make_floatx80_init(0x4351, 0xaa7eebfb9df9de8eULL),  /* 10^256   */
+    [0x3c] = make_floatx80_init(0x46a3, 0xe319a0aea60e91c7ULL),  /* 10^512   */
+    [0x3d] = make_floatx80_init(0x4d48, 0xc976758681750c17ULL),  /* 10^1024  */
+    [0x3e] = make_floatx80_init(0x5a92, 0x9e8b3b5dc53d5de5ULL),  /* 10^2048  */
+    [0x3f] = make_floatx80_init(0x7525, 0xc46052028a20979bULL),  /* 10^4096  */
 };
 
 int32_t HELPER(reds32)(CPUM68KState *env, FPReg *val)
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH v2] target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init()
  2017-09-04 16:46 ` [Qemu-devel] [PATCH v2] target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init() Kamil Rytarowski
@ 2017-09-04 17:16   ` Philippe Mathieu-Daudé
  2017-09-04 17:23   ` Laurent Vivier
  2017-09-04 17:32   ` [Qemu-devel] [PATCH v3] " Kamil Rytarowski
  2 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-09-04 17:16 UTC (permalink / raw)
  To: Kamil Rytarowski
  Cc: Laurent Vivier, Peter Maydell, qemu-devel@nongnu.org Developers

On Mon, Sep 4, 2017 at 1:46 PM, Kamil Rytarowski <n54@gmx.com> wrote:
> GCC 4.7.2 on SunOS reports that the values assigned to array members are not
> real constants:
>
> target/m68k/fpu_helper.c:32:5: error: initializer element is not constant
> target/m68k/fpu_helper.c:32:5: error: (near initialization for 'fpu_rom[0]')
> rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed
>
> Convert the array to make_floatx80_init() to fix it.
> Replace floatx80_pi-like constants with make_floatx80_init() as they are
> defined as make_floatx80().
>
> This fixes build on SmartOS (Joyent).
>
> Signed-off-by: Kamil Rytarowski <n54@gmx.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  target/m68k/fpu_helper.c | 44 ++++++++++++++++++++++----------------------
>  1 file changed, 22 insertions(+), 22 deletions(-)
>
> diff --git a/target/m68k/fpu_helper.c b/target/m68k/fpu_helper.c
> index bdfc537c68..8afd319ede 100644
> --- a/target/m68k/fpu_helper.c
> +++ b/target/m68k/fpu_helper.c
> @@ -29,28 +29,28 @@
>   */
>
>  static const floatx80 fpu_rom[128] = {
> -    [0x00] = floatx80_pi,                                   /* Pi */
> -    [0x0b] = make_floatx80(0x3ffd, 0x9a209a84fbcff798ULL),  /* Log10(2) */
> -    [0x0c] = make_floatx80(0x4000, 0xadf85458a2bb4a9aULL),  /* e        */
> -    [0x0d] = make_floatx80(0x3fff, 0xb8aa3b295c17f0bcULL),  /* Log2(e)  */
> -    [0x0e] = make_floatx80(0x3ffd, 0xde5bd8a937287195ULL),  /* Log10(e) */
> -    [0x0f] = floatx80_zero,                                 /* Zero     */
> -    [0x30] = floatx80_ln2,                                  /* ln(2)    */
> -    [0x31] = make_floatx80(0x4000, 0x935d8dddaaa8ac17ULL),  /* ln(10)   */
> -    [0x32] = floatx80_one,                                  /* 10^0     */
> -    [0x33] = make_floatx80(0x4002, 0xa000000000000000ULL),  /* 10^1     */
> -    [0x34] = make_floatx80(0x4005, 0xc800000000000000ULL),  /* 10^2     */
> -    [0x35] = make_floatx80(0x400c, 0x9c40000000000000ULL),  /* 10^4     */
> -    [0x36] = make_floatx80(0x4019, 0xbebc200000000000ULL),  /* 10^8     */
> -    [0x37] = make_floatx80(0x4034, 0x8e1bc9bf04000000ULL),  /* 10^16    */
> -    [0x38] = make_floatx80(0x4069, 0x9dc5ada82b70b59eULL),  /* 10^32    */
> -    [0x39] = make_floatx80(0x40d3, 0xc2781f49ffcfa6d5ULL),  /* 10^64    */
> -    [0x3a] = make_floatx80(0x41a8, 0x93ba47c980e98ce0ULL),  /* 10^128   */
> -    [0x3b] = make_floatx80(0x4351, 0xaa7eebfb9df9de8eULL),  /* 10^256   */
> -    [0x3c] = make_floatx80(0x46a3, 0xe319a0aea60e91c7ULL),  /* 10^512   */
> -    [0x3d] = make_floatx80(0x4d48, 0xc976758681750c17ULL),  /* 10^1024  */
> -    [0x3e] = make_floatx80(0x5a92, 0x9e8b3b5dc53d5de5ULL),  /* 10^2048  */
> -    [0x3f] = make_floatx80(0x7525, 0xc46052028a20979bULL),  /* 10^4096  */
> +    [0x00] = make_floatx80_init(0x4000, 0x0c90fdaa22168c235LL),  /* Pi       */
> +    [0x0b] = make_floatx80_init(0x3ffd, 0x9a209a84fbcff798ULL),  /* Log10(2) */
> +    [0x0c] = make_floatx80_init(0x4000, 0xadf85458a2bb4a9aULL),  /* e        */
> +    [0x0d] = make_floatx80_init(0x3fff, 0xb8aa3b295c17f0bcULL),  /* Log2(e)  */
> +    [0x0e] = make_floatx80_init(0x3ffd, 0xde5bd8a937287195ULL),  /* Log10(e) */
> +    [0x0f] = make_floatx80_init(0x0000, 0x00000000000000000LL),  /* Zero     */
> +    [0x30] = make_floatx80_init(0x3ffe, 0x0b17217f7d1cf79acLL),  /* ln(2)    */
> +    [0x31] = make_floatx80_init(0x4000, 0x935d8dddaaa8ac17ULL),  /* ln(10)   */
> +    [0x32] = make_floatx80_init(0x3fff, 0x08000000000000000LL),  /* 10^0     */
> +    [0x33] = make_floatx80_init(0x4002, 0xa000000000000000ULL),  /* 10^1     */
> +    [0x34] = make_floatx80_init(0x4005, 0xc800000000000000ULL),  /* 10^2     */
> +    [0x35] = make_floatx80_init(0x400c, 0x9c40000000000000ULL),  /* 10^4     */
> +    [0x36] = make_floatx80_init(0x4019, 0xbebc200000000000ULL),  /* 10^8     */
> +    [0x37] = make_floatx80_init(0x4034, 0x8e1bc9bf04000000ULL),  /* 10^16    */
> +    [0x38] = make_floatx80_init(0x4069, 0x9dc5ada82b70b59eULL),  /* 10^32    */
> +    [0x39] = make_floatx80_init(0x40d3, 0xc2781f49ffcfa6d5ULL),  /* 10^64    */
> +    [0x3a] = make_floatx80_init(0x41a8, 0x93ba47c980e98ce0ULL),  /* 10^128   */
> +    [0x3b] = make_floatx80_init(0x4351, 0xaa7eebfb9df9de8eULL),  /* 10^256   */
> +    [0x3c] = make_floatx80_init(0x46a3, 0xe319a0aea60e91c7ULL),  /* 10^512   */
> +    [0x3d] = make_floatx80_init(0x4d48, 0xc976758681750c17ULL),  /* 10^1024  */
> +    [0x3e] = make_floatx80_init(0x5a92, 0x9e8b3b5dc53d5de5ULL),  /* 10^2048  */
> +    [0x3f] = make_floatx80_init(0x7525, 0xc46052028a20979bULL),  /* 10^4096  */
>  };
>
>  int32_t HELPER(reds32)(CPUM68KState *env, FPReg *val)
> --
> 2.14.1
>
>

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH v2] target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init()
  2017-09-04 16:46 ` [Qemu-devel] [PATCH v2] target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init() Kamil Rytarowski
  2017-09-04 17:16   ` Philippe Mathieu-Daudé
@ 2017-09-04 17:23   ` Laurent Vivier
  2017-09-04 18:01     ` Philippe Mathieu-Daudé
  2017-09-04 17:32   ` [Qemu-devel] [PATCH v3] " Kamil Rytarowski
  2 siblings, 1 reply; 24+ messages in thread
From: Laurent Vivier @ 2017-09-04 17:23 UTC (permalink / raw)
  To: Kamil Rytarowski; +Cc: qemu-devel, f4bug, peter.maydell

Le 04/09/2017 à 18:46, Kamil Rytarowski a écrit :
> GCC 4.7.2 on SunOS reports that the values assigned to array members are not
> real constants:
> 
> target/m68k/fpu_helper.c:32:5: error: initializer element is not constant
> target/m68k/fpu_helper.c:32:5: error: (near initialization for 'fpu_rom[0]')
> rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed
> 
> Convert the array to make_floatx80_init() to fix it.
> Replace floatx80_pi-like constants with make_floatx80_init() as they are
> defined as make_floatx80().
> 
> This fixes build on SmartOS (Joyent).
> 
> Signed-off-by: Kamil Rytarowski <n54@gmx.com>
> ---
>  target/m68k/fpu_helper.c | 44 ++++++++++++++++++++++----------------------
>  1 file changed, 22 insertions(+), 22 deletions(-)
> 
> diff --git a/target/m68k/fpu_helper.c b/target/m68k/fpu_helper.c
> index bdfc537c68..8afd319ede 100644
> --- a/target/m68k/fpu_helper.c
> +++ b/target/m68k/fpu_helper.c
> @@ -29,28 +29,28 @@
>   */
>  
>  static const floatx80 fpu_rom[128] = {
> -    [0x00] = floatx80_pi,                                   /* Pi */
> -    [0x0b] = make_floatx80(0x3ffd, 0x9a209a84fbcff798ULL),  /* Log10(2) */
> -    [0x0c] = make_floatx80(0x4000, 0xadf85458a2bb4a9aULL),  /* e        */
> -    [0x0d] = make_floatx80(0x3fff, 0xb8aa3b295c17f0bcULL),  /* Log2(e)  */
> -    [0x0e] = make_floatx80(0x3ffd, 0xde5bd8a937287195ULL),  /* Log10(e) */
> -    [0x0f] = floatx80_zero,                                 /* Zero     */
> -    [0x30] = floatx80_ln2,                                  /* ln(2)    */
> -    [0x31] = make_floatx80(0x4000, 0x935d8dddaaa8ac17ULL),  /* ln(10)   */
> -    [0x32] = floatx80_one,                                  /* 10^0     */
> -    [0x33] = make_floatx80(0x4002, 0xa000000000000000ULL),  /* 10^1     */
> -    [0x34] = make_floatx80(0x4005, 0xc800000000000000ULL),  /* 10^2     */
> -    [0x35] = make_floatx80(0x400c, 0x9c40000000000000ULL),  /* 10^4     */
> -    [0x36] = make_floatx80(0x4019, 0xbebc200000000000ULL),  /* 10^8     */
> -    [0x37] = make_floatx80(0x4034, 0x8e1bc9bf04000000ULL),  /* 10^16    */
> -    [0x38] = make_floatx80(0x4069, 0x9dc5ada82b70b59eULL),  /* 10^32    */
> -    [0x39] = make_floatx80(0x40d3, 0xc2781f49ffcfa6d5ULL),  /* 10^64    */
> -    [0x3a] = make_floatx80(0x41a8, 0x93ba47c980e98ce0ULL),  /* 10^128   */
> -    [0x3b] = make_floatx80(0x4351, 0xaa7eebfb9df9de8eULL),  /* 10^256   */
> -    [0x3c] = make_floatx80(0x46a3, 0xe319a0aea60e91c7ULL),  /* 10^512   */
> -    [0x3d] = make_floatx80(0x4d48, 0xc976758681750c17ULL),  /* 10^1024  */
> -    [0x3e] = make_floatx80(0x5a92, 0x9e8b3b5dc53d5de5ULL),  /* 10^2048  */
> -    [0x3f] = make_floatx80(0x7525, 0xc46052028a20979bULL),  /* 10^4096  */
> +    [0x00] = make_floatx80_init(0x4000, 0x0c90fdaa22168c235LL),  /* Pi       */

should be       make_floatx80_init(0x4000, 0xc90fdaa22168c235ULL)

> +    [0x0b] = make_floatx80_init(0x3ffd, 0x9a209a84fbcff798ULL),  /* Log10(2) */
> +    [0x0c] = make_floatx80_init(0x4000, 0xadf85458a2bb4a9aULL),  /* e        */
> +    [0x0d] = make_floatx80_init(0x3fff, 0xb8aa3b295c17f0bcULL),  /* Log2(e)  */
> +    [0x0e] = make_floatx80_init(0x3ffd, 0xde5bd8a937287195ULL),  /* Log10(e) */
> +    [0x0f] = make_floatx80_init(0x0000, 0x00000000000000000LL),  /* Zero     */

                make_floatx80_init(0x0000, 0x0000000000000000ULL)

> +    [0x30] = make_floatx80_init(0x3ffe, 0x0b17217f7d1cf79acLL),  /* ln(2)    */

                make_floatx80_init(0x3ffe, 0xb17217f7d1cf79acULL)

> +    [0x31] = make_floatx80_init(0x4000, 0x935d8dddaaa8ac17ULL),  /* ln(10)   */
> +    [0x32] = make_floatx80_init(0x3fff, 0x08000000000000000LL),  /* 10^0     */

                make_floatx80_init(0x3fff, 0x8000000000000000ULL)

> +    [0x33] = make_floatx80_init(0x4002, 0xa000000000000000ULL),  /* 10^1     */
> +    [0x34] = make_floatx80_init(0x4005, 0xc800000000000000ULL),  /* 10^2     */
> +    [0x35] = make_floatx80_init(0x400c, 0x9c40000000000000ULL),  /* 10^4     */
> +    [0x36] = make_floatx80_init(0x4019, 0xbebc200000000000ULL),  /* 10^8     */
> +    [0x37] = make_floatx80_init(0x4034, 0x8e1bc9bf04000000ULL),  /* 10^16    */
> +    [0x38] = make_floatx80_init(0x4069, 0x9dc5ada82b70b59eULL),  /* 10^32    */
> +    [0x39] = make_floatx80_init(0x40d3, 0xc2781f49ffcfa6d5ULL),  /* 10^64    */
> +    [0x3a] = make_floatx80_init(0x41a8, 0x93ba47c980e98ce0ULL),  /* 10^128   */
> +    [0x3b] = make_floatx80_init(0x4351, 0xaa7eebfb9df9de8eULL),  /* 10^256   */
> +    [0x3c] = make_floatx80_init(0x46a3, 0xe319a0aea60e91c7ULL),  /* 10^512   */
> +    [0x3d] = make_floatx80_init(0x4d48, 0xc976758681750c17ULL),  /* 10^1024  */
> +    [0x3e] = make_floatx80_init(0x5a92, 0x9e8b3b5dc53d5de5ULL),  /* 10^2048  */
> +    [0x3f] = make_floatx80_init(0x7525, 0xc46052028a20979bULL),  /* 10^4096  */
>  };
>  
>  int32_t HELPER(reds32)(CPUM68KState *env, FPReg *val)
> 

Thanks,
Laurent

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [Qemu-devel] [PATCH v3] target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init()
  2017-09-04 16:46 ` [Qemu-devel] [PATCH v2] target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init() Kamil Rytarowski
  2017-09-04 17:16   ` Philippe Mathieu-Daudé
  2017-09-04 17:23   ` Laurent Vivier
@ 2017-09-04 17:32   ` Kamil Rytarowski
  2017-09-04 19:02     ` Laurent Vivier
  2017-09-04 21:23     ` [Qemu-devel] [PATCH v4] " Kamil Rytarowski
  2 siblings, 2 replies; 24+ messages in thread
From: Kamil Rytarowski @ 2017-09-04 17:32 UTC (permalink / raw)
  To: laurent; +Cc: qemu-devel, f4bug, peter.maydell, Kamil Rytarowski

GCC 4.7.2 on SunOS reports that the values assigned to array members are not
real constants:

target/m68k/fpu_helper.c:32:5: error: initializer element is not constant
target/m68k/fpu_helper.c:32:5: error: (near initialization for 'fpu_rom[0]')
rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed

Convert the array to make_floatx80_init() to fix it.
Replace floatx80_pi-like constants with make_floatx80_init() as they are
defined as make_floatx80().

This fixes build on SmartOS (Joyent).

Signed-off-by: Kamil Rytarowski <n54@gmx.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 target/m68k/fpu_helper.c | 44 ++++++++++++++++++++++----------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/target/m68k/fpu_helper.c b/target/m68k/fpu_helper.c
index bdfc537c68..b3d50d1e01 100644
--- a/target/m68k/fpu_helper.c
+++ b/target/m68k/fpu_helper.c
@@ -29,28 +29,28 @@
  */
 
 static const floatx80 fpu_rom[128] = {
-    [0x00] = floatx80_pi,                                   /* Pi */
-    [0x0b] = make_floatx80(0x3ffd, 0x9a209a84fbcff798ULL),  /* Log10(2) */
-    [0x0c] = make_floatx80(0x4000, 0xadf85458a2bb4a9aULL),  /* e        */
-    [0x0d] = make_floatx80(0x3fff, 0xb8aa3b295c17f0bcULL),  /* Log2(e)  */
-    [0x0e] = make_floatx80(0x3ffd, 0xde5bd8a937287195ULL),  /* Log10(e) */
-    [0x0f] = floatx80_zero,                                 /* Zero     */
-    [0x30] = floatx80_ln2,                                  /* ln(2)    */
-    [0x31] = make_floatx80(0x4000, 0x935d8dddaaa8ac17ULL),  /* ln(10)   */
-    [0x32] = floatx80_one,                                  /* 10^0     */
-    [0x33] = make_floatx80(0x4002, 0xa000000000000000ULL),  /* 10^1     */
-    [0x34] = make_floatx80(0x4005, 0xc800000000000000ULL),  /* 10^2     */
-    [0x35] = make_floatx80(0x400c, 0x9c40000000000000ULL),  /* 10^4     */
-    [0x36] = make_floatx80(0x4019, 0xbebc200000000000ULL),  /* 10^8     */
-    [0x37] = make_floatx80(0x4034, 0x8e1bc9bf04000000ULL),  /* 10^16    */
-    [0x38] = make_floatx80(0x4069, 0x9dc5ada82b70b59eULL),  /* 10^32    */
-    [0x39] = make_floatx80(0x40d3, 0xc2781f49ffcfa6d5ULL),  /* 10^64    */
-    [0x3a] = make_floatx80(0x41a8, 0x93ba47c980e98ce0ULL),  /* 10^128   */
-    [0x3b] = make_floatx80(0x4351, 0xaa7eebfb9df9de8eULL),  /* 10^256   */
-    [0x3c] = make_floatx80(0x46a3, 0xe319a0aea60e91c7ULL),  /* 10^512   */
-    [0x3d] = make_floatx80(0x4d48, 0xc976758681750c17ULL),  /* 10^1024  */
-    [0x3e] = make_floatx80(0x5a92, 0x9e8b3b5dc53d5de5ULL),  /* 10^2048  */
-    [0x3f] = make_floatx80(0x7525, 0xc46052028a20979bULL),  /* 10^4096  */
+    [0x00] = make_floatx80_init(0x4000, 0xc90fdaa22168c235LL),   /* Pi       */
+    [0x0b] = make_floatx80_init(0x3ffd, 0x9a209a84fbcff798ULL),  /* Log10(2) */
+    [0x0c] = make_floatx80_init(0x4000, 0xadf85458a2bb4a9aULL),  /* e        */
+    [0x0d] = make_floatx80_init(0x3fff, 0xb8aa3b295c17f0bcULL),  /* Log2(e)  */
+    [0x0e] = make_floatx80_init(0x3ffd, 0xde5bd8a937287195ULL),  /* Log10(e) */
+    [0x0f] = make_floatx80_init(0x0000, 0x0000000000000000LL),   /* Zero     */
+    [0x30] = make_floatx80_init(0x3ffe, 0xb17217f7d1cf79acLL),   /* ln(2)    */
+    [0x31] = make_floatx80_init(0x4000, 0x935d8dddaaa8ac17ULL),  /* ln(10)   */
+    [0x32] = make_floatx80_init(0x3fff, 0x8000000000000000LL),   /* 10^0     */
+    [0x33] = make_floatx80_init(0x4002, 0xa000000000000000ULL),  /* 10^1     */
+    [0x34] = make_floatx80_init(0x4005, 0xc800000000000000ULL),  /* 10^2     */
+    [0x35] = make_floatx80_init(0x400c, 0x9c40000000000000ULL),  /* 10^4     */
+    [0x36] = make_floatx80_init(0x4019, 0xbebc200000000000ULL),  /* 10^8     */
+    [0x37] = make_floatx80_init(0x4034, 0x8e1bc9bf04000000ULL),  /* 10^16    */
+    [0x38] = make_floatx80_init(0x4069, 0x9dc5ada82b70b59eULL),  /* 10^32    */
+    [0x39] = make_floatx80_init(0x40d3, 0xc2781f49ffcfa6d5ULL),  /* 10^64    */
+    [0x3a] = make_floatx80_init(0x41a8, 0x93ba47c980e98ce0ULL),  /* 10^128   */
+    [0x3b] = make_floatx80_init(0x4351, 0xaa7eebfb9df9de8eULL),  /* 10^256   */
+    [0x3c] = make_floatx80_init(0x46a3, 0xe319a0aea60e91c7ULL),  /* 10^512   */
+    [0x3d] = make_floatx80_init(0x4d48, 0xc976758681750c17ULL),  /* 10^1024  */
+    [0x3e] = make_floatx80_init(0x5a92, 0x9e8b3b5dc53d5de5ULL),  /* 10^2048  */
+    [0x3f] = make_floatx80_init(0x7525, 0xc46052028a20979bULL),  /* 10^4096  */
 };
 
 int32_t HELPER(reds32)(CPUM68KState *env, FPReg *val)
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH v2] target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init()
  2017-09-04 17:23   ` Laurent Vivier
@ 2017-09-04 18:01     ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-09-04 18:01 UTC (permalink / raw)
  To: Laurent Vivier, Kamil Rytarowski; +Cc: qemu-devel, peter.maydell

On 09/04/2017 02:23 PM, Laurent Vivier wrote:
> Le 04/09/2017 à 18:46, Kamil Rytarowski a écrit :
>> GCC 4.7.2 on SunOS reports that the values assigned to array members are not
>> real constants:
>>
>> target/m68k/fpu_helper.c:32:5: error: initializer element is not constant
>> target/m68k/fpu_helper.c:32:5: error: (near initialization for 'fpu_rom[0]')
>> rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed
>>
>> Convert the array to make_floatx80_init() to fix it.
>> Replace floatx80_pi-like constants with make_floatx80_init() as they are
>> defined as make_floatx80().
>>
>> This fixes build on SmartOS (Joyent).
>>
>> Signed-off-by: Kamil Rytarowski <n54@gmx.com>
>> ---
>>   target/m68k/fpu_helper.c | 44 ++++++++++++++++++++++----------------------
>>   1 file changed, 22 insertions(+), 22 deletions(-)
>>
>> diff --git a/target/m68k/fpu_helper.c b/target/m68k/fpu_helper.c
>> index bdfc537c68..8afd319ede 100644
>> --- a/target/m68k/fpu_helper.c
>> +++ b/target/m68k/fpu_helper.c
>> @@ -29,28 +29,28 @@
>>    */
>>   
>>   static const floatx80 fpu_rom[128] = {
>> -    [0x00] = floatx80_pi,                                   /* Pi */
>> -    [0x0b] = make_floatx80(0x3ffd, 0x9a209a84fbcff798ULL),  /* Log10(2) */
>> -    [0x0c] = make_floatx80(0x4000, 0xadf85458a2bb4a9aULL),  /* e        */
>> -    [0x0d] = make_floatx80(0x3fff, 0xb8aa3b295c17f0bcULL),  /* Log2(e)  */
>> -    [0x0e] = make_floatx80(0x3ffd, 0xde5bd8a937287195ULL),  /* Log10(e) */
>> -    [0x0f] = floatx80_zero,                                 /* Zero     */
>> -    [0x30] = floatx80_ln2,                                  /* ln(2)    */
>> -    [0x31] = make_floatx80(0x4000, 0x935d8dddaaa8ac17ULL),  /* ln(10)   */
>> -    [0x32] = floatx80_one,                                  /* 10^0     */
>> -    [0x33] = make_floatx80(0x4002, 0xa000000000000000ULL),  /* 10^1     */
>> -    [0x34] = make_floatx80(0x4005, 0xc800000000000000ULL),  /* 10^2     */
>> -    [0x35] = make_floatx80(0x400c, 0x9c40000000000000ULL),  /* 10^4     */
>> -    [0x36] = make_floatx80(0x4019, 0xbebc200000000000ULL),  /* 10^8     */
>> -    [0x37] = make_floatx80(0x4034, 0x8e1bc9bf04000000ULL),  /* 10^16    */
>> -    [0x38] = make_floatx80(0x4069, 0x9dc5ada82b70b59eULL),  /* 10^32    */
>> -    [0x39] = make_floatx80(0x40d3, 0xc2781f49ffcfa6d5ULL),  /* 10^64    */
>> -    [0x3a] = make_floatx80(0x41a8, 0x93ba47c980e98ce0ULL),  /* 10^128   */
>> -    [0x3b] = make_floatx80(0x4351, 0xaa7eebfb9df9de8eULL),  /* 10^256   */
>> -    [0x3c] = make_floatx80(0x46a3, 0xe319a0aea60e91c7ULL),  /* 10^512   */
>> -    [0x3d] = make_floatx80(0x4d48, 0xc976758681750c17ULL),  /* 10^1024  */
>> -    [0x3e] = make_floatx80(0x5a92, 0x9e8b3b5dc53d5de5ULL),  /* 10^2048  */
>> -    [0x3f] = make_floatx80(0x7525, 0xc46052028a20979bULL),  /* 10^4096  */
>> +    [0x00] = make_floatx80_init(0x4000, 0x0c90fdaa22168c235LL),  /* Pi       */
> 
> should be       make_floatx80_init(0x4000, 0xc90fdaa22168c235ULL)

oops I missed the sign, thankfully you did a careful review!

> 
>> +    [0x0b] = make_floatx80_init(0x3ffd, 0x9a209a84fbcff798ULL),  /* Log10(2) */
>> +    [0x0c] = make_floatx80_init(0x4000, 0xadf85458a2bb4a9aULL),  /* e        */
>> +    [0x0d] = make_floatx80_init(0x3fff, 0xb8aa3b295c17f0bcULL),  /* Log2(e)  */
>> +    [0x0e] = make_floatx80_init(0x3ffd, 0xde5bd8a937287195ULL),  /* Log10(e) */
>> +    [0x0f] = make_floatx80_init(0x0000, 0x00000000000000000LL),  /* Zero     */
> 
>                  make_floatx80_init(0x0000, 0x0000000000000000ULL)
> 
>> +    [0x30] = make_floatx80_init(0x3ffe, 0x0b17217f7d1cf79acLL),  /* ln(2)    */
> 
>                  make_floatx80_init(0x3ffe, 0xb17217f7d1cf79acULL)
> 
>> +    [0x31] = make_floatx80_init(0x4000, 0x935d8dddaaa8ac17ULL),  /* ln(10)   */
>> +    [0x32] = make_floatx80_init(0x3fff, 0x08000000000000000LL),  /* 10^0     */
> 
>                  make_floatx80_init(0x3fff, 0x8000000000000000ULL)
> 
>> +    [0x33] = make_floatx80_init(0x4002, 0xa000000000000000ULL),  /* 10^1     */
>> +    [0x34] = make_floatx80_init(0x4005, 0xc800000000000000ULL),  /* 10^2     */
>> +    [0x35] = make_floatx80_init(0x400c, 0x9c40000000000000ULL),  /* 10^4     */
>> +    [0x36] = make_floatx80_init(0x4019, 0xbebc200000000000ULL),  /* 10^8     */
>> +    [0x37] = make_floatx80_init(0x4034, 0x8e1bc9bf04000000ULL),  /* 10^16    */
>> +    [0x38] = make_floatx80_init(0x4069, 0x9dc5ada82b70b59eULL),  /* 10^32    */
>> +    [0x39] = make_floatx80_init(0x40d3, 0xc2781f49ffcfa6d5ULL),  /* 10^64    */
>> +    [0x3a] = make_floatx80_init(0x41a8, 0x93ba47c980e98ce0ULL),  /* 10^128   */
>> +    [0x3b] = make_floatx80_init(0x4351, 0xaa7eebfb9df9de8eULL),  /* 10^256   */
>> +    [0x3c] = make_floatx80_init(0x46a3, 0xe319a0aea60e91c7ULL),  /* 10^512   */
>> +    [0x3d] = make_floatx80_init(0x4d48, 0xc976758681750c17ULL),  /* 10^1024  */
>> +    [0x3e] = make_floatx80_init(0x5a92, 0x9e8b3b5dc53d5de5ULL),  /* 10^2048  */
>> +    [0x3f] = make_floatx80_init(0x7525, 0xc46052028a20979bULL),  /* 10^4096  */
>>   };
>>   
>>   int32_t HELPER(reds32)(CPUM68KState *env, FPReg *val)
>>
> 
> Thanks,
> Laurent
> 

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH v3] target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init()
  2017-09-04 17:32   ` [Qemu-devel] [PATCH v3] " Kamil Rytarowski
@ 2017-09-04 19:02     ` Laurent Vivier
  2017-09-04 21:38       ` Kamil Rytarowski
  2017-09-04 21:23     ` [Qemu-devel] [PATCH v4] " Kamil Rytarowski
  1 sibling, 1 reply; 24+ messages in thread
From: Laurent Vivier @ 2017-09-04 19:02 UTC (permalink / raw)
  To: Kamil Rytarowski; +Cc: qemu-devel, f4bug, peter.maydell

Le 04/09/2017 à 19:32, Kamil Rytarowski a écrit :
> GCC 4.7.2 on SunOS reports that the values assigned to array members are not
> real constants:
> 
> target/m68k/fpu_helper.c:32:5: error: initializer element is not constant
> target/m68k/fpu_helper.c:32:5: error: (near initialization for 'fpu_rom[0]')
> rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed
> 
> Convert the array to make_floatx80_init() to fix it.
> Replace floatx80_pi-like constants with make_floatx80_init() as they are
> defined as make_floatx80().
> 
> This fixes build on SmartOS (Joyent).
> 
> Signed-off-by: Kamil Rytarowski <n54@gmx.com>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  target/m68k/fpu_helper.c | 44 ++++++++++++++++++++++----------------------
>  1 file changed, 22 insertions(+), 22 deletions(-)
> 
> diff --git a/target/m68k/fpu_helper.c b/target/m68k/fpu_helper.c
> index bdfc537c68..b3d50d1e01 100644
> --- a/target/m68k/fpu_helper.c
> +++ b/target/m68k/fpu_helper.c
> @@ -29,28 +29,28 @@
>   */
>  
>  static const floatx80 fpu_rom[128] = {
> -    [0x00] = floatx80_pi,                                   /* Pi */
> -    [0x0b] = make_floatx80(0x3ffd, 0x9a209a84fbcff798ULL),  /* Log10(2) */
> -    [0x0c] = make_floatx80(0x4000, 0xadf85458a2bb4a9aULL),  /* e        */
> -    [0x0d] = make_floatx80(0x3fff, 0xb8aa3b295c17f0bcULL),  /* Log2(e)  */
> -    [0x0e] = make_floatx80(0x3ffd, 0xde5bd8a937287195ULL),  /* Log10(e) */
> -    [0x0f] = floatx80_zero,                                 /* Zero     */
> -    [0x30] = floatx80_ln2,                                  /* ln(2)    */
> -    [0x31] = make_floatx80(0x4000, 0x935d8dddaaa8ac17ULL),  /* ln(10)   */
> -    [0x32] = floatx80_one,                                  /* 10^0     */
> -    [0x33] = make_floatx80(0x4002, 0xa000000000000000ULL),  /* 10^1     */
> -    [0x34] = make_floatx80(0x4005, 0xc800000000000000ULL),  /* 10^2     */
> -    [0x35] = make_floatx80(0x400c, 0x9c40000000000000ULL),  /* 10^4     */
> -    [0x36] = make_floatx80(0x4019, 0xbebc200000000000ULL),  /* 10^8     */
> -    [0x37] = make_floatx80(0x4034, 0x8e1bc9bf04000000ULL),  /* 10^16    */
> -    [0x38] = make_floatx80(0x4069, 0x9dc5ada82b70b59eULL),  /* 10^32    */
> -    [0x39] = make_floatx80(0x40d3, 0xc2781f49ffcfa6d5ULL),  /* 10^64    */
> -    [0x3a] = make_floatx80(0x41a8, 0x93ba47c980e98ce0ULL),  /* 10^128   */
> -    [0x3b] = make_floatx80(0x4351, 0xaa7eebfb9df9de8eULL),  /* 10^256   */
> -    [0x3c] = make_floatx80(0x46a3, 0xe319a0aea60e91c7ULL),  /* 10^512   */
> -    [0x3d] = make_floatx80(0x4d48, 0xc976758681750c17ULL),  /* 10^1024  */
> -    [0x3e] = make_floatx80(0x5a92, 0x9e8b3b5dc53d5de5ULL),  /* 10^2048  */
> -    [0x3f] = make_floatx80(0x7525, 0xc46052028a20979bULL),  /* 10^4096  */
> +    [0x00] = make_floatx80_init(0x4000, 0xc90fdaa22168c235LL),   /* Pi       */
> +    [0x0b] = make_floatx80_init(0x3ffd, 0x9a209a84fbcff798ULL),  /* Log10(2) */
> +    [0x0c] = make_floatx80_init(0x4000, 0xadf85458a2bb4a9aULL),  /* e        */
> +    [0x0d] = make_floatx80_init(0x3fff, 0xb8aa3b295c17f0bcULL),  /* Log2(e)  */
> +    [0x0e] = make_floatx80_init(0x3ffd, 0xde5bd8a937287195ULL),  /* Log10(e) */
> +    [0x0f] = make_floatx80_init(0x0000, 0x0000000000000000LL),   /* Zero     */
> +    [0x30] = make_floatx80_init(0x3ffe, 0xb17217f7d1cf79acLL),   /* ln(2)    */
> +    [0x31] = make_floatx80_init(0x4000, 0x935d8dddaaa8ac17ULL),  /* ln(10)   */
> +    [0x32] = make_floatx80_init(0x3fff, 0x8000000000000000LL),   /* 10^0     */
> +    [0x33] = make_floatx80_init(0x4002, 0xa000000000000000ULL),  /* 10^1     */
> +    [0x34] = make_floatx80_init(0x4005, 0xc800000000000000ULL),  /* 10^2     */
> +    [0x35] = make_floatx80_init(0x400c, 0x9c40000000000000ULL),  /* 10^4     */
> +    [0x36] = make_floatx80_init(0x4019, 0xbebc200000000000ULL),  /* 10^8     */
> +    [0x37] = make_floatx80_init(0x4034, 0x8e1bc9bf04000000ULL),  /* 10^16    */
> +    [0x38] = make_floatx80_init(0x4069, 0x9dc5ada82b70b59eULL),  /* 10^32    */
> +    [0x39] = make_floatx80_init(0x40d3, 0xc2781f49ffcfa6d5ULL),  /* 10^64    */
> +    [0x3a] = make_floatx80_init(0x41a8, 0x93ba47c980e98ce0ULL),  /* 10^128   */
> +    [0x3b] = make_floatx80_init(0x4351, 0xaa7eebfb9df9de8eULL),  /* 10^256   */
> +    [0x3c] = make_floatx80_init(0x46a3, 0xe319a0aea60e91c7ULL),  /* 10^512   */
> +    [0x3d] = make_floatx80_init(0x4d48, 0xc976758681750c17ULL),  /* 10^1024  */
> +    [0x3e] = make_floatx80_init(0x5a92, 0x9e8b3b5dc53d5de5ULL),  /* 10^2048  */
> +    [0x3f] = make_floatx80_init(0x7525, 0xc46052028a20979bULL),  /* 10^4096  */
>  };
>  
>  int32_t HELPER(reds32)(CPUM68KState *env, FPReg *val)
> 

I don't want to be picky, but you should use "ULL" instead of "LL" for
the new values.

Thanks,
Laurent

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [Qemu-devel] [PATCH v4] target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init()
  2017-09-04 17:32   ` [Qemu-devel] [PATCH v3] " Kamil Rytarowski
  2017-09-04 19:02     ` Laurent Vivier
@ 2017-09-04 21:23     ` Kamil Rytarowski
  2017-09-04 21:44       ` Laurent Vivier
  1 sibling, 1 reply; 24+ messages in thread
From: Kamil Rytarowski @ 2017-09-04 21:23 UTC (permalink / raw)
  To: laurent; +Cc: qemu-devel, f4bug, peter.maydell, Kamil Rytarowski

GCC 4.7.2 on SunOS reports that the values assigned to array members are not
real constants:

target/m68k/fpu_helper.c:32:5: error: initializer element is not constant
target/m68k/fpu_helper.c:32:5: error: (near initialization for 'fpu_rom[0]')
rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed

Convert the array to make_floatx80_init() to fix it.
Replace floatx80_pi-like constants with make_floatx80_init() as they are
defined as make_floatx80().

This fixes build on SmartOS (Joyent).

Signed-off-by: Kamil Rytarowski <n54@gmx.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 target/m68k/fpu_helper.c | 44 ++++++++++++++++++++++----------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/target/m68k/fpu_helper.c b/target/m68k/fpu_helper.c
index bdfc537c68..665e7609af 100644
--- a/target/m68k/fpu_helper.c
+++ b/target/m68k/fpu_helper.c
@@ -29,28 +29,28 @@
  */
 
 static const floatx80 fpu_rom[128] = {
-    [0x00] = floatx80_pi,                                   /* Pi */
-    [0x0b] = make_floatx80(0x3ffd, 0x9a209a84fbcff798ULL),  /* Log10(2) */
-    [0x0c] = make_floatx80(0x4000, 0xadf85458a2bb4a9aULL),  /* e        */
-    [0x0d] = make_floatx80(0x3fff, 0xb8aa3b295c17f0bcULL),  /* Log2(e)  */
-    [0x0e] = make_floatx80(0x3ffd, 0xde5bd8a937287195ULL),  /* Log10(e) */
-    [0x0f] = floatx80_zero,                                 /* Zero     */
-    [0x30] = floatx80_ln2,                                  /* ln(2)    */
-    [0x31] = make_floatx80(0x4000, 0x935d8dddaaa8ac17ULL),  /* ln(10)   */
-    [0x32] = floatx80_one,                                  /* 10^0     */
-    [0x33] = make_floatx80(0x4002, 0xa000000000000000ULL),  /* 10^1     */
-    [0x34] = make_floatx80(0x4005, 0xc800000000000000ULL),  /* 10^2     */
-    [0x35] = make_floatx80(0x400c, 0x9c40000000000000ULL),  /* 10^4     */
-    [0x36] = make_floatx80(0x4019, 0xbebc200000000000ULL),  /* 10^8     */
-    [0x37] = make_floatx80(0x4034, 0x8e1bc9bf04000000ULL),  /* 10^16    */
-    [0x38] = make_floatx80(0x4069, 0x9dc5ada82b70b59eULL),  /* 10^32    */
-    [0x39] = make_floatx80(0x40d3, 0xc2781f49ffcfa6d5ULL),  /* 10^64    */
-    [0x3a] = make_floatx80(0x41a8, 0x93ba47c980e98ce0ULL),  /* 10^128   */
-    [0x3b] = make_floatx80(0x4351, 0xaa7eebfb9df9de8eULL),  /* 10^256   */
-    [0x3c] = make_floatx80(0x46a3, 0xe319a0aea60e91c7ULL),  /* 10^512   */
-    [0x3d] = make_floatx80(0x4d48, 0xc976758681750c17ULL),  /* 10^1024  */
-    [0x3e] = make_floatx80(0x5a92, 0x9e8b3b5dc53d5de5ULL),  /* 10^2048  */
-    [0x3f] = make_floatx80(0x7525, 0xc46052028a20979bULL),  /* 10^4096  */
+    [0x00] = make_floatx80_init(0x4000, 0xc90fdaa22168c235ULL),  /* Pi       */
+    [0x0b] = make_floatx80_init(0x3ffd, 0x9a209a84fbcff798ULL),  /* Log10(2) */
+    [0x0c] = make_floatx80_init(0x4000, 0xadf85458a2bb4a9aULL),  /* e        */
+    [0x0d] = make_floatx80_init(0x3fff, 0xb8aa3b295c17f0bcULL),  /* Log2(e)  */
+    [0x0e] = make_floatx80_init(0x3ffd, 0xde5bd8a937287195ULL),  /* Log10(e) */
+    [0x0f] = make_floatx80_init(0x0000, 0x0000000000000000ULL),  /* Zero     */
+    [0x30] = make_floatx80_init(0x3ffe, 0xb17217f7d1cf79acULL),  /* ln(2)    */
+    [0x31] = make_floatx80_init(0x4000, 0x935d8dddaaa8ac17ULL),  /* ln(10)   */
+    [0x32] = make_floatx80_init(0x3fff, 0x8000000000000000ULL),  /* 10^0     */
+    [0x33] = make_floatx80_init(0x4002, 0xa000000000000000ULL),  /* 10^1     */
+    [0x34] = make_floatx80_init(0x4005, 0xc800000000000000ULL),  /* 10^2     */
+    [0x35] = make_floatx80_init(0x400c, 0x9c40000000000000ULL),  /* 10^4     */
+    [0x36] = make_floatx80_init(0x4019, 0xbebc200000000000ULL),  /* 10^8     */
+    [0x37] = make_floatx80_init(0x4034, 0x8e1bc9bf04000000ULL),  /* 10^16    */
+    [0x38] = make_floatx80_init(0x4069, 0x9dc5ada82b70b59eULL),  /* 10^32    */
+    [0x39] = make_floatx80_init(0x40d3, 0xc2781f49ffcfa6d5ULL),  /* 10^64    */
+    [0x3a] = make_floatx80_init(0x41a8, 0x93ba47c980e98ce0ULL),  /* 10^128   */
+    [0x3b] = make_floatx80_init(0x4351, 0xaa7eebfb9df9de8eULL),  /* 10^256   */
+    [0x3c] = make_floatx80_init(0x46a3, 0xe319a0aea60e91c7ULL),  /* 10^512   */
+    [0x3d] = make_floatx80_init(0x4d48, 0xc976758681750c17ULL),  /* 10^1024  */
+    [0x3e] = make_floatx80_init(0x5a92, 0x9e8b3b5dc53d5de5ULL),  /* 10^2048  */
+    [0x3f] = make_floatx80_init(0x7525, 0xc46052028a20979bULL),  /* 10^4096  */
 };
 
 int32_t HELPER(reds32)(CPUM68KState *env, FPReg *val)
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH v3] target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init()
  2017-09-04 19:02     ` Laurent Vivier
@ 2017-09-04 21:38       ` Kamil Rytarowski
  0 siblings, 0 replies; 24+ messages in thread
From: Kamil Rytarowski @ 2017-09-04 21:38 UTC (permalink / raw)
  To: Laurent Vivier; +Cc: qemu-devel, f4bug, peter.maydell

[-- Attachment #1: Type: text/plain, Size: 220 bytes --]

On 04.09.2017 21:02, Laurent Vivier wrote:
> 
> I don't want to be picky, but you should use "ULL" instead of "LL" for
> the new values.
> 

I was wondering why the integer is shorter.. should be fixed in v4.



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH v4] target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init()
  2017-09-04 21:23     ` [Qemu-devel] [PATCH v4] " Kamil Rytarowski
@ 2017-09-04 21:44       ` Laurent Vivier
  0 siblings, 0 replies; 24+ messages in thread
From: Laurent Vivier @ 2017-09-04 21:44 UTC (permalink / raw)
  To: Kamil Rytarowski; +Cc: qemu-devel, f4bug, peter.maydell

Le 04/09/2017 à 23:23, Kamil Rytarowski a écrit :
> GCC 4.7.2 on SunOS reports that the values assigned to array members are not
> real constants:
> 
> target/m68k/fpu_helper.c:32:5: error: initializer element is not constant
> target/m68k/fpu_helper.c:32:5: error: (near initialization for 'fpu_rom[0]')
> rules.mak:66: recipe for target 'target/m68k/fpu_helper.o' failed
> 
> Convert the array to make_floatx80_init() to fix it.
> Replace floatx80_pi-like constants with make_floatx80_init() as they are
> defined as make_floatx80().
> 
> This fixes build on SmartOS (Joyent).
> 
> Signed-off-by: Kamil Rytarowski <n54@gmx.com>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  target/m68k/fpu_helper.c | 44 ++++++++++++++++++++++----------------------
>  1 file changed, 22 insertions(+), 22 deletions(-)
> 

Applied to my branch m68k-for-2.11

Thanks,
Laurent

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2017-09-04 21:45 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-03 16:31 [Qemu-devel] [PATCH] target/m68k: Change fpu_rom from const static array to switch Kamil Rytarowski
2017-09-03 17:05 ` Laurent Vivier
2017-09-04  0:27   ` Philippe Mathieu-Daudé
2017-09-04 13:54     ` Kamil Rytarowski
2017-09-04 14:09       ` Laurent Vivier
2017-09-04 14:41         ` Philippe Mathieu-Daudé
2017-09-04 14:53           ` Kamil Rytarowski
2017-09-04 15:02         ` Peter Maydell
2017-09-04 15:16           ` Kamil Rytarowski
2017-09-04 15:53           ` Laurent Vivier
2017-09-04 16:17             ` Peter Maydell
2017-09-04 16:38               ` Kamil Rytarowski
2017-09-04 16:38                 ` Laurent Vivier
2017-09-04 16:40                   ` Peter Maydell
2017-09-04  8:00 ` no-reply
2017-09-04 16:46 ` [Qemu-devel] [PATCH v2] target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init() Kamil Rytarowski
2017-09-04 17:16   ` Philippe Mathieu-Daudé
2017-09-04 17:23   ` Laurent Vivier
2017-09-04 18:01     ` Philippe Mathieu-Daudé
2017-09-04 17:32   ` [Qemu-devel] [PATCH v3] " Kamil Rytarowski
2017-09-04 19:02     ` Laurent Vivier
2017-09-04 21:38       ` Kamil Rytarowski
2017-09-04 21:23     ` [Qemu-devel] [PATCH v4] " Kamil Rytarowski
2017-09-04 21:44       ` Laurent Vivier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).