#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
#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)
mov a,b1
jnb acc.7,b_not_negative
- cpl F0
-
clr a
clr c
subb a,b0
jnb acc.7,b_not_negative
- cpl F0
-
dec r0
clr a
r = _moduint((a < 0 ? -a : a),
(b < 0 ? -b : b));
- if ( (a < 0) ^ (b < 0))
+ if (a < 0)
return -r;
else
return r;