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

Gerhard Wiesinger lists at wiesinger.com
Wed Feb 23 08:09:24 CET 2011


Any comments on this problem?

Thnx.

Ciao,
Gerhard

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


On Fri, 18 Feb 2011, Gerhard Wiesinger wrote:

> 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/qemu-devel@nongnu.org/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.
>> 
>
>



More information about the SeaBIOS mailing list