]> oss.titaniummirror.com Git - msp430-libc.git/blobdiff - src/stdlib/ldiv.S
Imported msp430-libc-20100207
[msp430-libc.git] / src / stdlib / ldiv.S
index 66029b8c686744ae69d5433e5e3f1fd6b234d12e..597258076670e4e5831720c4fa0b9c646c8fd45c 100644 (file)
@@ -1,13 +1,18 @@
+#include    "../core_common.inc"
 /* ldiv() is the same as __divmodsi4() in libgcc */
 
        .section .text
        .global ldiv
 ldiv:
 ;; save clobbers first
-        push    r8
-        push    r9
-        push    r10
+#if defined(__MSP430X__)
+        XPUSHM  #2, r11
+#else
         push    r11
+        push    r10
+        push    r9
+        push    r8
+#endif
 ;; mov registers.
         mov     r13, r11       ;; denom
         mov     r12, r10
@@ -17,9 +22,15 @@ ldiv:
         call    #__divmodsi4
 ;; result is in there already...
 ;; restore regs and return.
-        pop     r11
-        pop     r10
-        pop     r9
+#if defined(__MSP430X__)
+        XPOPM   #4, r11
+        XRET
+#elif defined(__MSP430_SAVE_PROLOGUE__)
+        br      #__epilogue_restorer + 4 * 2
+#else
         pop     r8
+        pop     r9
+        pop     r10
+        pop     r11
         ret
-
+#endif