From 97217e3ad9e429f9bfe4fa38e81e757cf478b58f Mon Sep 17 00:00:00 2001 From: Amanieu d'Antras Date: Sat, 13 Aug 2016 17:29:38 +0100 Subject: [PATCH] Fix inline assembly to work on ARMv6-M --- src/arm.rs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/arm.rs b/src/arm.rs index 0759b55..ad2b39a 100644 --- a/src/arm.rs +++ b/src/arm.rs @@ -9,7 +9,8 @@ pub unsafe fn __aeabi_uidivmod() { sub sp, sp, #4 mov r2, sp bl __udivmodsi4 - ldr r1, [sp], #4 + ldr r1, [sp] + add sp, sp, #4 pop {pc}"); intrinsics::unreachable(); } @@ -17,13 +18,15 @@ pub unsafe fn __aeabi_uidivmod() { #[naked] #[cfg_attr(not(test), no_mangle)] pub unsafe fn __aeabi_uldivmod() { - asm!("push {lr} - sub r12, sp, #12 - str r12, [sp, #-20]! + asm!("push {r4, lr} + sub sp, sp, #16 + add r4, sp, #8 + str r4, [sp] bl __udivmoddi4 - ldrd r2, r3, [sp, #8] - add sp, sp, #20 - pop {pc}"); + ldr r2, [sp, #8] + ldr r3, [sp, #12] + add sp, sp, #16 + pop {r4, pc}"); intrinsics::unreachable(); }