qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] Re: QEMU regression problems - Update FPU


From: Gerhard Wiesinger
Subject: [Qemu-devel] Re: QEMU regression problems - Update FPU
Date: Fri, 18 Feb 2011 08:12:59 +0100 (CET)
User-agent: Alpine 2.02 (LFD 1266 2009-07-14)

Hello,

Good news: Seems to be that 2 of 3 issues have been fixed with QEMU: :-)
Summary of previous discussion:
http://www.mail-archive.com/address@hidden/msg29465.html

2.) Realtime clock: fixed
3.) Base Memory: fixed

Issue 1.) with FPU still present
I tracked down the problematic code and it is a rounding error from double precision to 64bit floats: Any ideas how to fix such an issue in general?

QEMU result in ST0: 0.42925860786976457 (wrong emulated)
KVM result in ST0:  0.42925860786975449 (correct)

Code:
        fninit                  ; init FPU
        fld1                    ; Pushes 1 on the stack, ST0=1
        fadd    st(0), st(0)    ; ST0=ST0+ST0=2
        fld1                    ; Pushes 1 on the stack, ST0=1, ST1=2
        fadd    st(1), st(0)    ; ST1=ST1+ST0=3, ST0=1
        fdivrp  st(1), st(0)    ; ST0=ST0/ST1=1/3
        f2xm1                   ; ST0=2^ST0-1 (ST0 must be in range -1 to 
+1)=2^(1/3)-1=0.25992104989487316476721060727823
        fldpi                   ; pushes pi on the stack; ST0=pi, 
ST1=0.25992104989487316476721060727823
        fyl2x                   ; 
ST0=ST1*log2(ST0)=0.25992104989487316476721060727823*1.651496129472318798043279295108=0.42925860786976448643152122341584
        fwait                   ; wait

*.ASM/*.COM file is also present for debugging.

Thnx.

Ciao,
Gerhard

--
http://www.wiesinger.com/


On Mon, 12 Apr 2010, Gerhard Wiesinger wrote:

Hello,

Checkit reports some problems under DOS:
1.) NPU functions are not correct: NPU Trigonometric Functions: FAILED. Seems to be a problem of the instruction set.
2.) Real-Time Clock Alarm: FAILED (This might be also the reason for the
KVM problem, see my previous post). Seems to be that real-time clock is not working correct.
3.) There is also a problem with the reported base memory under QEMM386
(HIMEM.SYS and EMM386.EXE is correct here). It is 646kB instead of 640kB.
Therefore base memory test fails. I guess that reporting memory CMOS tables/interrupt functions are not implemented correctly.

Details are listed below.

All issues are NOT present under VMWare Server 2.0 and with real hardware.

QEMU: 0.12.3 under Fedora 11, 2.6.30.10-105.2.23.fc11.x86 on AMD Phenom II Quad Core, x86_64-softmmu.

Any comments?

Thnx.

Ciao,
Gerhard

--
http://www.wiesinger.com/

Details:
1.)
   NPU Trigonometric Functions.................................FAILED ***
       Step 1, Expected    0.42926, received    0.42926

Double 'Npu_oldans1' = 0.429259 (3FDB78F91894EFA5h).
Double 'Npu_oldans2' = 0.628319 (3FE41B2F769CF0E0h).
Double 'Npu_result ' = 0.429259 (3FDB78F91894EFA6h).

2.)
Compare Current Time............................................Passed
   DOS: 16:24:39.89    Real-Time Clock: 16:24:39.00   (.89 apart)

Compare Current Date............................................Passed
   DOS: 04/11/2010     Real-Time Clock: 04/11/2010.

Real-Time Clock Alarm...........................................FAILED ***

Compare Elapsed Time............................................Passed
   DOS: 11.97 Seconds  Real-Time Clock: 12.00 Seconds   (.03 apart)

3.)     Known Memory:
       Base        646K   From      0K to    646K   (0000000h to 00A17FFh)
   Base Memory.................................................FAILED ***
       ERROR at Address   0A0000h, Bits FEDCBA9876543210
       ERROR at Address   0A0004h, Bits FEDCBA9876543210
       ERROR at Address   0A0006h, Bits FEDCBA9876543210
       ERROR at Address   0A0008h, Bits FEDCBA9876543210
       ERROR at Address   0A000Ah, Bits FEDCBA9876543210
       ERROR at Address   0A000Ch, Bits FEDCBA9876543210
       ERROR at Address   0A000Eh, Bits FEDCBA9876543210
       ERROR at Address   0A0010h, Bits FEDCBA9876543210
       ERROR at Address   0A0012h, Bits FEDCBA9876543210
       ERROR at Address   0A0014h, Bits FEDCBA9876543210
       ERROR at Address   0A0016h, Bits FEDCBA9876543210
       ERROR at Address   0A0018h, Bits FEDCBA9876543210
       ERROR at Address   0A001Ah, Bits FEDCBA9876543210
       ERROR at Address   0A001Ch, Bits FEDCBA9876543210
       ERROR at Address   0A001Eh, Bits FEDCBA9876543210
       ERROR at Address   0A0020h, Bits FEDCBA9876543210
       ADDITIONAL MEMORY ERRORS WERE NOT LISTED DUE TO LACK OF SPACE.




reply via email to

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