arm: lib: Fix uldivmod.S build on Thumb2
authorMarek Vasut <marex@denx.de>
Thu, 26 May 2016 16:01:41 +0000 (18:01 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 3 Jun 2016 01:21:45 +0000 (21:21 -0400)
This assembler source won't build in Thumb2 mode, so fix it adding
the necessary Thumb2 conditional macros from unified.h .

This patch also defines CONFIG_THUMB2_KERNEL and CONFIG_ARM_ASM_UNIFIED
which is necessary for correct build of these files both in ARM and
Thumb mode, just like Linux does.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Albert Aribaud <albert.u.boot@aribaud.net>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
arch/arm/lib/uldivmod.S

index 426c2f2406c6635683690437a4d9f43bccd05712..2efcd73af8e17bc8121b28dac91ad5b395468518 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)
@@ -226,7 +222,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