* as/link/lkar.h: sgetl and sputl are independent of endianness
[fw/sdcc] / device / lib / _fs2slong.c
index 8be058e3db0d5100432e1c3f7187e8e6b2e1c883..961bff9cec9010822615830ece7b3182e7c50643 100644 (file)
@@ -24,9 +24,9 @@
 #ifdef FLOAT_ASM_MCS51
 
 // long __fs2slong (float x)
-static void dummy(void) _naked
+static void dummy(void) __naked
 {
-       _asm
+       __asm
        .globl  ___fs2slong
 ___fs2slong:
        lcall   fsgetarg
@@ -55,18 +55,15 @@ fs2slong_neg:
        cpl     a
        addc    a, #0
        //Check for zero
-       push acc
        jnz fs2slong_not_zero
        mov a, dpl
-       jnz fs2slong_not_zero
-       mov a, dph
-       jnz fs2slong_not_zero
-       mov a, b
-       jnz fs2slong_not_zero
-    pop acc
-    ret
+       orl a, dph
+       orl a, b
+       jnz fs2slong_clr_a
+       ret
+fs2slong_clr_a:
+       clr a
 fs2slong_not_zero:
-       pop acc
        jnb acc.7, fs2slong_maxval_neg  // x < -0x80000000
        ret
 fs2slong_pos:
@@ -92,14 +89,14 @@ fs2slong_maxval_pos:
        mov     b, a
        mov     a, #0x7F
        ret
-       _endasm;
+       __endasm;
 }
 
 #else
 
-
 /* convert float to signed long */
-signed long __fs2slong (float f) {
+signed long __fs2slong (float f)
+{
 
   if (!f)
     return 0;