qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [TestDays] s390x emulation error


From: Stefan Weil
Subject: Re: [Qemu-devel] [TestDays] s390x emulation error
Date: Sat, 12 Nov 2011 11:40:22 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.23) Gecko/20110921 Thunderbird/3.1.15

Am 12.11.2011 11:08, schrieb Andreas Färber:
Am 10.11.2011 12:29, schrieb Andreas Färber:
I found that the following main-loop change works around it for s390x
and rl78 but breaks x86_64 SeaBIOS boot. Paolo, any ideas?

diff --git a/main-loop.c b/main-loop.c
index 60e9748..2ab5023 100644
--- a/main-loop.c
+++ b/main-loop.c
@@ -460,7 +460,7 @@ int main_loop_wait(int nonblocking)
}

glib_select_poll(&rfds, &wfds, &xfds, (ret < 0));
- qemu_iohandler_poll(&rfds, &wfds, &xfds, ret);
+ qemu_iohandler_poll(&rfds, &wfds, &xfds, (ret < 0));
#ifdef CONFIG_SLIRP
slirp_select_poll(&rfds, &wfds, &xfds, (ret < 0));
#endif

A deadlock between iothread and main?

Andreas

I just tried s390x on a 386 host (32 bit!) and got a different crash
(modulo operation / division with 0.0).

Are 32 bit hosts supported?

Stefan

(gdb) r
Starting program: /home/stefan/src/qemu/qemu.org/qemu/bin/debug/386/s390x-softmmu/qemu-system-s390x
[Thread debugging using libthread_db enabled]
[New Thread 0xae9d0b70 (LWP 6841)]

Program received signal SIGFPE, Arithmetic exception.
[Switching to Thread 0xae9d0b70 (LWP 6841)]
0x08199f6b in __umoddi3 ()
(gdb) i s
#0  0x08199f6b in __umoddi3 ()
#1 0x08168a48 in helper_dlg (r1=2, v2=0) at /home/stefan/src/qemu/qemu.org/qemu/target-s390x/op_helper.c:369
#2  0x00eb5a88 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) up
#1 0x08168a48 in helper_dlg (r1=2, v2=0) at /home/stefan/src/qemu/qemu.org/qemu/target-s390x/op_helper.c:369
369            env->regs[r1] = env->regs[r1+1] % divisor;
(gdb) l
364    {
365        uint64_t divisor = v2;
366
367        if (!env->regs[r1]) {
368            /* 64 -> 64/64 case */
369            env->regs[r1] = env->regs[r1+1] % divisor;
370            env->regs[r1+1] = env->regs[r1+1] / divisor;
371            return;
372        } else {
373
(gdb) p divisor
$1 = 0
(gdb) p v2
$2 = 0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]