diff options
Diffstat (limited to 'gcc/config/h8300/lib1funcs.asm')
| -rw-r--r-- | gcc/config/h8300/lib1funcs.asm | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/gcc/config/h8300/lib1funcs.asm b/gcc/config/h8300/lib1funcs.asm index d71a11e..5b16ce3 100644 --- a/gcc/config/h8300/lib1funcs.asm +++ b/gcc/config/h8300/lib1funcs.asm @@ -448,27 +448,40 @@ ___modsi3: .global ___udivsi3 ___udivsi3: +#ifdef __H8300__ PUSHP S2P PUSHP S0P PUSHP S1P mov.b #0,S2L ; keep sign low bsr divmodsi4 bra exitdiv +#else + ;; H8/300H and H8S version of divmodsi4 does not clobber S1P or S2P. + PUSHP S0P + bsr divmodsi4 + POPP S0P + rts +#endif .global ___umodsi3 ___umodsi3: +#ifdef __H8300__ PUSHP S2P PUSHP S0P PUSHP S1P mov.b #0,S2L ; keep sign low bsr divmodsi4 -#ifdef __H8300__ mov S0,A0 mov S1,A1 + bra exitdiv #else + ;; H8/300H and H8S version of divmodsi4 does not clobber S1P or S2P. + PUSHP S0P + bsr divmodsi4 mov.l S0P,A0P + POPP S0P + rts #endif - bra exitdiv .global ___divsi3 ___divsi3: |
