* [Qemu-devel] actually i have a different problem ...
@ 2005-01-19 2:33 williams.martin
2005-01-19 2:56 ` Johannes Schindelin
0 siblings, 1 reply; 4+ messages in thread
From: williams.martin @ 2005-01-19 2:33 UTC (permalink / raw)
To: qemu-devel
Okay, now I have fixed my SDL (which was there all along - I had to uninstall it and reinstall it before qemu found it .. grrr), I still have the problem that qemu wont compile, but a different output this time.
the output is identical for either ./configure then make and for ./configure --target-list=i386-user
The relevant part is this - the rest is a bunch of warnings about type-casting and the like.
gcc -Wall -O2 -g -fno-strict-aliasing -m64 -ffixed-g1 -ffixed-g2 -ffixed-g3 -ffixed-g6 -fno-delayed-branch -ffixed-i0 -fno-reorder-blocks -fno-optimize-sibling-calls -I. -I/root/qemu-0.6.1/target-i386 -I/root/qemu-0.6.1 -I/root/qemu-0.6.1/linux-user -I/root/qemu-0.6.1/linux-user/i386 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/root/qemu-0.6.1/slirp -c -o op.o /root/qemu-0.6.1/target-i386/op.c
In file included from /usr/include/inttypes.h:28,
from /root/qemu-0.6.1/cpu-defs.h:25,
from /root/qemu-0.6.1/target-i386/cpu.h:31,
from /root/qemu-0.6.1/target-i386/exec.h:116,
from /root/qemu-0.6.1/target-i386/op.c:22:
/usr/include/stdint.h:41: error: conflicting types for `int64_t'
/root/qemu-0.6.1/dyngen-exec.h:44: error: previous declaration of `int64_t'
/usr/include/stdint.h:56: error: conflicting types for `uint64_t'
/root/qemu-0.6.1/dyngen-exec.h:35: error: previous declaration of `uint64_t'
erm ... help? please? I would love to have qemu working on the sparc as a host.
-----------------------------------------
Email provided by http://www.ntlhome.com/
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] actually i have a different problem ...
2005-01-19 2:33 [Qemu-devel] actually i have a different problem williams.martin
@ 2005-01-19 2:56 ` Johannes Schindelin
2005-03-12 19:56 ` qemu_SPARC_HOST_cvs20050309wed.patch_/_Re: " Martin Bochnig
2005-03-12 20:25 ` [Qemu-devel] Again <<qemu_SPARC_HOST_cvs20050309wed.patch>>. This time inline for redundance Martin Bochnig
0 siblings, 2 replies; 4+ messages in thread
From: Johannes Schindelin @ 2005-01-19 2:56 UTC (permalink / raw)
To: qemu-devel
Hi,
you might want to try to comment out the offending definition of int64_t
in dyngen...
Please note that there's much more to getting QEmu to run on sparc than
getting it to compile. You might want to work with the SPARC host patch
(which you can get from http://libvncserver.sf.net/qemu/). It is a bit of
work to apply it to the current CVS, though. If you beat me to it, I will
try to adapt it.
Ciao,
Dscho
^ permalink raw reply [flat|nested] 4+ messages in thread
* qemu_SPARC_HOST_cvs20050309wed.patch_/_Re: [Qemu-devel] actually i have a different problem ...
2005-01-19 2:56 ` Johannes Schindelin
@ 2005-03-12 19:56 ` Martin Bochnig
2005-03-12 20:25 ` [Qemu-devel] Again <<qemu_SPARC_HOST_cvs20050309wed.patch>>. This time inline for redundance Martin Bochnig
1 sibling, 0 replies; 4+ messages in thread
From: Martin Bochnig @ 2005-03-12 19:56 UTC (permalink / raw)
To: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 17817 bytes --]
Hi,
On Wed, 2005-01-19 at 03:56, Johannes Schindelin wrote:
> Hi,
>
> you might want to try to comment out the offending definition of int64_t
> in dyngen...
>
> Please note that there's much more to getting QEmu to run on sparc than
> getting it to compile.
Indeed -
you really did a great job, thanks again!
(Beeing a very happy user of QEMU_cvs2004nov14 on a Solaris_10__03/05 SPARC host :))
> You might want to work with the SPARC host patch
> (which you can get from http://libvncserver.sf.net/qemu/). It is a bit of
> work to apply it to the current CVS, though. If you beat me to it, I will
> try to adapt it.
I tried my best to do that part - the resulting patch file should be attached.
However, I got at least two major compile time errors I'm unable to solve {1.) and 2.)} :
*****
0a.)
*****
First, my build environment looks like this:
bash-3.00$ gcc -v
Reading specs from /opt/sfw/lib/gcc/sparc-sun-solaris2.10/3.4.2/specs
Configured with: ../gcc-3.4.2/configure --prefix=/opt/sfw --with-ld=/usr/ccs/bin/ld --with-gnu-as --with-as=/opt/sfw/bin/gas --enable-shared --disable-libgcj
Thread model: posix
gcc version 3.4.2
bash-3.00$ gmake -v
GNU Make 3.80
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
bash-3.00$ uname -a
SunOS mb1x-ws0 5.10 Generic sun4u sparc SUNW,Sun-Blade-1000
bash-3.00$ isainfo -v
64-bit sparcv9 applications
vis2 vis
32-bit sparc applications
vis2 vis v8plus div32 mul32
bash-3.00$
*****
0b.)
*****
I configured QEMU with:
./configure --disable-slirp --disable-kqemu --target-list=i386-softmmu
*****
error 1.)
*****
The first problem is:
gcc -Wall -O2 -g -fno-strict-aliasing -m32 -ffixed-g4 -ffixed-g2 -ffixed-g3 -DUSE_SB16 -I. -I/tmp/QEMU/qemu_SPARC/target-i386 -I/tmp/QEMU/qemu_SPARC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -c -o exec.o /tmp/QEMU/qemu_SPARC/exec.c
gcc -Wall -O2 -g -fno-strict-aliasing -m32 -ffixed-g4 -ffixed-g2 -ffixed-g3 -DUSE_SB16 -I. -I/tmp/QEMU/qemu_SPARC/target-i386 -I/tmp/QEMU/qemu_SPARC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -c -o kqemu.o /tmp/QEMU/qemu_SPARC/kqemu.c
gcc -Wall -O2 -g -fno-strict-aliasing -m32 -ffixed-g4 -ffixed-g2 -ffixed-g3 -fno-delayed-branch -O6 -fno-reorder-blocks -fno-optimize-sibling-calls -DUSE_SB16 -I. -I/tmp/QEMU/qemu_SPARC/target-i386 -I/tmp/QEMU/qemu_SPARC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -c -o op.o /tmp/QEMU/qemu_SPARC/target-i386/op.c
In file included from /tmp/QEMU/qemu_SPARC/target-i386/op.c:724:
/tmp/QEMU/qemu_SPARC/target-i386/ops_template.h: In function `op_jb_subb':
/tmp/QEMU/qemu_SPARC/target-i386/ops_template.h:278: warning: implicit declaration of function `GOTO_LABEL_PARAM'
../dyngen -o op.h op.o
../dyngen -c -o opc.h op.o
gcc -Wall -O2 -g -fno-strict-aliasing -m32 -ffixed-g4 -ffixed-g2 -ffixed-g3 -DUSE_SB16 -I. -I/tmp/QEMU/qemu_SPARC/target-i386 -I/tmp/QEMU/qemu_SPARC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -c -o translate-all.o /tmp/QEMU/qemu_SPARC/translate-all.c
In file included from /tmp/QEMU/qemu_SPARC/translate-all.c:41:
./op.h: In function `dyngen_code':
./op.h:1310: error: `lo' undeclared (first use in this function)
./op.h:1310: error: (Each undeclared identifier is reported only once
./op.h:1310: error: for each function it appears in.)
./op.h:1310: error: parse error before ';' token
./op.h:1318: error: `op_imulb_AL_T0' undeclared (first use in this function)
./op.h:1319: error: parse error before ';' token
./op.h:1327: error: `op_mulw_AX_T0' undeclared (first use in this function)
./op.h:1328: error: parse error before ';' token
./op.h:1336: error: `op_imulw_AX_T0' undeclared (first use in this function)
./op.h:1337: error: parse error before ';' token
./op.h:1345: error: `op_mull_EAX_T0' undeclared (first use in this function)
./op.h:1335: warning: unused variable `__dot_umul'
./op.h:1364: error: parse error before ';' token
./op.h:1372: error: `op_imull_T0_T1' undeclared (first use in this function)
./op.h:1362: warning: unused variable `__dot_umul'
./op.h:1385: error: parse error before ';' token
./op.h:1386: error: parse error before ';' token
./op.h:1396: error: `op_idivb_AL_T0' undeclared (first use in this function)
./op.h:1398: error: parse error before ';' token
./op.h:1399: error: parse error before ';' token
./op.h:1409: error: `op_divw_AX_T0' undeclared (first use in this function)
./op.h:1411: error: parse error before ';' token
./op.h:1412: error: parse error before ';' token
./op.h:1422: error: `op_idivw_AX_T0' undeclared (first use in this function)
./op.h:1424: error: parse error before ';' token
./op.h:1425: error: parse error before ';' token
./op.h:1433: error: `op_divl_EAX_T0' undeclared (first use in this function)
./op.h:1407: warning: unused variable `__dot_udiv'
./op.h:1408: warning: unused variable `__dot_urem'
./op.h:1420: warning: unused variable `__dot_div'
./op.h:1421: warning: unused variable `__dot_rem'
./op.h:5104: error: parse error before ';' token
./op.h:5105: error: parse error before ';' token
./op.h:5114: error: `op_aad' undeclared (first use in this function)
./op.h:5118: error: parse error before ';' token
./op.h:5127: error: `op_aaa' undeclared (first use in this function)
./op.h:5098: warning: unused variable `__dot_div'
./op.h:5099: warning: unused variable `__dot_rem'
./op.h:5113: warning: unused variable `__dot_umul'
./op.h:5931: warning: built-in function 'rint' declared as non-function
./op.h:7242: error: parse error before ';' token
./op.h:7243: error: parse error before ';' token
./op.h:7244: error: parse error before ';' token
./op.h:7245: error: parse error before ';' token
./op.h:7257: error: `op_pmulhuw_mmx' undeclared (first use in this function)
./op.h:7264: error: parse error before ';' token
./op.h:7265: error: parse error before ';' token
./op.h:7266: error: parse error before ';' token
./op.h:7267: error: parse error before ';' token
./op.h:7279: error: `op_pmulhw_mmx' undeclared (first use in this function)
./op.h:7286: error: parse error before ';' token
./op.h:7287: error: parse error before ';' token
./op.h:7288: error: parse error before ';' token
./op.h:7289: error: parse error before ';' token
./op.h:7297: error: `op_pavgb_mmx' undeclared (first use in this function)
./op.h:7278: warning: unused variable `__dot_umul'
./op.h:7350: error: parse error before ';' token
./op.h:7351: error: parse error before ';' token
./op.h:7359: error: `op_psadbw_mmx' undeclared (first use in this function)
./op.h:7342: warning: unused variable `__dot_umul'
./op.h:8176: error: parse error before ';' token
./op.h:8177: error: parse error before ';' token
./op.h:8178: error: parse error before ';' token
./op.h:8179: error: parse error before ';' token
./op.h:8180: error: parse error before ';' token
./op.h:8181: error: parse error before ';' token
./op.h:8182: error: parse error before ';' token
./op.h:8183: error: parse error before ';' token
./op.h:8199: error: `op_pmulhuw_xmm' undeclared (first use in this function)
./op.h:8206: error: parse error before ';' token
./op.h:8207: error: parse error before ';' token
./op.h:8208: error: parse error before ';' token
./op.h:8209: error: parse error before ';' token
./op.h:8210: error: parse error before ';' token
./op.h:8211: error: parse error before ';' token
./op.h:8212: error: parse error before ';' token
./op.h:8213: error: parse error before ';' token
./op.h:8229: error: `op_pmulhw_xmm' undeclared (first use in this function)
./op.h:8236: error: parse error before ';' token
./op.h:8237: error: parse error before ';' token
./op.h:8238: error: parse error before ';' token
./op.h:8239: error: parse error before ';' token
./op.h:8240: error: parse error before ';' token
./op.h:8241: error: parse error before ';' token
./op.h:8242: error: parse error before ';' token
./op.h:8243: error: parse error before ';' token
./op.h:8251: error: `op_pavgb_xmm' undeclared (first use in this function)
./op.h:8228: warning: unused variable `__dot_umul'
./op.h:8306: error: parse error before ';' token
./op.h:8307: error: parse error before ';' token
./op.h:8315: error: `op_psadbw_xmm' undeclared (first use in this function)
./op.h:8298: warning: unused variable `__dot_umul'
gmake[1]: *** [translate-all.o] Error 1
gmake[1]: Leaving directory `/tmp/QEMU/qemu_SPARC/i386-softmmu'
gmake: *** [all] Error 1
*****
error 2.)
*****
The second errors is:
for d in i386-softmmu; do \
gmake -C $d all || exit 1 ; \
done
gmake[1]: Entering directory `/tmp/QEMU/qemu_SPARC/i386-softmmu'
gcc -Wall -O2 -g -fno-strict-aliasing -m32 -ffixed-g4 -ffixed-g2 -ffixed-g3 -DUSE_SB16 -I. -I/tmp/QEMU/qemu_SPARC/target-i386 -I/tmp/QEMU/qemu_SPARC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -c -o cpu-exec.o /tmp/QEMU/qemu_SPARC/cpu-exec.c
../dyngen -g -o gen-op.h op.o
gcc -Wall -O2 -g -fno-strict-aliasing -m32 -ffixed-g4 -ffixed-g2 -ffixed-g3 -DUSE_SB16 -I. -I/tmp/QEMU/qemu_SPARC/target-i386 -I/tmp/QEMU/qemu_SPARC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -c -o translate.o /tmp/QEMU/qemu_SPARC/target-i386/translate.c
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:876: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:877: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:882: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:883: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:895: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:896: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:897: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:901: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:902: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:903: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1176: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1177: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1178: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1179: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1181: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1182: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1186: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1187: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1188: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1189: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1191: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1192: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1196: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1197: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1198: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1199: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1201: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1202: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1219: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1220: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1221: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1224: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1225: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1226: warning: initialization from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c: In function `gen_jcc':
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1780: warning: assignment from incompatible pointer type
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1819: error: too many arguments to function `gen_op_jnz_T0_label'
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:1821: error: too many arguments to function `gen_op_jmp_label'
/tmp/QEMU/qemu_SPARC/target-i386/translate.c: In function `disas_insn':
/tmp/QEMU/qemu_SPARC/target-i386/translate.c:5294: error: too many arguments to function `gen_op_jmp_label'
gmake[1]: *** [translate.o] Error 1
gmake[1]: Leaving directory `/tmp/QEMU/qemu_SPARC/i386-softmmu'
gmake: *** [all] Error 1
bash-3.00$
*****
comments
*****
To error 2.) :
Somebody reported a very similar/related problem ( http://lists.gnu.org/archive/html/qemu-devel/2005-03/msg00007.html ).
Unfortunately patching dyngen-exec.h did not help.
I added a line
#define GOTO_LABEL_PARAM(n) asm volatile ("jmp " ASM_NAME(__op_gen_label) #n)
to #ifdef __sparc__ in dyngen-exec.h, did a "gmake distclean;./configure --disable-slirp --disable-kqemu --target-list=i386-softmmu;gmake" and got the following error:
*****
error 3.)
*****
gcc -Wall -O2 -g -fno-strict-aliasing -m32 -ffixed-g4 -ffixed-g2 -ffixed-g3 -DUSE_SB16 -I. -I/tmp/QEMU/qemu_SPARC/target-i386 -I/tmp/QEMU/qemu_SPARC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/opt/sfw/include/SDL -D_REENTRANT -c -o sdl.o /tmp/QEMU/qemu_SPARC/sdl.c
gcc -Wall -O2 -g -fno-strict-aliasing -m32 -ffixed-g4 -ffixed-g2 -ffixed-g3 -DUSE_SB16 -I. -I/tmp/QEMU/qemu_SPARC/target-i386 -I/tmp/QEMU/qemu_SPARC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -c -o exec.o /tmp/QEMU/qemu_SPARC/exec.c
gcc -Wall -O2 -g -fno-strict-aliasing -m32 -ffixed-g4 -ffixed-g2 -ffixed-g3 -DUSE_SB16 -I. -I/tmp/QEMU/qemu_SPARC/target-i386 -I/tmp/QEMU/qemu_SPARC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -c -o kqemu.o /tmp/QEMU/qemu_SPARC/kqemu.c
gcc -Wall -O2 -g -fno-strict-aliasing -m32 -ffixed-g4 -ffixed-g2 -ffixed-g3 -fno-delayed-branch -O6 -fno-reorder-blocks -fno-optimize-sibling-calls -DUSE_SB16 -I. -I/tmp/QEMU/qemu_SPARC/target-i386 -I/tmp/QEMU/qemu_SPARC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -c -o op.o /tmp/QEMU/qemu_SPARC/target-i386/op.c
../dyngen -o op.h op.o
dyngen: unsupported sparc relocation (11)
gmake[1]: *** [op.h] Error 1
gmake[1]: Leaving directory `/tmp/QEMU/qemu_SPARC/i386-softmmu'
gmake: *** [all] Error 1
bash-3.00$
*****
*****
So the question is, what needs to be modified in order to avoid the latter error, dyngen.c or the line just added to dyngen-exec.h???
As I'm very unshure how to tweak dyngen.c in that aspect, I experimented with above line in dyngen-exec.h.
I tried to replace the 'jmp' instruction with some other SPARCv8 assembly instruction ('jmpl' and so on - without too much sucess).
Finally I found that 'call' seems to work instead of 'jmp'. At least it would continue the build processs "for now".
I then tried to patch ./i386-softmmu/op.h by hand ("error: parse error before ';' token ." related trouble).
It seems to me, that the lines in question have either one opening '(' to much or one missing closing ')'.
The "best" I could eventually get was the following error message:
gcc -Wall -O2 -g -fno-strict-aliasing -m32 -ffixed-g4 -ffixed-g2 -ffixed-g3 -DUSE_SB16 -I. -I/tmp/QEMU/qemu_SPARC/target-i386 -I/tmp/QEMU/qemu_SPARC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -c -o sparc-dis.o /tmp/QEMU/qemu_SPARC/sparc-dis.c
rm -f libqemu.a
ar rcs libqemu.a exec.o kqemu.o translate-all.o cpu-exec.o translate.o op.o helper.o helper2.o disas.o i386-dis.o sparc-dis.o
gcc -o qemu vl.o osdep.o block.o readline.o monitor.o pci.o console.o block-cow.o block-qcow.o aes.o block-vmdk.o block-cloop.o block-dmg.o ide.o ne2000.o pckbd.o vga.o sb16.o dma.o audio.o noaudio.o wavaudio.o sdlaudio.o fdc.o mc146818rtc.o serial.o i8259.o i8254.o pc.o cirrus_vga.o mixeng.o apic.o parallel.o gdbstub.o sdl.o libqemu.a -lm -lz -lsocket -lnsl -L/opt/sfw/lib -R/opt/sfw/lib -lSDL -lpthread -lposix4
Undefined first referenced
symbol in file
GOTO_LABEL_PARAM libqemu.a(translate-all.o)
ld: fatal: Symbol referencing errors. No output written to qemu
collect2: ld returned 1 exit status
gmake[1]: *** [qemu] Error 1
gmake[1]: Leaving directory `/tmp/QEMU/qemu_SPARC/i386-softmmu'
gmake: *** [all] Error 1
bash-3.00$
Please see the followings links as kind of "error reference":
[Qemu-devel] powerpc host trouble
http://lists.gnu.org/archive/html/qemu-devel/2005-01/msg00140.html
and
Re: [Qemu-devel] Too Many Arguments To Function gen_op_jmp_label
http://lists.gnu.org/archive/html/qemu-devel/2005-03/msg00007.html
It seems that the old SPARC patch doesn't like all the new MMX/SSE extensions recently added to the qemu cvs.
Please continue your *great* work.
Or should I say magic?!
Thank You,
Martin Bochnig
[-- Attachment #2: qemu_SPARC_HOST_cvs20050309wed.patch --]
[-- Type: text/x-patch, Size: 16351 bytes --]
diff -Nur qemu_cvs2005mar09wed/Makefile qemu_SPARC/Makefile
--- qemu_cvs2005mar09wed/Makefile 2005-02-10 22:48:51.000000000 +0100
+++ qemu_SPARC/Makefile 2005-03-10 00:37:52.000000000 +0100
@@ -86,11 +86,13 @@
qemu.1: qemu-doc.texi
./texi2pod.pl $< qemu.pod
- pod2man --section=1 --center=" " --release=" " qemu.pod > $@
+# pod2man --section=1 --center=" " --release=" " qemu.pod > $@
+ true --section=1 --center=" " --release=" " qemu.pod > $@
qemu-img.1: qemu-img.texi
./texi2pod.pl $< qemu-img.pod
- pod2man --section=1 --center=" " --release=" " qemu-img.pod > $@
+# pod2man --section=1 --center=" " --release=" " qemu-img.pod > $@
+ true --section=1 --center=" " --release=" " qemu-img.pod > $@
FILE=qemu-$(shell cat VERSION)
diff -Nur qemu_cvs2005mar09wed/Makefile.target qemu_SPARC/Makefile.target
--- qemu_cvs2005mar09wed/Makefile.target 2005-03-01 22:37:28.000000000 +0100
+++ qemu_SPARC/Makefile.target 2005-03-10 01:12:08.000000000 +0100
@@ -160,9 +160,9 @@
endif
ifeq ($(ARCH),sparc)
-CFLAGS+=-m32 -ffixed-g1 -ffixed-g2 -ffixed-g3 -ffixed-g6
+CFLAGS+=-m32 -ffixed-g4 -ffixed-g2 -ffixed-g3
LDFLAGS+=-m32
-OP_CFLAGS=$(CFLAGS) -fno-delayed-branch -ffixed-i0
+OP_CFLAGS=$(CFLAGS) -fno-delayed-branch -O6
HELPER_CFLAGS=$(CFLAGS) -ffixed-i0 -mflat
# -static is used to avoid g1/g3 usage by the dynamic linker
LDFLAGS+=-Wl,-T,$(SRC_PATH)/sparc.ld -static
@@ -217,6 +217,9 @@
ifdef CONFIG_WIN32
LIBS+=-lwinmm -lws2_32 -liphlpapi
endif
+ifdef CONFIG_SVR4
+LIBS+=-lsocket -lnsl
+endif
# profiling code
ifdef TARGET_GPROF
@@ -314,7 +317,7 @@
AUDIODRV += ossaudio.o
endif
-pc.o: DEFINES := -DUSE_SB16 $(DEFINES)
+DEFINES := -DUSE_SB16 $(DEFINES)
ifdef CONFIG_ADLIB
SOUND_HW += fmopl.o adlib.o
@@ -368,9 +371,11 @@
endif
ifndef CONFIG_DARWIN
ifndef CONFIG_WIN32
+ifndef CONFIG_SVR4
VL_LIBS=-lutil
endif
endif
+endif
ifdef TARGET_GPROF
vl.o: CFLAGS+=-p
VL_LDFLAGS+=-p
diff -Nur qemu_cvs2005mar09wed/configure qemu_SPARC/configure
--- qemu_cvs2005mar09wed/configure 2005-03-01 23:30:41.000000000 +0100
+++ qemu_SPARC/configure 2005-03-09 22:54:36.000000000 +0100
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# qemu configure script (c) 2003 Fabrice Bellard
#
@@ -50,7 +50,7 @@
s390)
cpu="s390"
;;
- sparc)
+ sparc|sun4u)
cpu="sparc"
;;
sparc64)
@@ -107,6 +107,10 @@
bsd="yes"
darwin="yes"
;;
+SunOS)
+solaris="yes"
+svr4="yes"
+;;
*)
oss="yes"
linux="yes"
@@ -116,7 +120,7 @@
;;
esac
-if [ "$bsd" = "yes" ] ; then
+if [ "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
if [ ! "$darwin" = "yes" ] ; then
make="gmake"
fi
@@ -499,7 +503,7 @@
echo "ARCH=m68k" >> $config_mak
echo "#define HOST_M68K 1" >> $config_h
else
- echo "Unsupported CPU"
+ echo "Unsupported CPU ($cpu)"
exit 1
fi
if test "$bigendian" = "yes" ; then
@@ -512,10 +516,17 @@
elif test -f "/usr/include/byteswap.h" ; then
echo "#define HAVE_BYTESWAP_H 1" >> $config_h
fi
+if test "$solaris" = "yes" ; then
+ echo "CONFIG_SOLARIS=yes" >> $config_mak
+fi
if test "$darwin" = "yes" ; then
echo "CONFIG_DARWIN=yes" >> $config_mak
echo "#define CONFIG_DARWIN 1" >> $config_h
fi
+if test "$svr4" = "yes" ; then
+ echo "CONFIG_SVR4=yes" >> $config_mak
+ echo "#define CONFIG_SVR4 1" >> $config_h
+fi
if test "$gdbstub" = "yes" ; then
echo "CONFIG_GDBSTUB=yes" >> $config_mak
echo "#define CONFIG_GDBSTUB 1" >> $config_h
@@ -569,6 +580,13 @@
echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
echo "#define _BSD 1" >> $config_h
fi
+if [ "$solaris" = "yes" ] ; then
+ echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
+ echo "#define _SOLARIS 1" >> $config_h
+fi
+if [ "$svr4" = yes ] ; then
+ echo "#define _SVR4 1" >> $config_h
+fi
for target in $target_list; do
@@ -600,7 +618,8 @@
mkdir -p $target_dir/slirp
fi
-ln -sf $source_path/Makefile.target $target_dir/Makefile
+test -f $target_dir/Makefile && rm -f $target_dir/Makefile
+ln -s $source_path/Makefile.target $target_dir/Makefile
echo "# Automatically generated by configure - do not modify" > $config_mak
echo "/* Automatically generated by configure - do not modify */" > $config_h
@@ -697,7 +716,8 @@
mkdir -p $dir
done
for f in $FILES ; do
- ln -sf $source_path/$f $f
+ test -f $source_path/$f && rm -f $source_path/$f
+ ln -s $source_path/$f $f
done
fi
diff -Nur qemu_cvs2005mar09wed/cpu-exec.c qemu_SPARC/cpu-exec.c
--- qemu_cvs2005mar09wed/cpu-exec.c 2005-02-22 20:27:14.000000000 +0100
+++ qemu_SPARC/cpu-exec.c 2005-03-09 23:10:42.000000000 +0100
@@ -482,7 +482,8 @@
"mov %%o7,%%i0"
: /* no outputs */
: "r" (gen_func)
- : "i0", "i1", "i2", "i3", "i4", "i5");
+ : "g0", "i0", "i1", "i2", "i3", "i4", "i5", "i7",
+ "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7");
#elif defined(__arm__)
asm volatile ("mov pc, %0\n\t"
".global exec_loop\n\t"
diff -Nur qemu_cvs2005mar09wed/dyngen-exec.h qemu_SPARC/dyngen-exec.h
--- qemu_cvs2005mar09wed/dyngen-exec.h 2005-03-01 23:30:59.000000000 +0100
+++ qemu_SPARC/dyngen-exec.h 2005-03-09 23:56:47.000000000 +0100
@@ -25,6 +25,11 @@
host headers do not allow that. */
#include <stddef.h>
+#ifdef _SVR4
+#include <stdio.h>
+#include <sys/types.h>
+#else
+
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
@@ -62,7 +67,10 @@
extern int printf(const char *, ...);
#undef NULL
#define NULL 0
-#if defined(_BSD) && !defined(__APPLE__)
+
+#endif /* !_SVR4 */
+
+#if defined(_BSD) && !defined(__APPLE__) || defined(_SVR4)
#include <ieeefp.h>
#define FE_TONEAREST FP_RN
@@ -70,6 +78,7 @@
#define FE_UPWARD FP_RP
#define FE_TOWARDZERO FP_RZ
#define fesetround(x) fpsetround(x)
+#define fegetround() fpgetround()
#else
#include <fenv.h>
#endif
@@ -120,18 +129,19 @@
#define AREG3 "s2"
#endif
#ifdef __sparc__
-#define AREG0 "g6"
-#define AREG1 "g1"
-#define AREG2 "g2"
-#define AREG3 "g3"
-#define AREG4 "l0"
-#define AREG5 "l1"
-#define AREG6 "l2"
-#define AREG7 "l3"
-#define AREG8 "l4"
-#define AREG9 "l5"
-#define AREG10 "l6"
-#define AREG11 "l7"
+#define AREG0 "g4"
+#define AREG1 "g2"
+#define AREG2 "g3"
+#define AREG3 "l0"
+#if 0
+#define AREG4 "l1"
+#define AREG5 "l2"
+#define AREG6 "l3"
+#define AREG7 "l4"
+#define AREG8 "l5"
+#define AREG9 "l6"
+#define AREG10 "l7"
+#endif
#define USE_FP_CONVERT
#endif
#ifdef __s390__
diff -Nur qemu_cvs2005mar09wed/dyngen.c qemu_SPARC/dyngen.c
--- qemu_cvs2005mar09wed/dyngen.c 2005-02-21 20:53:34.000000000 +0100
+++ qemu_SPARC/dyngen.c 2005-03-09 23:28:16.000000000 +0100
@@ -1407,12 +1407,14 @@
if ((start_insn & ~0x1fff) == 0x9de3a000) {
p_start += 0x4;
start_offset += 0x4;
- if ((int)(start_insn | ~0x1fff) < -128)
+ if ((int)(start_insn | ~0x1fff) < -256)
error("Found bogus save at the start of %s", name);
if (end_insn1 != 0x81c7e008 || end_insn2 != 0x81e80000)
error("ret; restore; not found at end of %s", name);
} else {
- error("No save at the beginning of %s", name);
+ //error("No save at the beginning of %s", name);
+ if (end_insn1 != 0x81c3e008 || end_insn2 != 0x01000000)
+ error("ret; nop; not found at end of %s (no save)", name);
}
#if 0
/* Skip a preceeding nop, if present. */
diff -Nur qemu_cvs2005mar09wed/hw/ide.c qemu_SPARC/hw/ide.c
--- qemu_cvs2005mar09wed/hw/ide.c 2004-12-02 21:20:21.000000000 +0100
+++ qemu_SPARC/hw/ide.c 2005-03-10 00:10:57.000000000 +0100
@@ -500,6 +500,10 @@
static inline void ide_set_irq(IDEState *s)
{
if (!(s->cmd & IDE_CMD_DISABLE_IRQ)) {
+ BMDMAState *bm = s->bmdma;
+ if(bm)
+ bm->status |= BM_STATUS_INT;
+
#ifdef TARGET_PPC
if (s->openpic)
openpic_set_irq(s->openpic, s->irq, 1);
@@ -2163,6 +2167,7 @@
pci_conf[0x01] = 0x80;
pci_conf[0x02] = 0x00; // fake
pci_conf[0x03] = 0x01; // fake
+ pci_conf[0x09] = 0x8a; // programming interface = PCI_IDE bus master is supported
pci_conf[0x0a] = 0x01; // class_sub = PCI_IDE
pci_conf[0x0b] = 0x01; // class_base = PCI_mass_storage
pci_conf[0x0e] = 0x80; // header_type = PCI_multifunction, generic
diff -Nur qemu_cvs2005mar09wed/linux-user/main.c qemu_SPARC/linux-user/main.c
--- qemu_cvs2005mar09wed/linux-user/main.c 2005-02-19 18:25:31.000000000 +0100
+++ qemu_SPARC/linux-user/main.c 2005-03-10 00:15:49.000000000 +0100
@@ -33,6 +33,10 @@
# define environ (*_NSGetEnviron())
#endif
+#if defined(unix) && !defined(linux)
+extern char **environ;
+#endif
+
static const char *interp_prefix = CONFIG_QEMU_PREFIX;
#if defined(__i386__) && !defined(CONFIG_STATIC)
diff -Nur qemu_cvs2005mar09wed/linux-user/syscall.c qemu_SPARC/linux-user/syscall.c
--- qemu_cvs2005mar09wed/linux-user/syscall.c 2005-03-01 23:32:06.000000000 +0100
+++ qemu_SPARC/linux-user/syscall.c 2005-03-10 00:27:26.000000000 +0100
@@ -22,7 +22,9 @@
#include <stdarg.h>
#include <string.h>
#include <elf.h>
+#ifdef linux
#include <endian.h>
+#endif
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>
@@ -55,6 +57,7 @@
#define tchars host_tchars /* same as target */
#define ltchars host_ltchars /* same as target */
+#ifdef linux
#include <linux/termios.h>
#include <linux/unistd.h>
#include <linux/utsname.h>
@@ -63,6 +66,7 @@
#include <linux/soundcard.h>
#include <linux/dirent.h>
#include <linux/kd.h>
+#endif
#include "qemu.h"
diff -Nur qemu_cvs2005mar09wed/sdl.c qemu_SPARC/sdl.c
--- qemu_cvs2005mar09wed/sdl.c 2005-01-17 23:32:23.000000000 +0100
+++ qemu_SPARC/sdl.c 2005-03-10 01:22:18.000000000 +0100
@@ -29,6 +29,10 @@
#include <signal.h>
#endif
+#if defined(_SVR4)
+#define CONFIG_SDL_GENERIC_KBD
+#endif
+
static SDL_Surface *screen;
static int gui_grab; /* if true, all keyboard/mouse events are grabbed */
static int last_vm_running;
diff -Nur qemu_cvs2005mar09wed/slirp/misc.c qemu_SPARC/slirp/misc.c
--- qemu_cvs2005mar09wed/slirp/misc.c 2004-12-12 12:45:10.000000000 +0100
+++ qemu_SPARC/slirp/misc.c 2005-03-10 01:27:42.000000000 +0100
@@ -67,6 +67,10 @@
}
#endif
+#ifdef _SVR4
+#undef HAVE_INET_ATON
+#endif
+
#ifndef HAVE_INET_ATON
int
inet_aton(cp, ia)
diff -Nur qemu_cvs2005mar09wed/slirp/slirp.h qemu_SPARC/slirp/slirp.h
--- qemu_cvs2005mar09wed/slirp/slirp.h 2005-01-11 00:19:34.000000000 +0100
+++ qemu_SPARC/slirp/slirp.h 2005-03-10 01:32:01.000000000 +0100
@@ -73,6 +73,12 @@
# endif
#endif /* NEED_TYPEDEFS */
+#ifdef _SVR4
+typedef uint8_t u_int8_t;
+typedef uint16_t u_int16_t;
+typedef uint32_t u_int32_t;
+#endif
+
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
diff -Nur qemu_cvs2005mar09wed/slirp/socket.c qemu_SPARC/slirp/socket.c
--- qemu_cvs2005mar09wed/slirp/socket.c 2004-11-24 21:39:26.000000000 +0100
+++ qemu_SPARC/slirp/socket.c 2005-03-10 01:35:38.000000000 +0100
@@ -10,6 +10,10 @@
#include "ip_icmp.h"
#include "main.h"
+#ifdef _SVR4
+#include <sys/filio.h>
+#endif
+
void
so_init()
{
diff -Nur qemu_cvs2005mar09wed/target-i386/cpu.h qemu_SPARC/target-i386/cpu.h
--- qemu_cvs2005mar09wed/target-i386/cpu.h 2005-02-12 19:58:00.000000000 +0100
+++ qemu_SPARC/target-i386/cpu.h 2005-03-10 01:40:36.000000000 +0100
@@ -332,7 +332,7 @@
CC_OP_NB,
};
-#if (defined(__i386__) || defined(__x86_64__)) && !defined(_BSD)
+#if (defined(__i386__) || defined(__x86_64__)) && !defined(_BSD) && !defined(_SVR4)
#define USE_X86LDOUBLE
#endif
diff -Nur qemu_cvs2005mar09wed/target-i386/exec.h qemu_SPARC/target-i386/exec.h
--- qemu_cvs2005mar09wed/target-i386/exec.h 2005-03-01 23:33:39.000000000 +0100
+++ qemu_SPARC/target-i386/exec.h 2005-03-10 01:54:37.000000000 +0100
@@ -20,6 +20,10 @@
#include "config.h"
#include "dyngen-exec.h"
+#ifdef _SVR4
+#include <sys/types.h>
+#endif
+
/* XXX: factorize this mess */
#ifdef TARGET_X86_64
#define TARGET_LONG_BITS 64
@@ -373,7 +377,7 @@
#define rint rintl
#endif
-#if !defined(_BSD)
+#if !defined(_BSD) && !defined(_SVR4)
extern int lrint(CPU86_LDouble x);
extern int64_t llrint(CPU86_LDouble x);
#else
diff -Nur qemu_cvs2005mar09wed/target-i386/op.c qemu_SPARC/target-i386/op.c
--- qemu_cvs2005mar09wed/target-i386/op.c 2005-03-03 02:14:55.000000000 +0100
+++ qemu_SPARC/target-i386/op.c 2005-03-10 02:06:33.000000000 +0100
@@ -1858,10 +1858,11 @@
{
#if defined(__sparc__) && !defined(__sparc_v9__)
register CPU86_LDouble d asm("o0");
+ int64_t val;
#else
CPU86_LDouble d;
-#endif
int val;
+#endif
d = ST0;
val = lrint(d);
diff -Nur qemu_cvs2005mar09wed/target-i386/translate.c qemu_SPARC/target-i386/translate.c
--- qemu_cvs2005mar09wed/target-i386/translate.c 2005-03-03 02:14:55.000000000 +0100
+++ qemu_SPARC/target-i386/translate.c 2005-03-10 02:15:33.000000000 +0100
@@ -6265,7 +6265,7 @@
/* if irq were inhibited with HF_INHIBIT_IRQ_MASK, we clear
the flag and abort the translation to give the irqs a
change to be happen */
- if (dc->tf || dc->singlestep_enabled ||
+ if (1||dc->tf || dc->singlestep_enabled ||
(flags & HF_INHIBIT_IRQ_MASK) ||
(cflags & CF_SINGLE_INSN)) {
gen_jmp_im(pc_ptr - dc->cs_base);
diff -Nur qemu_cvs2005mar09wed/target-ppc/exec.h qemu_SPARC/target-ppc/exec.h
--- qemu_cvs2005mar09wed/target-ppc/exec.h 2005-01-04 00:42:39.000000000 +0100
+++ qemu_SPARC/target-ppc/exec.h 2005-03-10 02:19:07.000000000 +0100
@@ -22,6 +22,10 @@
#include "dyngen-exec.h"
+#ifdef _SVR4
+#include <sys/types.h>
+#endif
+
register struct CPUPPCState *env asm(AREG0);
register uint32_t T0 asm(AREG1);
register uint32_t T1 asm(AREG2);
diff -Nur qemu_cvs2005mar09wed/target-ppc/helper.c qemu_SPARC/target-ppc/helper.c
--- qemu_cvs2005mar09wed/target-ppc/helper.c 2005-02-16 00:06:19.000000000 +0100
+++ qemu_SPARC/target-ppc/helper.c 2005-03-10 02:22:19.000000000 +0100
@@ -17,6 +17,7 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+#include "config.h"
#include "exec.h"
//#define DEBUG_MMU
diff -Nur qemu_cvs2005mar09wed/target-ppc/op_helper.c qemu_SPARC/target-ppc/op_helper.c
--- qemu_cvs2005mar09wed/target-ppc/op_helper.c 2005-02-16 00:06:19.000000000 +0100
+++ qemu_SPARC/target-ppc/op_helper.c 2005-03-10 02:25:29.000000000 +0100
@@ -17,6 +17,7 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+#include "config.h"
#include <math.h>
#include "exec.h"
diff -Nur qemu_cvs2005mar09wed/vl.c qemu_SPARC/vl.c
--- qemu_cvs2005mar09wed/vl.c 2005-03-01 22:37:28.000000000 +0100
+++ qemu_SPARC/vl.c 2005-03-10 02:47:49.000000000 +0100
@@ -46,6 +46,9 @@
#include <libutil.h>
#endif
#else
+#if defined(_SVR4) || defined(_SOLARIS)
+#include <sys/stat.h>
+#else
#include <linux/if.h>
#include <linux/if_tun.h>
#include <pty.h>
@@ -53,6 +56,7 @@
#include <linux/rtc.h>
#endif
#endif
+#endif
#if defined(CONFIG_SLIRP)
#include "libslirp.h"
@@ -515,7 +519,30 @@
}
#else
-#error unsupported CPU
+
+ /* Derived from: "m68k updates #2" by Richard Zidlicky
+ "crude hack to get some sort of rdtsc support" */
+
+#include <sys/time.h>
+static int64_t cputicks=0;
+static struct timeval lastcptcall={0,0};
+
+// assume 550 MHz Pentium, min 80 ticks between rdtsc calls
+
+int64_t cpu_get_real_ticks(void)
+{
+ struct timeval tp;
+ gettimeofday(&tp,(void*)0);
+ if (tp.tv_sec == lastcptcall.tv_sec &&
+ tp.tv_usec == lastcptcall.tv_usec ){
+ cputicks += 1;
+ } else {
+ cputicks=0;
+ lastcptcall=tp;
+ }
+ return ((int64_t)tp.tv_sec*1000000+tp.tv_usec)*550+cputicks;
+}
+
#endif
static int64_t cpu_ticks_offset;
@@ -1596,6 +1623,12 @@
fcntl(fd, F_SETFL, O_NONBLOCK);
return fd;
}
+#elif defined(_SVR4)
+static int tun_open(char *ifname, int ifname_size)
+{
+ fprintf(stderr, "warning: tun_open not yet implemented\n");
+ return -1;
+}
#else
static int tun_open(char *ifname, int ifname_size)
{
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] Again <<qemu_SPARC_HOST_cvs20050309wed.patch>>. This time inline for redundance.
2005-01-19 2:56 ` Johannes Schindelin
2005-03-12 19:56 ` qemu_SPARC_HOST_cvs20050309wed.patch_/_Re: " Martin Bochnig
@ 2005-03-12 20:25 ` Martin Bochnig
1 sibling, 0 replies; 4+ messages in thread
From: Martin Bochnig @ 2005-03-12 20:25 UTC (permalink / raw)
To: qemu-devel
Hi,
On Wed, 2005-01-19 at 03:56, Johannes Schindelin wrote:
> Hi,
>
> you might want to try to comment out the offending definition of int64_t
> in dyngen...
>
> Please note that there's much more to getting QEmu to run on sparc than
> getting it to compile.
Indeed -
you really did a great job, thanks again!
(Beeing a very happy user of QEMU_cvs2004nov14 on a Solaris_10__03/05 SPARC host :))
> You might want to work with the SPARC host patch
> (which you can get from http://libvncserver.sf.net/qemu/). It is a bit of
> work to apply it to the current CVS, though. If you beat me to it, I will
> try to adapt it.
I tried my best to do that part - the resulting patch is here:
diff -Nur qemu_cvs2005mar09wed/Makefile qemu_SPARC/Makefile
--- qemu_cvs2005mar09wed/Makefile 2005-02-10 22:48:51.000000000 +0100
+++ qemu_SPARC/Makefile 2005-03-10 00:37:52.000000000 +0100
@@ -86,11 +86,13 @@
qemu.1: qemu-doc.texi
./texi2pod.pl $< qemu.pod
- pod2man --section=1 --center=" " --release=" " qemu.pod > $@
+# pod2man --section=1 --center=" " --release=" " qemu.pod > $@
+ true --section=1 --center=" " --release=" " qemu.pod > $@
qemu-img.1: qemu-img.texi
./texi2pod.pl $< qemu-img.pod
- pod2man --section=1 --center=" " --release=" " qemu-img.pod > $@
+# pod2man --section=1 --center=" " --release=" " qemu-img.pod > $@
+ true --section=1 --center=" " --release=" " qemu-img.pod > $@
FILE=qemu-$(shell cat VERSION)
diff -Nur qemu_cvs2005mar09wed/Makefile.target qemu_SPARC/Makefile.target
--- qemu_cvs2005mar09wed/Makefile.target 2005-03-01 22:37:28.000000000 +0100
+++ qemu_SPARC/Makefile.target 2005-03-10 01:12:08.000000000 +0100
@@ -160,9 +160,9 @@
endif
ifeq ($(ARCH),sparc)
-CFLAGS+=-m32 -ffixed-g1 -ffixed-g2 -ffixed-g3 -ffixed-g6
+CFLAGS+=-m32 -ffixed-g4 -ffixed-g2 -ffixed-g3
LDFLAGS+=-m32
-OP_CFLAGS=$(CFLAGS) -fno-delayed-branch -ffixed-i0
+OP_CFLAGS=$(CFLAGS) -fno-delayed-branch -O6
HELPER_CFLAGS=$(CFLAGS) -ffixed-i0 -mflat
# -static is used to avoid g1/g3 usage by the dynamic linker
LDFLAGS+=-Wl,-T,$(SRC_PATH)/sparc.ld -static
@@ -217,6 +217,9 @@
ifdef CONFIG_WIN32
LIBS+=-lwinmm -lws2_32 -liphlpapi
endif
+ifdef CONFIG_SVR4
+LIBS+=-lsocket -lnsl
+endif
# profiling code
ifdef TARGET_GPROF
@@ -314,7 +317,7 @@
AUDIODRV += ossaudio.o
endif
-pc.o: DEFINES := -DUSE_SB16 $(DEFINES)
+DEFINES := -DUSE_SB16 $(DEFINES)
ifdef CONFIG_ADLIB
SOUND_HW += fmopl.o adlib.o
@@ -368,9 +371,11 @@
endif
ifndef CONFIG_DARWIN
ifndef CONFIG_WIN32
+ifndef CONFIG_SVR4
VL_LIBS=-lutil
endif
endif
+endif
ifdef TARGET_GPROF
vl.o: CFLAGS+=-p
VL_LDFLAGS+=-p
diff -Nur qemu_cvs2005mar09wed/configure qemu_SPARC/configure
--- qemu_cvs2005mar09wed/configure 2005-03-01 23:30:41.000000000 +0100
+++ qemu_SPARC/configure 2005-03-09 22:54:36.000000000 +0100
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# qemu configure script (c) 2003 Fabrice Bellard
#
@@ -50,7 +50,7 @@
s390)
cpu="s390"
;;
- sparc)
+ sparc|sun4u)
cpu="sparc"
;;
sparc64)
@@ -107,6 +107,10 @@
bsd="yes"
darwin="yes"
;;
+SunOS)
+solaris="yes"
+svr4="yes"
+;;
*)
oss="yes"
linux="yes"
@@ -116,7 +120,7 @@
;;
esac
-if [ "$bsd" = "yes" ] ; then
+if [ "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
if [ ! "$darwin" = "yes" ] ; then
make="gmake"
fi
@@ -499,7 +503,7 @@
echo "ARCH=m68k" >> $config_mak
echo "#define HOST_M68K 1" >> $config_h
else
- echo "Unsupported CPU"
+ echo "Unsupported CPU ($cpu)"
exit 1
fi
if test "$bigendian" = "yes" ; then
@@ -512,10 +516,17 @@
elif test -f "/usr/include/byteswap.h" ; then
echo "#define HAVE_BYTESWAP_H 1" >> $config_h
fi
+if test "$solaris" = "yes" ; then
+ echo "CONFIG_SOLARIS=yes" >> $config_mak
+fi
if test "$darwin" = "yes" ; then
echo "CONFIG_DARWIN=yes" >> $config_mak
echo "#define CONFIG_DARWIN 1" >> $config_h
fi
+if test "$svr4" = "yes" ; then
+ echo "CONFIG_SVR4=yes" >> $config_mak
+ echo "#define CONFIG_SVR4 1" >> $config_h
+fi
if test "$gdbstub" = "yes" ; then
echo "CONFIG_GDBSTUB=yes" >> $config_mak
echo "#define CONFIG_GDBSTUB 1" >> $config_h
@@ -569,6 +580,13 @@
echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
echo "#define _BSD 1" >> $config_h
fi
+if [ "$solaris" = "yes" ] ; then
+ echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
+ echo "#define _SOLARIS 1" >> $config_h
+fi
+if [ "$svr4" = yes ] ; then
+ echo "#define _SVR4 1" >> $config_h
+fi
for target in $target_list; do
@@ -600,7 +618,8 @@
mkdir -p $target_dir/slirp
fi
-ln -sf $source_path/Makefile.target $target_dir/Makefile
+test -f $target_dir/Makefile && rm -f $target_dir/Makefile
+ln -s $source_path/Makefile.target $target_dir/Makefile
echo "# Automatically generated by configure - do not modify" > $config_mak
echo "/* Automatically generated by configure - do not modify */" > $config_h
@@ -697,7 +716,8 @@
mkdir -p $dir
done
for f in $FILES ; do
- ln -sf $source_path/$f $f
+ test -f $source_path/$f && rm -f $source_path/$f
+ ln -s $source_path/$f $f
done
fi
diff -Nur qemu_cvs2005mar09wed/cpu-exec.c qemu_SPARC/cpu-exec.c
--- qemu_cvs2005mar09wed/cpu-exec.c 2005-02-22 20:27:14.000000000 +0100
+++ qemu_SPARC/cpu-exec.c 2005-03-09 23:10:42.000000000 +0100
@@ -482,7 +482,8 @@
"mov %%o7,%%i0"
: /* no outputs */
: "r" (gen_func)
- : "i0", "i1", "i2", "i3", "i4", "i5");
+ : "g0", "i0", "i1", "i2", "i3", "i4", "i5", "i7",
+ "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7");
#elif defined(__arm__)
asm volatile ("mov pc, %0\n\t"
".global exec_loop\n\t"
diff -Nur qemu_cvs2005mar09wed/dyngen-exec.h qemu_SPARC/dyngen-exec.h
--- qemu_cvs2005mar09wed/dyngen-exec.h 2005-03-01 23:30:59.000000000 +0100
+++ qemu_SPARC/dyngen-exec.h 2005-03-09 23:56:47.000000000 +0100
@@ -25,6 +25,11 @@
host headers do not allow that. */
#include <stddef.h>
+#ifdef _SVR4
+#include <stdio.h>
+#include <sys/types.h>
+#else
+
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
@@ -62,7 +67,10 @@
extern int printf(const char *, ...);
#undef NULL
#define NULL 0
-#if defined(_BSD) && !defined(__APPLE__)
+
+#endif /* !_SVR4 */
+
+#if defined(_BSD) && !defined(__APPLE__) || defined(_SVR4)
#include <ieeefp.h>
#define FE_TONEAREST FP_RN
@@ -70,6 +78,7 @@
#define FE_UPWARD FP_RP
#define FE_TOWARDZERO FP_RZ
#define fesetround(x) fpsetround(x)
+#define fegetround() fpgetround()
#else
#include <fenv.h>
#endif
@@ -120,18 +129,19 @@
#define AREG3 "s2"
#endif
#ifdef __sparc__
-#define AREG0 "g6"
-#define AREG1 "g1"
-#define AREG2 "g2"
-#define AREG3 "g3"
-#define AREG4 "l0"
-#define AREG5 "l1"
-#define AREG6 "l2"
-#define AREG7 "l3"
-#define AREG8 "l4"
-#define AREG9 "l5"
-#define AREG10 "l6"
-#define AREG11 "l7"
+#define AREG0 "g4"
+#define AREG1 "g2"
+#define AREG2 "g3"
+#define AREG3 "l0"
+#if 0
+#define AREG4 "l1"
+#define AREG5 "l2"
+#define AREG6 "l3"
+#define AREG7 "l4"
+#define AREG8 "l5"
+#define AREG9 "l6"
+#define AREG10 "l7"
+#endif
#define USE_FP_CONVERT
#endif
#ifdef __s390__
diff -Nur qemu_cvs2005mar09wed/dyngen.c qemu_SPARC/dyngen.c
--- qemu_cvs2005mar09wed/dyngen.c 2005-02-21 20:53:34.000000000 +0100
+++ qemu_SPARC/dyngen.c 2005-03-09 23:28:16.000000000 +0100
@@ -1407,12 +1407,14 @@
if ((start_insn & ~0x1fff) == 0x9de3a000) {
p_start += 0x4;
start_offset += 0x4;
- if ((int)(start_insn | ~0x1fff) < -128)
+ if ((int)(start_insn | ~0x1fff) < -256)
error("Found bogus save at the start of %s", name);
if (end_insn1 != 0x81c7e008 || end_insn2 != 0x81e80000)
error("ret; restore; not found at end of %s", name);
} else {
- error("No save at the beginning of %s", name);
+ //error("No save at the beginning of %s", name);
+ if (end_insn1 != 0x81c3e008 || end_insn2 != 0x01000000)
+ error("ret; nop; not found at end of %s (no save)", name);
}
#if 0
/* Skip a preceeding nop, if present. */
diff -Nur qemu_cvs2005mar09wed/hw/ide.c qemu_SPARC/hw/ide.c
--- qemu_cvs2005mar09wed/hw/ide.c 2004-12-02 21:20:21.000000000 +0100
+++ qemu_SPARC/hw/ide.c 2005-03-10 00:10:57.000000000 +0100
@@ -500,6 +500,10 @@
static inline void ide_set_irq(IDEState *s)
{
if (!(s->cmd & IDE_CMD_DISABLE_IRQ)) {
+ BMDMAState *bm = s->bmdma;
+ if(bm)
+ bm->status |= BM_STATUS_INT;
+
#ifdef TARGET_PPC
if (s->openpic)
openpic_set_irq(s->openpic, s->irq, 1);
@@ -2163,6 +2167,7 @@
pci_conf[0x01] = 0x80;
pci_conf[0x02] = 0x00; // fake
pci_conf[0x03] = 0x01; // fake
+ pci_conf[0x09] = 0x8a; // programming interface = PCI_IDE bus master is supported
pci_conf[0x0a] = 0x01; // class_sub = PCI_IDE
pci_conf[0x0b] = 0x01; // class_base = PCI_mass_storage
pci_conf[0x0e] = 0x80; // header_type = PCI_multifunction, generic
diff -Nur qemu_cvs2005mar09wed/linux-user/main.c qemu_SPARC/linux-user/main.c
--- qemu_cvs2005mar09wed/linux-user/main.c 2005-02-19 18:25:31.000000000 +0100
+++ qemu_SPARC/linux-user/main.c 2005-03-10 00:15:49.000000000 +0100
@@ -33,6 +33,10 @@
# define environ (*_NSGetEnviron())
#endif
+#if defined(unix) && !defined(linux)
+extern char **environ;
+#endif
+
static const char *interp_prefix = CONFIG_QEMU_PREFIX;
#if defined(__i386__) && !defined(CONFIG_STATIC)
diff -Nur qemu_cvs2005mar09wed/linux-user/syscall.c qemu_SPARC/linux-user/syscall.c
--- qemu_cvs2005mar09wed/linux-user/syscall.c 2005-03-01 23:32:06.000000000 +0100
+++ qemu_SPARC/linux-user/syscall.c 2005-03-10 00:27:26.000000000 +0100
@@ -22,7 +22,9 @@
#include <stdarg.h>
#include <string.h>
#include <elf.h>
+#ifdef linux
#include <endian.h>
+#endif
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>
@@ -55,6 +57,7 @@
#define tchars host_tchars /* same as target */
#define ltchars host_ltchars /* same as target */
+#ifdef linux
#include <linux/termios.h>
#include <linux/unistd.h>
#include <linux/utsname.h>
@@ -63,6 +66,7 @@
#include <linux/soundcard.h>
#include <linux/dirent.h>
#include <linux/kd.h>
+#endif
#include "qemu.h"
diff -Nur qemu_cvs2005mar09wed/sdl.c qemu_SPARC/sdl.c
--- qemu_cvs2005mar09wed/sdl.c 2005-01-17 23:32:23.000000000 +0100
+++ qemu_SPARC/sdl.c 2005-03-10 01:22:18.000000000 +0100
@@ -29,6 +29,10 @@
#include <signal.h>
#endif
+#if defined(_SVR4)
+#define CONFIG_SDL_GENERIC_KBD
+#endif
+
static SDL_Surface *screen;
static int gui_grab; /* if true, all keyboard/mouse events are grabbed */
static int last_vm_running;
diff -Nur qemu_cvs2005mar09wed/slirp/misc.c qemu_SPARC/slirp/misc.c
--- qemu_cvs2005mar09wed/slirp/misc.c 2004-12-12 12:45:10.000000000 +0100
+++ qemu_SPARC/slirp/misc.c 2005-03-10 01:27:42.000000000 +0100
@@ -67,6 +67,10 @@
}
#endif
+#ifdef _SVR4
+#undef HAVE_INET_ATON
+#endif
+
#ifndef HAVE_INET_ATON
int
inet_aton(cp, ia)
diff -Nur qemu_cvs2005mar09wed/slirp/slirp.h qemu_SPARC/slirp/slirp.h
--- qemu_cvs2005mar09wed/slirp/slirp.h 2005-01-11 00:19:34.000000000 +0100
+++ qemu_SPARC/slirp/slirp.h 2005-03-10 01:32:01.000000000 +0100
@@ -73,6 +73,12 @@
# endif
#endif /* NEED_TYPEDEFS */
+#ifdef _SVR4
+typedef uint8_t u_int8_t;
+typedef uint16_t u_int16_t;
+typedef uint32_t u_int32_t;
+#endif
+
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
diff -Nur qemu_cvs2005mar09wed/slirp/socket.c qemu_SPARC/slirp/socket.c
--- qemu_cvs2005mar09wed/slirp/socket.c 2004-11-24 21:39:26.000000000 +0100
+++ qemu_SPARC/slirp/socket.c 2005-03-10 01:35:38.000000000 +0100
@@ -10,6 +10,10 @@
#include "ip_icmp.h"
#include "main.h"
+#ifdef _SVR4
+#include <sys/filio.h>
+#endif
+
void
so_init()
{
diff -Nur qemu_cvs2005mar09wed/target-i386/cpu.h qemu_SPARC/target-i386/cpu.h
--- qemu_cvs2005mar09wed/target-i386/cpu.h 2005-02-12 19:58:00.000000000 +0100
+++ qemu_SPARC/target-i386/cpu.h 2005-03-10 01:40:36.000000000 +0100
@@ -332,7 +332,7 @@
CC_OP_NB,
};
-#if (defined(__i386__) || defined(__x86_64__)) && !defined(_BSD)
+#if (defined(__i386__) || defined(__x86_64__)) && !defined(_BSD) && !defined(_SVR4)
#define USE_X86LDOUBLE
#endif
diff -Nur qemu_cvs2005mar09wed/target-i386/exec.h qemu_SPARC/target-i386/exec.h
--- qemu_cvs2005mar09wed/target-i386/exec.h 2005-03-01 23:33:39.000000000 +0100
+++ qemu_SPARC/target-i386/exec.h 2005-03-10 01:54:37.000000000 +0100
@@ -20,6 +20,10 @@
#include "config.h"
#include "dyngen-exec.h"
+#ifdef _SVR4
+#include <sys/types.h>
+#endif
+
/* XXX: factorize this mess */
#ifdef TARGET_X86_64
#define TARGET_LONG_BITS 64
@@ -373,7 +377,7 @@
#define rint rintl
#endif
-#if !defined(_BSD)
+#if !defined(_BSD) && !defined(_SVR4)
extern int lrint(CPU86_LDouble x);
extern int64_t llrint(CPU86_LDouble x);
#else
diff -Nur qemu_cvs2005mar09wed/target-i386/op.c qemu_SPARC/target-i386/op.c
--- qemu_cvs2005mar09wed/target-i386/op.c 2005-03-03 02:14:55.000000000 +0100
+++ qemu_SPARC/target-i386/op.c 2005-03-10 02:06:33.000000000 +0100
@@ -1858,10 +1858,11 @@
{
#if defined(__sparc__) && !defined(__sparc_v9__)
register CPU86_LDouble d asm("o0");
+ int64_t val;
#else
CPU86_LDouble d;
-#endif
int val;
+#endif
d = ST0;
val = lrint(d);
diff -Nur qemu_cvs2005mar09wed/target-i386/translate.c qemu_SPARC/target-i386/translate.c
--- qemu_cvs2005mar09wed/target-i386/translate.c 2005-03-03 02:14:55.000000000 +0100
+++ qemu_SPARC/target-i386/translate.c 2005-03-10 02:15:33.000000000 +0100
@@ -6265,7 +6265,7 @@
/* if irq were inhibited with HF_INHIBIT_IRQ_MASK, we clear
the flag and abort the translation to give the irqs a
change to be happen */
- if (dc->tf || dc->singlestep_enabled ||
+ if (1||dc->tf || dc->singlestep_enabled ||
(flags & HF_INHIBIT_IRQ_MASK) ||
(cflags & CF_SINGLE_INSN)) {
gen_jmp_im(pc_ptr - dc->cs_base);
diff -Nur qemu_cvs2005mar09wed/target-ppc/exec.h qemu_SPARC/target-ppc/exec.h
--- qemu_cvs2005mar09wed/target-ppc/exec.h 2005-01-04 00:42:39.000000000 +0100
+++ qemu_SPARC/target-ppc/exec.h 2005-03-10 02:19:07.000000000 +0100
@@ -22,6 +22,10 @@
#include "dyngen-exec.h"
+#ifdef _SVR4
+#include <sys/types.h>
+#endif
+
register struct CPUPPCState *env asm(AREG0);
register uint32_t T0 asm(AREG1);
register uint32_t T1 asm(AREG2);
diff -Nur qemu_cvs2005mar09wed/target-ppc/helper.c qemu_SPARC/target-ppc/helper.c
--- qemu_cvs2005mar09wed/target-ppc/helper.c 2005-02-16 00:06:19.000000000 +0100
+++ qemu_SPARC/target-ppc/helper.c 2005-03-10 02:22:19.000000000 +0100
@@ -17,6 +17,7 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+#include "config.h"
#include "exec.h"
//#define DEBUG_MMU
diff -Nur qemu_cvs2005mar09wed/target-ppc/op_helper.c qemu_SPARC/target-ppc/op_helper.c
--- qemu_cvs2005mar09wed/target-ppc/op_helper.c 2005-02-16 00:06:19.000000000 +0100
+++ qemu_SPARC/target-ppc/op_helper.c 2005-03-10 02:25:29.000000000 +0100
@@ -17,6 +17,7 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+#include "config.h"
#include <math.h>
#include "exec.h"
diff -Nur qemu_cvs2005mar09wed/vl.c qemu_SPARC/vl.c
--- qemu_cvs2005mar09wed/vl.c 2005-03-01 22:37:28.000000000 +0100
+++ qemu_SPARC/vl.c 2005-03-10 02:47:49.000000000 +0100
@@ -46,6 +46,9 @@
#include <libutil.h>
#endif
#else
+#if defined(_SVR4) || defined(_SOLARIS)
+#include <sys/stat.h>
+#else
#include <linux/if.h>
#include <linux/if_tun.h>
#include <pty.h>
@@ -53,6 +56,7 @@
#include <linux/rtc.h>
#endif
#endif
+#endif
#if defined(CONFIG_SLIRP)
#include "libslirp.h"
@@ -515,7 +519,30 @@
}
#else
-#error unsupported CPU
+
+ /* Derived from: "m68k updates #2" by Richard Zidlicky
+ "crude hack to get some sort of rdtsc support" */
+
+#include <sys/time.h>
+static int64_t cputicks=0;
+static struct timeval lastcptcall={0,0};
+
+// assume 550 MHz Pentium, min 80 ticks between rdtsc calls
+
+int64_t cpu_get_real_ticks(void)
+{
+ struct timeval tp;
+ gettimeofday(&tp,(void*)0);
+ if (tp.tv_sec == lastcptcall.tv_sec &&
+ tp.tv_usec == lastcptcall.tv_usec ){
+ cputicks += 1;
+ } else {
+ cputicks=0;
+ lastcptcall=tp;
+ }
+ return ((int64_t)tp.tv_sec*1000000+tp.tv_usec)*550+cputicks;
+}
+
#endif
static int64_t cpu_ticks_offset;
@@ -1596,6 +1623,12 @@
fcntl(fd, F_SETFL, O_NONBLOCK);
return fd;
}
+#elif defined(_SVR4)
+static int tun_open(char *ifname, int ifname_size)
+{
+ fprintf(stderr, "warning: tun_open not yet implemented\n");
+ return -1;
+}
#else
static int tun_open(char *ifname, int ifname_size)
{
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2005-03-12 20:47 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-01-19 2:33 [Qemu-devel] actually i have a different problem williams.martin
2005-01-19 2:56 ` Johannes Schindelin
2005-03-12 19:56 ` qemu_SPARC_HOST_cvs20050309wed.patch_/_Re: " Martin Bochnig
2005-03-12 20:25 ` [Qemu-devel] Again <<qemu_SPARC_HOST_cvs20050309wed.patch>>. This time inline for redundance Martin Bochnig
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).