* device/include/float.h: added __INFINITY
[fw/sdcc] / device / lib / _fsneq.c
index 68ed7fdeca764cda8e140bbcdd15bda1bcf137a4..4b675d02f8a5d2bffb0f54c94b33189865e617cc 100644 (file)
@@ -24,9 +24,9 @@
 #ifdef FLOAT_ASM_MCS51
 
 // char __fsneq (float a, float b)
-static void dummy(void) _naked
+static void dummy(void) __naked
 {
-       _asm
+       __asm
        .globl  ___fsneq
 ___fsneq:
        mov     r7, a
@@ -37,13 +37,11 @@ ___fsneq:
        lcall   fs_compare_uint32
        mov     dpl, r1
        ret
-       _endasm;
+       __endasm;
 }
 
 #else
 
-
-
 /*
 ** libgcc support for software floating point.
 ** Copyright (C) 1991 by Pipeline Associates, Inc.  All rights reserved.
@@ -62,7 +60,6 @@ ___fsneq:
 
 /* (c)2000/2001: hacked a little by johan.knol@iduna.nl for sdcc */
 
-
 union float_long
   {
     float f;
@@ -77,18 +74,11 @@ char __fsneq (float a1, float a2)
   fl1.f = a1;
   fl2.f = a2;
 
-#if 0
-  if (fl1.l<0 && fl2.l<0)
-    {
-      fl1.l ^= SIGNBIT;
-      fl2.l ^= SIGNBIT;
-    }
-#endif
-
   if (fl1.l == fl2.l)
     return (0);
+  if (((fl1.l | fl2.l) & 0x7FFFFFFF) == 0)
+    return (0);
   return (1);
 }
 
 #endif
-