Changed _xdata, _near, etc and removed _generic from library files
[fw/sdcc] / device / lib / _mululong.c
index 12d58246a5685843e105f29e43b8af7a9a87611f..c7c249d2a506243f5fda1fe82b6c20327df6efda 100644 (file)
@@ -32,10 +32,12 @@ union bil {
         unsigned long l;
         struct { unsigned char b0; unsigned int i12; unsigned char b3;} bi;
 } ;
-#if defined(SDCC_MODEL_LARGE) || defined (SDCC_MODEL_FLAT24)
-#define bcast(x) ((union bil _xdata  *)&(x))
+#if defined(SDCC_MODEL_LARGE) || defined (SDCC_ds390)
+#define bcast(x) ((union bil xdata  *)&(x))
+#elif defined(__z80) || defined(__gbz80)
+#define bcast(x) ((union bil *)&(x))
 #else
-#define bcast(x) ((union bil _near *)&(x))
+#define bcast(x) ((union bil near *)&(x))
 #endif
 
 /*
@@ -56,28 +58,29 @@ union bil {
                         |3.0|         G
                           |-------> only this side 32 x 32 -> 32
 */
+
 unsigned long _mululong (unsigned long a, unsigned long b) 
 {
         union bil t;
 
-        t.i.hi = (unsigned int)bcast(a)->b.b0 * bcast(b)->b.b2;       // A
-        t.i.lo = (unsigned int)bcast(a)->b.b0 * bcast(b)->b.b0;       // A
-        t.b.b3 += (unsigned char)(bcast(a)->b.b3 *
-                                  bcast(b)->b.b0);      // G
-        t.b.b3 += (unsigned char)(bcast(a)->b.b2 *
-                                  bcast(b)->b.b1);      // F
-        t.i.hi += (unsigned int)bcast(a)->b.b2 * bcast(b)->b.b0;      // E <- b lost in .lst
+        t.i.hi = bcast(a)->b.b0 * bcast(b)->b.b2;       // A
+        t.i.lo = bcast(a)->b.b0 * bcast(b)->b.b0;       // A
+        t.b.b3 += bcast(a)->b.b3 *
+                                  bcast(b)->b.b0      // G
+        t.b.b3 += bcast(a)->b.b2 *
+                                  bcast(b)->b.b1      // F
+        t.i.hi += bcast(a)->b.b2 * bcast(b)->b.b0;      // E <- b lost in .lst
         // bcast(a)->i.hi is free !
-        t.i.hi += (unsigned int)bcast(a)->b.b1 * bcast(b)->b.b1;      // D <- b lost in .lst
+        t.i.hi += bcast(a)->b.b1 * bcast(b)->b.b1;      // D <- b lost in .lst
 
-        bcast(a)->bi.b3 = (unsigned char)(bcast(a)->b.b1 *
-                                          bcast(b)->b.b2);
-        bcast(a)->bi.i12 = (unsigned int)bcast(a)->b.b1 *
+        bcast(a)->bi.b3 = bcast(a)->b.b1 *
+                                          bcast(b)->b.b2;
+        bcast(a)->bi.i12 = bcast(a)->b.b1 *
                            bcast(b)->b.b0;              // C
 
-        bcast(b)->bi.b3 = (unsigned char)(bcast(a)->b.b0 *
-                                          bcast(b)->b.b3);
-        bcast(b)->bi.i12 = (unsigned int)bcast(a)->b.b0 *
+        bcast(b)->bi.b3 = bcast(a)->b.b0 *
+                                          bcast(b)->b.b3;
+        bcast(b)->bi.i12 = bcast(a)->b.b0 *
                            bcast(b)->b.b1;              // B
         bcast(b)->bi.b0 = 0;                            // B
         bcast(a)->bi.b0 = 0;                            // C