Merge branch 'master' of git://git.denx.de/u-boot-socfpga
[oweals/u-boot.git] / arch / arm / lib / uldivmod.S
index 426c2f2406c6635683690437a4d9f43bccd05712..bbc44c64a5fd0af767f68ff47fecff63971e293f 100644 (file)
@@ -9,10 +9,6 @@
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 
-/* We don't use Thumb instructions for now */
-#define ARM(x...)      x
-#define THUMB(x...)
-
 /*
  * A, Q = r0 + (r1 << 32)
  * B, R = r2 + (r3 << 32)
@@ -38,6 +34,8 @@ TMP   .req    r8
 )
 
 ENTRY(__aeabi_uldivmod)
+.pushsection .text.__aeabi_uldivmod, "ax"
+
        stmfd   sp!, {r4, r5, r6, r7, THUMB(TMP,) lr}
        @ Test if B == 0
        orrs    ip, B_0, B_1            @ Z set -> B == 0
@@ -226,7 +224,9 @@ THUMB(      orrpl   A_0, A_0, TMP           )
        @ Shift A to the right by the appropriate amount.
        rsb     D_1, D_0, #32
        mov     Q_0, A_0, lsr D_0
-       orr     Q_0, A_1, lsl D_1
+ ARM(   orr     Q_0, Q_0, A_1, lsl D_1 )
+ THUMB(        lsl     A_1, D_1                )
+ THUMB(        orr     Q_0, A_1                )
        mov     Q_1, A_1, lsr D_0
        @ Move C to R
        mov     R_0, C_0
@@ -242,4 +242,5 @@ L_div_by_0:
        mov     R_0, #0
        mov     R_1, #0
        ldmfd   sp!, {r4, r5, r6, r7, THUMB(TMP,) pc}
+.popsection
 ENDPROC(__aeabi_uldivmod)