Fix inline assembly to work on ARMv6-M

This commit is contained in:
Amanieu d'Antras 2016-08-13 17:29:38 +01:00
parent 7ac5155ba6
commit 97217e3ad9
1 changed files with 10 additions and 7 deletions

View File

@ -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();
}