summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2011-01-14 18:10:41 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2011-01-17 09:39:16 +0100
commitf68dc4080440563d1dd69c8cd87c7566e60855fa (patch)
tree9e07e1767a161f231d9a3a3604f4c2792f558384
parentd62f8241d3b8dbb8bec05d3d4f7580631b3f9690 (diff)
downloadbarebox-f68dc4080440563d1dd69c8cd87c7566e60855fa.tar.gz
barebox-f68dc4080440563d1dd69c8cd87c7566e60855fa.tar.xz
arm: add __bswapsi2 support
32-bit endian conversion needed by gcc 4.5.1 Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--arch/arm/lib/Makefile1
-rw-r--r--arch/arm/lib/_bswapsi2.S14
2 files changed, 15 insertions, 0 deletions
diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
index 89cb72b30f..56818e81ab 100644
--- a/arch/arm/lib/Makefile
+++ b/arch/arm/lib/Makefile
@@ -12,6 +12,7 @@ obj-y += lib1funcs.o
obj-y += ashrdi3.o
obj-y += ashldi3.o
obj-y += lshrdi3.o
+obj-y += _bswapsi2.o
obj-$(CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS) += memcpy.o
obj-$(CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS) += memset.o
diff --git a/arch/arm/lib/_bswapsi2.S b/arch/arm/lib/_bswapsi2.S
new file mode 100644
index 0000000000..7f45fa5237
--- /dev/null
+++ b/arch/arm/lib/_bswapsi2.S
@@ -0,0 +1,14 @@
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+
+ENTRY(__bswapsi2)
+#if __LINUX_ARM_ARCH__ <= 5
+ eor r1, r0, r0, ror #16
+ bic r1, r1, #0xff0000
+ mov r0, r0, ror #8
+ eor r0, r0, r1, lsr #8
+#else
+ rev r0, r0
+#endif
+ bx lr
+ENDPROC(__bswapsi2)