* as/link/lkar.h: sgetl and sputl are independent of endianness
[fw/sdcc] / device / lib / _divsint.c
index ce31bd171163e4995032c28f1d989cd1fb8eabb0..b35be7eb3ae66e59b902aea8b463c4f596a80c53 100644 (file)
@@ -27,7 +27,7 @@
 #include <sdcc-lib.h>
 
 #if _SDCC_MANGLES_SUPPORT_FUNS
-unsigned unsigned _divuint (unsigned a, unsigned b);
+unsigned unsigned _divuint (unsigned x, unsigned y);
 #endif
 
 /*   Assembler-functions are provided for:
@@ -50,166 +50,163 @@ unsigned unsigned _divuint (unsigned a, unsigned b);
 #if defined _DIVSINT_ASM_SMALL
 
 static void
-_divsint_dummy (void) _naked
+_divsint_dummy (void) __naked
 {
-       _asm
+       __asm
 
-               #define a0      dpl
-               #define a1      dph
+       #define xl      dpl
+       #define xh      dph
 
-               .globl __divsint
+       .globl __divsint
 
-               // _divsint_PARM_2 shares the same memory with _divuint_PARM_2
-               // and is defined in _divuint.c
+       // _divsint_PARM_2 shares the same memory with _divuint_PARM_2
+       // and is defined in _divuint.c
 #if defined(SDCC_PARMS_IN_BANK1)
-               #define b0      (b1_0)
-               #define b1      (b1_1)
+       #define yl      (b1_0)
+       #define yh      (b1_1)
 #else
-               #define b0      (__divsint_PARM_2)
-               #define b1      (__divsint_PARM_2 + 1)
+       #define yl      (__divsint_PARM_2)
+       #define yh      (__divsint_PARM_2 + 1)
 #endif
-       __divsint:
-                                       ; a1 in dph
-                                       ; b1 in (__divsint_PARM_2 + 1)
+__divsint:
+                               ; xh in dph
+                               ; yh in (__divsint_PARM_2 + 1)
 
-               clr     F0              ; Flag 0 in PSW
-                                       ; available to user for general purpose
-               mov     a,a1
-               jnb     acc.7,a_not_negative
+       clr     F0              ; Flag 0 in PSW
+                               ; available to user for general purpose
+       mov     a,xh
+       jnb     acc.7,a_not_negative
 
-               setb    F0
+       setb    F0
 
-               clr     a
-               clr     c
-               subb    a,a0
-               mov     a0,a
-               clr     a
-               subb    a,a1
-               mov     a1,a
+       clr     a
+       clr     c
+       subb    a,xl
+       mov     xl,a
+       clr     a
+       subb    a,xh
+       mov     xh,a
 
-       a_not_negative:
+a_not_negative:
 
-               mov     a,b1
-               jnb     acc.7,b_not_negative
+       mov     a,yh
+       jnb     acc.7,b_not_negative
 
-               cpl     F0
+       cpl     F0
 
-               clr     a
-               clr     c
-               subb    a,b0
-               mov     b0,a
-               clr     a
-               subb    a,b1
-               mov     b1,a
+       clr     a
+       clr     c
+       subb    a,yl
+       mov     yl,a
+       clr     a
+       subb    a,yh
+       mov     yh,a
 
-       b_not_negative:
+b_not_negative:
 
-               lcall   __divuint
+       lcall   __divuint
 
-               jnb     F0,not_negative
+       jnb     F0,not_negative
 
-               clr     a
-               clr     c
-               subb    a,a0
-               mov     a0,a
-               clr     a
-               subb    a,a1
-               mov     a1,a
+       clr     a
+       clr     c
+       subb    a,xl
+       mov     xl,a
+       clr     a
+       subb    a,xh
+       mov     xh,a
 
-       not_negative:
-               ret
+not_negative:
+       ret
 
-       _endasm ;
+       __endasm;
 }
 
 #elif defined _DIVSINT_ASM_SMALL_AUTO
 
 static void
-_divsint_dummy (void) _naked
+_divsint_dummy (void) __naked
 {
-       _asm
+       __asm
 
-               #define a0      dpl
-               #define a1      dph
+       #define xl      dpl
+       #define xh      dph
 
-               ar0 = 0                 ; BUG register set is not considered
-               ar1 = 1
+       .globl __divsint
 
-               .globl __divsint
+__divsint:
 
-       __divsint:
+       clr     F0              ; Flag 0 in PSW
+                               ; available to user for general purpose
+       mov     a,xh
+       jnb     acc.7,a_not_negative
 
-               clr     F0              ; Flag 0 in PSW
-                                       ; available to user for general purpose
-               mov     a,a1
-               jnb     acc.7,a_not_negative
+       setb    F0
 
-               setb    F0
+       clr     a
+       clr     c
+       subb    a,xl
+       mov     xl,a
+       clr     a
+       subb    a,xh
+       mov     xh,a
 
-               clr     a
-               clr     c
-               subb    a,a0
-               mov     a0,a
-               clr     a
-               subb    a,a1
-               mov     a1,a
+a_not_negative:
 
-       a_not_negative:
+       mov     a,sp
+       add     a,#-2           ; 2 bytes return address
+       mov     r0,a            ; r0 points to yh
+       mov     a,@r0           ; a = yh
 
-               mov     a,sp
-               add     a,#-2           ; 2 bytes return address
-               mov     r0,a            ; r0 points to b1
-               mov     a,@r0           ; b1
+       jnb     acc.7,b_not_negative
 
-               jnb     acc.7,b_not_negative
+       cpl     F0
 
-               cpl     F0
+       dec     r0
 
-               dec     r0
+       clr     a
+       clr     c
+       subb    a,@r0           ; yl
+       mov     @r0,a
+       clr     a
+       inc     r0
+       subb    a,@r0           ; a = yh
 
-               clr     a
-               clr     c
-               subb    a,@r0           ; b0
-               mov     @r0,a
-               clr     a
-               inc     r0
-               subb    a,@r0           ; b1
-               mov     @r0,a
+b_not_negative:
 
-       b_not_negative:
+       mov     r1,a            ; yh
+       dec     r0
+       mov     a,@r0           ; yl
+       mov     r0,a
 
-               mov     ar1,@r0         ; b1
-               dec     r0
-               mov     ar0,@r0         ; b0
+       lcall   __divint
 
-               lcall   __divint
+       jnb     F0,not_negative
 
-               jnb     F0,not_negative
+       clr     a
+       clr     c
+       subb    a,xl
+       mov     xl,a
+       clr     a
+       subb    a,xh
+       mov     xh,a
 
-               clr     a
-               clr     c
-               subb    a,a0
-               mov     a0,a
-               clr     a
-               subb    a,a1
-               mov     a1,a
+not_negative:
+       ret
 
-       not_negative:
-               ret
-
-       _endasm ;
+       __endasm;
 }
 
 #else  // _DIVSINT_ASM_
 
 int
-_divsint (int a, int b)
+_divsint (int x, int y)
 {
   register int r;
 
-  r = _divuint((a < 0 ? -a : a),
-               (b < 0 ? -b : b));
-  if ( (a < 0) ^ (b < 0))
+  r = _divuint((x < 0 ? -x : x),
+               (y < 0 ? -y : y));
+  if ( (x < 0) ^ (y < 0))
     return -r;
   else
     return r;