Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
359 serge 1
/****************************************************************************
2
*
3
*                            Open Watcom Project
4
*
5
*    Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
6
*
7
*  ========================================================================
8
*
9
*    This file contains Original Code and/or Modifications of Original
10
*    Code as defined in and that are subject to the Sybase Open Watcom
11
*    Public License version 1.0 (the 'License'). You may not use this file
12
*    except in compliance with the License. BY USING THIS FILE YOU AGREE TO
13
*    ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
14
*    provided with the Original Code and Modifications, and is also
15
*    available at www.sybase.com/developer/opensource.
16
*
17
*    The Original Code and all software distributed under the License are
18
*    distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
19
*    EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
20
*    ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
21
*    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
22
*    NON-INFRINGEMENT. Please see the License for the specific language
23
*    governing rights and limitations under the License.
24
*
25
*  ========================================================================
26
*
27
* Description:  verify Pentium processor divide bug
28
*
29
****************************************************************************/
30
 
31
 
32
#include "variety.h"
33
#include "rtinit.h"
34
#include "rtdata.h"
35
 
36
extern unsigned _WCNEAR __chipbug;
37
 
38
enum {
39
    PROB_P5_DIV = 0x0001
40
};
41
 
42
_WCRTLINK void __verify_pentium_fdiv_bug()
43
{
44
    /*
45
        Verify we have got the Pentium FDIV problem.
46
        The volatiles are to scare the optimizer away.
47
    */
48
    volatile double     num     = 4195835;
49
    volatile double     denom   = 3145727;
50
 
51
    if( _RWD_real87 >= 3 ) {
52
        if( (num - (num/denom)*denom) > 1.0e-8 ) {
53
            __chipbug |= PROB_P5_DIV;
54
        }
55
    }
56
}
57
 
58
AXI( __verify_pentium_fdiv_bug, INIT_PRIORITY_FPU + 4 );