* device/lib/Makefile.in: reenable floating point in model-xstack-auto
[fw/sdcc] / device / lib / _fsget2args.c
index 3a9e9fe42fcc54cca4d610fd9a470d251cd75f60..e46738f72383b56ad3397ccb3803448a2e87d1cb 100644 (file)
@@ -1,14 +1,34 @@
+/* Floating point library in optimized assembly for 8051
+ * Copyright (c) 2004, Paul Stoffregen, paul@pjrc.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+
+
 #define SDCC_FLOAT_LIB
 #include <float.h>
 
 
+#ifdef FLOAT_ASM_MCS51
 
-
-static void dummy(void) _naked
+static void dummy(void) __naked
 {
        // arg1: passed in a,b,dph,dpl
        // arg2: passed on stack
-       _asm
+       __asm
        .globl  fsgetargs
 fsgetargs:
        // extract the two inputs, placing them into:
@@ -49,83 +69,7 @@ fsgetargs:
        mov     exp_b, a
        mov     r7, b
        ret
-       _endasm;
-}
-
-
-
-
-
-#if 0
-// This old version was designed before the change to make all this
-// code fully reentrant.  What a mess the 2nd parameter turns out to
-// be.
-
-void __fsgetargs (float a, float b)
-{
-       a;      // passed in a,b,dph,dpl
-       b;      // ___fsadd_PARM_2
-
-       _asm
-       // extract the two inputs, placing them into:
-       //      sign     exponent   mantiassa
-       //      ----     --------   ---------
-       //  a:  sign_a   exp_a     r4/r3/r2
-       //  b:  sign_b   exp_b     r7/r6/r5
-       //
-       mov     r2, dpl
-       mov     r3, dph
-       mov     c, b.7
-       rlc     a
-       mov     sign_a, c
-       jz      00001$
-       setb    b.7
-00001$:
-       mov     exp_a, a
-       mov     r4, b
-#ifdef SDCC_MODEL_SMALL
-       mov     r5, (___fsadd_PARM_2 + 0)
-       mov     r6, (___fsadd_PARM_2 + 1)
-       mov     b, (___fsadd_PARM_2 + 2)
-       mov     a, (___fsadd_PARM_2 + 3)
-       mov     c, b.7
-       rlc     a
-       mov     sign_b, c
-       jz      00002$
-       setb    b.7
-00002$:
-       mov     exp_b, a
-       mov     r7, b
-#endif
-       _endasm;
+       __endasm;
 }
 
-
-#ifdef SDCC_MODEL_LARGE
-void __fsgetarglarge2 (void)
-{
-       _asm
-       movx    a, @dptr
-       mov     r5, a
-       inc     dptr
-       movx    a, @dptr
-       mov     r6, a
-       inc     dptr
-       movx    a, @dptr
-       mov     b, a
-       inc     dptr
-       movx    a, @dptr
-       mov     c, b.7
-       rlc     a
-       mov     sign_b, c
-       jz      00002$
-       setb    b.7
-00002$:
-       mov     exp_b, a
-       mov     r7, b
-       _endasm;
-}
 #endif
-
-#endif
-