* device/lib/pic/libsdcc/fs2ulong.c, device/lib/pic/libsdcc/fsadd.c,
authortecodev <tecodev@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 10 Apr 2009 00:48:21 +0000 (00:48 +0000)
committertecodev <tecodev@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 10 Apr 2009 00:48:21 +0000 (00:48 +0000)
  device/lib/pic/libsdcc/fsdiv.c, device/lib/pic/libsdcc/fseq.c,
  device/lib/pic/libsdcc/fsgt.c, device/lib/pic/libsdcc/fslt.c,
  device/lib/pic/libsdcc/fsmul.c, device/lib/pic/libsdcc/fsneq.c,
  device/lib/pic/libsdcc/fssub.c, device/lib/pic/libsdcc/ulong2fs.c,
  device/lib/pic16/libsdcc/float/fs2ulong.c,
  device/lib/pic16/libsdcc/float/fsadd.c,
  device/lib/pic16/libsdcc/float/fsdiv.c,
  device/lib/pic16/libsdcc/float/fsmul.c: fixed pic14 libraries, merge
  changes from the pic16 port, minor code cleanup
* src/pic/gen.c: implemented genUminusFloat()

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@5430 4a8a32a2-be11-0410-ad9d-d568d2c75423

16 files changed:
ChangeLog
device/lib/pic/libsdcc/fs2ulong.c
device/lib/pic/libsdcc/fsadd.c
device/lib/pic/libsdcc/fsdiv.c
device/lib/pic/libsdcc/fseq.c
device/lib/pic/libsdcc/fsgt.c
device/lib/pic/libsdcc/fslt.c
device/lib/pic/libsdcc/fsmul.c
device/lib/pic/libsdcc/fsneq.c
device/lib/pic/libsdcc/fssub.c
device/lib/pic/libsdcc/ulong2fs.c
device/lib/pic16/libsdcc/float/fs2ulong.c
device/lib/pic16/libsdcc/float/fsadd.c
device/lib/pic16/libsdcc/float/fsdiv.c
device/lib/pic16/libsdcc/float/fsmul.c
src/pic/gen.c

index d35835c6adab2decf219b2d6f3ab16a1793c8956..1a46e870bec63fb97e66835db56205e3fe66a5f2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2009-04-10 Raphael Neider <rneider AT web.de>
+
+       * device/lib/pic/libsdcc/fs2ulong.c, device/lib/pic/libsdcc/fsadd.c,
+         device/lib/pic/libsdcc/fsdiv.c, device/lib/pic/libsdcc/fseq.c,
+         device/lib/pic/libsdcc/fsgt.c, device/lib/pic/libsdcc/fslt.c,
+         device/lib/pic/libsdcc/fsmul.c, device/lib/pic/libsdcc/fsneq.c,
+         device/lib/pic/libsdcc/fssub.c, device/lib/pic/libsdcc/ulong2fs.c,
+         device/lib/pic16/libsdcc/float/fs2ulong.c,
+         device/lib/pic16/libsdcc/float/fsadd.c,
+         device/lib/pic16/libsdcc/float/fsdiv.c,
+         device/lib/pic16/libsdcc/float/fsmul.c: fixed pic14 libraries, merge
+         changes from the pic16 port, minor code cleanup
+       * src/pic/gen.c: implemented genUminusFloat()
+
 2009-04-09 Philipp Klaus Krause <pkk AT spth.de>
 
        * device/lib/z80/mod.s,
index cf47d4b7c030c1695a997681ffc312cc06fb0238..fa90457df2161afb00b731e3adfaf2b2a0466cef 100644 (file)
@@ -31,9 +31,9 @@ union float_long
 /* convert float to unsigned long */
 unsigned long __fs2ulong (float a1) _FS_REENTRANT
 {
-  FS_STATIC volatile union float_long fl1;
+  volatile union float_long fl1;
   int exp;
-  long l;
+  unsigned long l;
   
   fl1.f = a1;
   
index 56fd5fa9032cd3dc0a6ada4e3fb4a02e304c2c2a..be83809a19b8de694f824b31ebfb99910db8e756 100644 (file)
@@ -29,8 +29,8 @@ union float_long
 /* add two floats */
 float __fsadd (float a1, float a2) _FS_REENTRANT
 {
-  FS_STATIC volatile union float_long fl1, fl2;
-  unsigned long mant1, mant2;
+  volatile union float_long fl1, fl2;
+  long mant1, mant2;
   int exp1, exp2;
   unsigned long sign = 0;
 
@@ -70,7 +70,7 @@ float __fsadd (float a1, float a2) _FS_REENTRANT
     }
   mant1 += mant2;
 
-  if ((long)mant1 < 0)
+  if (mant1 < 0)
     {
       mant1 = -mant1;
       sign = SIGNBIT;
@@ -85,7 +85,7 @@ float __fsadd (float a1, float a2) _FS_REENTRANT
   }
 
   /* round off */
-  while (0 != (mant1 & 0xff000000)) {
+  while (mant1 & 0xff000000) {
     if (mant1&1)
       mant1 += 2;
     mant1 >>= 1 ;
index f4a44e6b7497391601021bcf0211590b91446bfe..de368f1e9cb8fd8b3bb3fe65a3902e8a2fdf01bb 100644 (file)
@@ -31,11 +31,11 @@ union float_long
 /* divide two floats */
 float __fsdiv (float a1, float a2) _FS_REENTRANT
 {
-  FS_STATIC volatile union float_long fl1, fl2;
+  volatile union float_long fl1, fl2;
   long result;
   unsigned long mask;
   long mant1, mant2;
-  int exp ;
+  int exp;
   char sign;
 
   fl1.f = a1;
index cdb2ccbd56d042e152b55e4f90f3b14e72941625..4446fc594de9f04cb7cadc85d8e7023165d3fe62 100644 (file)
@@ -31,7 +31,7 @@ union float_long
 /* compare two floats */
 char __fseq (float a1, float a2) _FS_REENTRANT
 {
-  FS_STATIC volatile union float_long fl1, fl2;
+  volatile union float_long fl1, fl2;
 
   fl1.f = a1;
   fl2.f = a2;
index 8306d5bf438cfedae8b2054fd8f408a5b4dae0d5..04dcdde50f0a460ea14d161fd9cc8d8ca57f68c0 100644 (file)
@@ -31,7 +31,7 @@ union float_long
 /* compare two floats */
 char __fsgt (float a1, float a2) _FS_REENTRANT
 {
-  FS_STATIC volatile union float_long fl1, fl2;
+  volatile union float_long fl1, fl2;
 
   fl1.f = a1;
   fl2.f = a2;
index 1bc71016d0b76e1549dde1bc581438572a3de8f5..4cf5c087904a8955538608e3c25c153d33957969 100644 (file)
@@ -31,7 +31,7 @@ union float_long
 /* compare two floats */
 char __fslt (float a1, float a2) _FS_REENTRANT
 {
-  FS_STATIC volatile union float_long fl1, fl2;
+  volatile union float_long fl1, fl2;
 
   fl1.f = a1;
   fl2.f = a2;
index 34279826c506b6bfcb71013bf558d6408f3db849..cdca1ab9108b6391090c5e43d3302145fc0b05e2 100644 (file)
@@ -31,7 +31,7 @@ union float_long
 /* multiply two floats */
 float __fsmul (float a1, float a2) _FS_REENTRANT
 {
-  FS_STATIC volatile union float_long fl1, fl2;
+  volatile union float_long fl1, fl2;
   unsigned long result;
   int exp;
   char sign;
@@ -55,7 +55,7 @@ float __fsmul (float a1, float a2) _FS_REENTRANT
   result += ((fl1.l & (unsigned long) 0xFF) * (fl2.l >> 8)) >> 8;
   result += ((fl2.l & (unsigned long) 0xFF) * (fl1.l >> 8)) >> 8;
 
-  if (0 != (result & SIGNBIT))
+  if (result & SIGNBIT)
     {
       /* round */
       result += 0x80;
index 48eabe8d71dd6d3a195751c277b476560cc55a93..338aa2360580d7177c7be9126835ea13b657cc2f 100644 (file)
@@ -31,7 +31,7 @@ union float_long
 /* compare two floats */
 char __fsneq (float a1, float a2) _FS_REENTRANT
 {
-  FS_STATIC volatile union float_long fl1, fl2;
+  volatile union float_long fl1, fl2;
 
   fl1.f = a1;
   fl2.f = a2;
index e3c2172b5e0a410f03ca5e1192f3b18c3acf93e8..a69e33269e1134d9f60f28193880cd8d40d927a9 100644 (file)
@@ -31,7 +31,7 @@ union float_long
 /* subtract two floats */
 float __fssub (float a1, float a2) _FS_REENTRANT
 {
-  FS_STATIC volatile union float_long fl1, fl2;
+  volatile union float_long fl1, fl2;
 
   fl1.f = a1;
   fl2.f = a2;
index 1f3841c578d575c23aaa89a45aa87fc1e35f57f7..7f673c2bca84e0dbcffe5399b0a196970a393672 100644 (file)
@@ -31,7 +31,7 @@ union float_long
 float __ulong2fs (unsigned long a ) _FS_REENTRANT
 {
   int exp = 24 + EXCESS;
-  FS_STATIC volatile union float_long fl;
+  volatile union float_long fl;
 
   if (!a)
     {
index 0f3055584e4b9431776945daa86cfe4d5962e519..fa90457df2161afb00b731e3adfaf2b2a0466cef 100644 (file)
@@ -28,14 +28,12 @@ union float_long
   long l;
 };
 
-#define volatile
-
 /* convert float to unsigned long */
 unsigned long __fs2ulong (float a1) _FS_REENTRANT
 {
   volatile union float_long fl1;
-  volatile int exp;
-  volatile long l;
+  int exp;
+  unsigned long l;
   
   fl1.f = a1;
   
index aaf9f60ecdc164905b2331bc8f420ebf83caaade..be83809a19b8de694f824b31ebfb99910db8e756 100644 (file)
@@ -29,10 +29,10 @@ union float_long
 /* add two floats */
 float __fsadd (float a1, float a2) _FS_REENTRANT
 {
-  volatile long mant1, mant2;
   volatile union float_long fl1, fl2;
-  volatile int exp1, exp2;
-  volatile unsigned long sign = 0;
+  long mant1, mant2;
+  int exp1, exp2;
+  unsigned long sign = 0;
 
   fl1.f = a1;
   fl2.f = a2;
index 767f8032c037ce4f055fd7185791724f66d6335a..de368f1e9cb8fd8b3bb3fe65a3902e8a2fdf01bb 100644 (file)
@@ -32,10 +32,10 @@ union float_long
 float __fsdiv (float a1, float a2) _FS_REENTRANT
 {
   volatile union float_long fl1, fl2;
-  volatile long result;
-  volatile unsigned long mask;
-  volatile long mant1, mant2;
-  volatile int exp;
+  long result;
+  unsigned long mask;
+  long mant1, mant2;
+  int exp;
   char sign;
 
   fl1.f = a1;
index a0813cf046f9ea2240cf016d37828e1edb2bf081..cdca1ab9108b6391090c5e43d3302145fc0b05e2 100644 (file)
@@ -32,8 +32,8 @@ union float_long
 float __fsmul (float a1, float a2) _FS_REENTRANT
 {
   volatile union float_long fl1, fl2;
-  volatile unsigned long result;
-  volatile int exp;
+  unsigned long result;
+  int exp;
   char sign;
   
   fl1.f = a1;
index 04b5cf9acef4fbb4123d86d2f45c6f1706a07b73..568bd61ffbeb42ab9349f52cb1b6e645261d03e4 100644 (file)
@@ -1628,19 +1628,15 @@ static void genUminusFloat(operand *op,operand *result)
     /* for this we just need to flip the
     first it then copy the rest in place */
     size = AOP_SIZE(op) - 1;
-    l = aopGet(AOP(op),3,FALSE,FALSE);
 
-    MOVA(l);
-
-    pic14_emitcode("cpl","acc.7");
-    aopPut(AOP(result),"a",3);
+    mov2w_op(op, size);
+    emitpcode(POC_XORLW, popGetLit(0x80));
+    movwf(AOP(result), size);
 
     while(size--) {
-        aopPut(AOP(result),
-            aopGet(AOP(op),offset,FALSE,FALSE),
-            offset);
-        offset++;
-    }
+        mov2w_op(op, size);
+        movwf(AOP(result), size);
+    } // while
 }
 
 /*-----------------------------------------------------------------*/