Mail Archives: djgpp/1998/07/31/00:15:56
| Message-ID:  | <35C14346.6A03@icrdl.net>
 | 
| From:  | Michel Huot <huotm AT icrdl DOT net>
 | 
| MIME-Version:  | 1.0
 | 
| Newsgroups:  | comp.os.msdos.djgpp
 | 
| Subject:  | 80x87 detection in DJGPP programs
 | 
| Lines:  | 24
 | 
| Date:  | Fri, 31 Jul 1998 04:09:18 GMT
 | 
| NNTP-Posting-Host:  | 207.236.233.104
 | 
| NNTP-Posting-Date:  | Fri, 31 Jul 1998 00:09:18 EDT
 | 
| Organization:  | Bell Solutions
 | 
| To:  | djgpp AT delorie DOT com
 | 
| DJ-Gateway:  | from newsgroup comp.os.msdos.djgpp
 | 
Hi Im  making a 3d engine and i needed a sqrt routine. 
The DJGPP library sqrt() is fast when the machine have 
a coprocessor, but the emulation is terribly slow. Since 
i works with fixed point i wrote an integer sqrt routine, 
which is faster. On the other hand, it is slower than a 80x87.
So my question is: how can I detect a 80x87 in a DJGPP program?
The following code works fine on a machine that own a 80x87 
but i get an SIGOFP exception when running it on a machine 
that dont own one:
int Test8087(void)
{
 int a= 0;
  __asm__ __volatile__ ( "finit
                          fstcw (%%ebx)
                          : : "b" (&a));
  return(((a>> 8)& 0xff)== 3);
}
Anyone knows how to get it works on a machine that dont own a 80x87?
PS. Sorry for my bad english im french
- Raw text -