* device/lib/pic/Makefile.in, device/lib/pic/Makefile.subdir,
[fw/sdcc] / device / lib / _modsint.c
index fb0147dcfb4b72af4c97ec1add2c1e97c5793c86..6aa6bdf1cc491fb247b7e00abb4106527b5d9247 100644 (file)
@@ -37,7 +37,7 @@ unsigned unsigned _moduint (unsigned a, unsigned b);
 #if !defined(SDCC_USE_XSTACK) && !defined(_SDCC_NO_ASM_LIB_FUNCS)
 #  if defined(SDCC_mcs51)
 #    if defined(SDCC_MODEL_SMALL)
-#      if defined(SDCC_STACK_AUTO)
+#      if defined(SDCC_STACK_AUTO) && !defined(SDCC_PARMS_IN_BANK1)
 #        define _MODSINT_ASM_SMALL_AUTO
 #      else
 #        define _MODSINT_ASM_SMALL
@@ -57,12 +57,15 @@ _modsint_dummy (void) _naked
                #define a1      dph
 
                .globl __modsint
-
+#if defined(SDCC_PARMS_IN_BANK1)
+               #define b0      (b1_0)
+               #define b1      (b1_1)
+#else
                // _modsint_PARM_2 shares the same memory with _moduint_PARM_2
                // and is defined in _moduint.c
                #define b0      (__modsint_PARM_2)
                #define b1      (__modsint_PARM_2 + 1)
-
+#endif
        __modsint:
                                        ; a1 in dph
                                        ; b1 in (__modsint_PARM_2 + 1)
@@ -87,8 +90,6 @@ _modsint_dummy (void) _naked
                mov     a,b1
                jnb     acc.7,b_not_negative
 
-               cpl     F0
-
                clr     a
                clr     c
                subb    a,b0
@@ -158,8 +159,6 @@ _modsint_dummy (void) _naked
 
                jnb     acc.7,b_not_negative
 
-               cpl     F0
-
                dec     r0
 
                clr     a
@@ -204,7 +203,7 @@ int _modsint (int a, int b)
        r = _moduint((a < 0 ? -a : a),
                    (b < 0 ? -b : b));
 
-       if ( (a < 0) ^ (b < 0))
+       if (a < 0)
            return -r;
        else
            return r;