diff options
-rw-r--r-- | firmware/target/arm/support-arm.S | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/firmware/target/arm/support-arm.S b/firmware/target/arm/support-arm.S index 38587b2adc..dd17e0f5f7 100644 --- a/firmware/target/arm/support-arm.S +++ b/firmware/target/arm/support-arm.S | |||
@@ -582,7 +582,9 @@ | |||
582 | .ifnc "", "\quotient" | 582 | .ifnc "", "\quotient" |
583 | mov \quotient, #0 | 583 | mov \quotient, #0 |
584 | .endif | 584 | .endif |
585 | .ifnc "", "\remainder" | ||
585 | ARM_SDIV32_POST "", \remainder, \sign | 586 | ARM_SDIV32_POST "", \remainder, \sign |
587 | .endif | ||
586 | .ifnc "", "\return" | 588 | .ifnc "", "\return" |
587 | \return | 589 | \return |
588 | .endif | 590 | .endif |
@@ -605,10 +607,10 @@ __div0_wrap: | |||
605 | .size __div0_wrap, . - __div0_wrap | 607 | .size __div0_wrap, . - __div0_wrap |
606 | 608 | ||
607 | #ifndef __ARM_EABI__ | 609 | #ifndef __ARM_EABI__ |
608 | #if ARM_ARCH < 5 /* Gigabeat S is crashing on boot with this enabled */ | ||
609 | .global __divsi3 | 610 | .global __divsi3 |
610 | .type __divsi3,%function | 611 | .type __divsi3,%function |
611 | #endif | 612 | .global __udivsi3 |
613 | .type __udivsi3,%function | ||
612 | .global __udivsi3 | 614 | .global __udivsi3 |
613 | .type __udivsi3,%function | 615 | .type __udivsi3,%function |
614 | #else | 616 | #else |
@@ -619,14 +621,12 @@ __div0_wrap: | |||
619 | .global __aeabi_uidiv | 621 | .global __aeabi_uidiv |
620 | .type __aeabi_uidiv,%function | 622 | .type __aeabi_uidiv,%function |
621 | .set __aeabi_uidiv,__aeabi_uidivmod | 623 | .set __aeabi_uidiv,__aeabi_uidivmod |
622 | #if ARM_ARCH < 5 /* Gigabeat S is crashing on boot with this enabled */ | ||
623 | .global __aeabi_idivmod | 624 | .global __aeabi_idivmod |
624 | .type __aeabi_idivmod,%function | 625 | .type __aeabi_idivmod,%function |
625 | .global __aeabi_idiv | 626 | .global __aeabi_idiv |
626 | .type __aeabi_idiv,%function | 627 | .type __aeabi_idiv,%function |
627 | .set __aeabi_idiv,__aeabi_idivmod | 628 | .set __aeabi_idiv,__aeabi_idivmod |
628 | #endif | 629 | #endif |
629 | #endif | ||
630 | 630 | ||
631 | 631 | ||
632 | #if ARM_ARCH < 5 | 632 | #if ARM_ARCH < 5 |
@@ -675,23 +675,21 @@ __udivsi3: | |||
675 | ARMV5_UDIV32_BODY r0, r1, r0, "", r2, r3, ip, __div0_wrap, 1 | 675 | ARMV5_UDIV32_BODY r0, r1, r0, "", r2, r3, ip, __div0_wrap, 1 |
676 | .size __udivsi3, . - __udivsi3 | 676 | .size __udivsi3, . - __udivsi3 |
677 | 677 | ||
678 | #if ARM_ARCH < 5 /* Gigabeat S is crashing on boot with this enabled */ | ||
679 | __divsi3: | 678 | __divsi3: |
679 | str lr, [sp, #-4] | ||
680 | ARMV5_SDIV32_BODY r0, r1, r0, "", r2, lr, ip, r3, __div0_wrap_s, "ldr pc, [sp, #-4]" | 680 | ARMV5_SDIV32_BODY r0, r1, r0, "", r2, lr, ip, r3, __div0_wrap_s, "ldr pc, [sp, #-4]" |
681 | .size __divsi3, . - __divsi3 | 681 | .size __divsi3, . - __divsi3 |
682 | #endif | ||
683 | 682 | ||
684 | #else | 683 | #else |
685 | __aeabi_uidivmod: | 684 | __aeabi_uidivmod: |
686 | ARMV5_UDIV32_BODY r0, r1, r0, r1, r2, r3, ip, __div0_wrap, 1 | 685 | ARMV5_UDIV32_BODY r0, r1, r0, r1, r2, r3, ip, __div0_wrap, 1 |
687 | .size __aeabi_uidivmod, . - __aeabi_uidivmo | 686 | .size __aeabi_uidivmod, . - __aeabi_uidivmo |
688 | 687 | ||
689 | #if ARM_ARCH < 5 /* Gigabeat S is crashing on boot with this enabled */ | ||
690 | __aeabi_idivmod: | 688 | __aeabi_idivmod: |
689 | str lr, [sp, #-4] | ||
691 | ARMV5_SDIV32_BODY r0, r1, r0, r1, r2, lr, ip, r3, __div0_wrap_s, "ldr pc, [sp, #-4]" | 690 | ARMV5_SDIV32_BODY r0, r1, r0, r1, r2, lr, ip, r3, __div0_wrap_s, "ldr pc, [sp, #-4]" |
692 | .size __aeabi_idivmod, . - __aeabi_idivmod | 691 | .size __aeabi_idivmod, . - __aeabi_idivmod |
693 | #endif | 692 | #endif |
694 | #endif | ||
695 | 693 | ||
696 | .L_udiv_est_table: | 694 | .L_udiv_est_table: |
697 | .byte 0xff, 0xfc, 0xf8, 0xf4, 0xf0, 0xed, 0xea, 0xe6 | 695 | .byte 0xff, 0xfc, 0xf8, 0xf4, 0xf0, 0xed, 0xea, 0xe6 |