summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-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)